DOMLAV — Fullstack On-Demand Laundry Service App (Next.js + Node.js + MongoDB)
A fullstack on-demand laundry and dry cleaning service application serving customers across Morocco. Built by senior fullstack developer Hamza Miloud Amar with Next.js, Node.js, Express, MongoDB, and Firebase.

Overview
DOMLAV is a fullstack on-demand laundry and dry cleaning service application I developed as a senior fullstack developer for a Moroccan startup. The platform connects customers needing laundry services with professional cleaners and delivery drivers, handling everything from order placement and scheduling to real-time tracking and payment processing.
The Problem
Traditional laundry services in Morocco are fragmented and inconvenient:
- Customers waste time dropping off and picking up laundry
- Quality inconsistency — No way to verify cleaner reputation before trying
- No transparency — Unclear pricing, timing, and handling processes
- Cash-only payments — Inconvenient and insecure
- No tracking — Customers don't know when laundry will be ready
My Role
As the lead senior fullstack developer, I was responsible for:
- Complete system architecture and database design
- Frontend development with Next.js and Pillar UI
- Backend API development with Node.js and Express
- MongoDB database modeling and optimization
- Firebase integration for authentication and real-time features
- Real-time order tracking system implementation
- Payment gateway integration
- Deployment and DevOps configuration
Technical Architecture
| Layer | Technology | Purpose |
|---|---|---|
| Frontend | Next.js 14 (App Router) | SSR for SEO, dynamic routing, image optimization |
| UI Library | Pillar UI | Custom accessible component system |
| Styling | CSS Modules + CSS Variables | Maintainable, themeable styles |
| Backend | Express.js | REST API for business logic |
| Database | MongoDB | Flexible schema for orders, users, services |
| ORM | Mongoose | Schema validation and query building |
| Auth | Firebase Authentication | Secure user auth with phone OTP |
| Real-time | Firebase Cloud Messaging | Push notifications for order updates |
| Storage | Firebase Storage | Order photos, receipts, profile images |
| Payments | Stripe | Secure online payment processing |
| Maps | Google Maps API | Pickup/delivery location and route tracking |
| Deployment | Vercel + Railway | Frontend and backend separation |
User Journeys
Customer Flow
- Register/Login — Phone number with OTP verification
- Select Service — Wash & fold, dry cleaning, ironing, specialty items
- Schedule Pickup — Date, time window, and address selection
- Prepare Laundry — Bag items, attach provided QR code label
- Driver Pickup — Real-time tracking of driver arrival
- Processing — Track cleaning status (received → washing → drying → ironing → ready)
- Delivery — Scheduled drop-off with real-time driver tracking
- Rate & Pay — Review service quality, automatic payment processing
Driver Flow
- Accept Order — View available pickups in assigned zone
- Navigate to Pickup — GPS directions to customer address
- Scan QR Code — Verify correct order, update status
- Deliver to Facility — Drop off at cleaning partner location
- Pickup Clean Laundry — Collect completed orders
- Deliver to Customer — Final drop-off, confirm delivery
Cleaner/Partner Flow
- Receive Orders — View incoming laundry batches
- Update Status — Mark items as washing, drying, ironing, ready
- Quality Check — Photo documentation before packaging
- Hand to Driver — Confirm transfer with QR scan
Key Features
Customer Features
- Service Selection — Multiple service types with transparent pricing
- Smart Scheduling — Pickup and delivery time slots with availability
- Real-Time Tracking — Live driver location and ETA on map
- Order History — Past orders with reorder functionality
- Subscription Plans — Weekly/monthly laundry packages with discounts
- Referral Program — Earn credits by inviting friends
Driver Features
- Route Optimization — Efficient multi-stop pickup and delivery routes
- Earnings Dashboard — Daily/weekly earnings with breakdown
- Rating System — Customer feedback on delivery service
- Offline Support — Queue updates when connectivity is poor
Admin Features
- Order Management — Full overview of all active and completed orders
- Driver Dispatch — Assign orders, monitor routes, handle exceptions
- Cleaner Partners — Manage partner network, quality standards, payments
- Analytics — Revenue, customer retention, peak times, popular services
- Customer Support — Issue tracking, refunds, dispute resolution
Real-Time Features
- Live Driver Tracking — Customers see driver on map approaching
- Push Notifications — Status updates, promotions, delivery alerts
- In-App Chat — Customer support and driver communication
- Live Order Status — Real-time updates as laundry progresses
Challenges & Solutions
Challenge 1: Real-Time Order Tracking
Customers expect Uber-like tracking for laundry. I implemented:
- Firebase Realtime Database for live location updates
- Geofencing to trigger status changes automatically
- Optimized location polling — Battery-efficient tracking for drivers
- Fallback SMS — Status updates via text when app is closed
Challenge 2: Handling Different Service Types
Laundry, dry cleaning, and ironing have different workflows. I designed:
- Flexible order schema in MongoDB for variable service pipelines
- Status machine — Each service type has its own state transitions
- Price calculation engine — Weight, item count, fabric type, urgency
Challenge 3: Driver-Cleaner Coordination
Multiple stakeholders need seamless handoffs. I built:
- QR code system — Each order bag has unique QR for scanning
- Photo verification — Drivers photograph bags at pickup/delivery
- Digital signatures — Customer confirmation on delivery
- Dispute resolution — Photo evidence for damage/loss claims
Challenge 4: Payment Trust
Moroccan customers are cautious about online payments. I addressed:
- Cash on delivery option — For customers preferring physical payment
- Transparent pricing — Full cost breakdown before confirmation
- Secure Stripe integration — PCI-compliant payment processing
- Receipt automation — Digital receipts sent immediately after payment
Results & Impact
- Active service across multiple Moroccan cities
- Customer satisfaction — 4.7/5 average rating
- Driver network — 50+ active delivery partners
- Cleaner partners — 15+ verified cleaning facilities
- Order volume — 500+ orders per month and growing
- Reduc src: ed no-shows — Real-time tracking decreased missed pickups by 80% alt: DOMLAV — fullstack laundry service web application built with Next.js, Node.js, Express, and MongoDB by developer Hamza Miloud Amar
Testimonial
"Hamza built us a complete logistics platform that handles the complexity of coordinating customers, drivers, and cleaners. The real-time tracking and automated workflows have transformed our operations." — DOMLAV Founder
Lessons Learned
Building DOMLAV taught me that on-demand service apps are logistics platforms first, consumer apps second. The customer-facing UI is important, but the operational dashboard, driver tools, and real-time coordination systems are what make or break the business.
Future Plans
- AI-powered scheduling — Predict demand and optimize driver routes
- Fabric recognition — Photo-based item identification and pricing
- Eco-friendly options — Green cleaning partner network
- B2B expansion — Hotel and restaurant laundry services
Need a fullstack on-demand service platform? Contact me to discuss your project.