We built a laundry-on-demand platform a complete on-demand laundry ecosystem with a customer app, a partner operations app, and an admin control panel, all running on a single shared backend with real-time order sync.
A laundry-on-demand platform needed an entire operational ecosystem not just a customer app. We built three distinct products on one backend, all staying in sync in real time.
The customer app (Flutter, iOS + Android) handles order placement, pickup slot selection with address pinning on map, garment type and quantity entry, real-time order tracking, loyalty point accumulation, in-app notifications, and Razorpay payments (UPI, cards, wallets). The laundry partner app (Flutter, Android) manages incoming order notifications, accept/reject flow with timeout fallback, garment checklist at pickup, processing status updates at each stage (in wash, drying, folded, packed, out for delivery), and a daily earnings dashboard. The admin operations panel (Angular + TypeScript) gives a laundry-on-demand platform's ops team a live order map, partner performance tracking, pricing configuration per zone and garment type, promo campaign management, financial reconciliation, and detailed reporting.
The backend is Java Spring Boot with PostgreSQL for all transactional data and Firebase Realtime Database for live order status events. We used WebSockets via Firebase so state changes propagate to all three apps in under 200ms the customer sees "Pickup agent assigned" the instant a partner accepts. JWT authentication is scoped per user type (customer, partner, admin) with separate permission sets.
Four hard engineering problems we solved: (1) Atomic order assignment preventing two partners from accepting the same order simultaneously using a distributed lock pattern. (2) Razorpay payment reconciliation with automatic partner payouts every 7 days, accounting for refunds, loyalty redemptions, and platform commissions. (3) Mid-flow cancellation handling partial refunds triggered correctly whether the order is at "placed", "partner assigned", or "picked up" stage, with the assigned partner's slot released automatically. (4) An offline-first mode for the partner app order details sync to local SQLite when the partner enters a low-connectivity zone, and status updates queue for upload when connectivity returns.
Each app serves a different user type with completely different workflows built on a shared backend with a single source of truth for order state.
Order placement with map-based address pin, garment type and quantity selection, pickup slot booking, real-time tracking with status notifications, loyalty points, Razorpay checkout, and garment photo upload for care recommendations.
Incoming order queue with accept/reject and timeout fallback, garment pickup checklist, per-stage processing status updates (in wash, drying, folded, packed), delivery confirmation with photo proof, and daily earnings breakdown.
Live order map showing all active orders by status, partner availability overlay, zone and pricing configuration, promo campaign management, refund processing, financial reconciliation, and business analytics dashboards.
Single REST API serving all three apps. Implements the order lifecycle as a state machine with explicit transitions, partner assignment logic with distributed locking, per-garment pricing engine, and a full event audit trail for every order.
Full Razorpay integration with UPI, cards, net banking, and wallets. Loyalty point redemption reduces charge amount before payment capture. Partial refunds triggered automatically on cancellation. Automated partner payout batch runs every 7 days via Razorpay payout API.
Order status changes are written to Firebase Realtime Database. All connected apps customer, partner, and admin receive the update via WebSocket push within 200ms. No polling. Eliminates the "stale status" problem that plagues multi-party platforms built on REST alone.
Three ML-powered features that directly improve operational efficiency and reduce costs each with a measurable outcome.
When an order is placed, an ML model ranks available partners by proximity, current order queue size, and historical average completion time for that zone. The top-ranked partner gets the notification first; if they don't accept within 45 seconds, the next-ranked partner is notified. This replaced a manual dispatch process that required an operator to be online at all times.
Result: pickup assignment time reduced by 40%
A time-series forecasting model predicts order volume per zone in 24-hour windows, using 90 days of historical data plus day-of-week and seasonal patterns. Laundry partners receive a push notification at 8 PM showing the next day's projected demand for their zone. Partners can then pre-arrange capacity and additional staff instead of being caught short during evening peaks.
Result: on-time pickup rate improved from 71% to 89%
The customer photographs a garment's care label before scheduling pickup. A computer vision model reads the washing symbols and fabric composition text, then returns specific wash cycle instructions and flags items that need special handling (dry-clean only, hand wash, no tumble dry). The laundry partner sees these flags in their app before processing the item, preventing damage to delicate fabrics.
Result: measurable reduction in garment damage complaints
Beyond this project, we build the full range of e-commerce and on-demand platform types.
Multi-vendor marketplaces with seller onboarding, product catalogue, inventory sync, commission management, and vendor payouts. We handle the backend complexity of multi-seller order routing and settlement.
Service-on-demand platforms (home services, repairs, cleaning, delivery) with real-time provider assignment, live tracking, and two-sided rating systems. We've handled the edge cases: cancellations, refunds, and poor-connectivity field apps.
Razorpay, Stripe, PayU, and PhonePe integrations with loyalty/wallet systems, subscription billing, split payments to multiple vendors, and automated payout reconciliation. We handle the reconciliation side, not just the payment capture.
Last-mile delivery management with route optimisation, delivery agent tracking, proof of delivery (photo + signature), and customer notification flow. Integrates with Dunzo, Shiprocket, or custom fleet management.
Operations dashboards for e-commerce businesses: order funnel, revenue by channel, return rate analysis, and customer cohort reporting. Built in Angular or React with drill-down capability and exportable reports.
Recommendation engines, demand forecasting models, dynamic pricing, and AI-powered customer support chatbots all productionised and integrated into your existing platform, not just proof-of-concept scripts.
We map every user type, every workflow, and every state transition before writing a line of code. For multi-sided platforms, this step prevents architectural mistakes that are expensive to undo.
The data model and API contract are designed before any frontend work begins. All apps mobile, web, admin are built to the same contract, so there are no integration surprises late in the project.
Customer app, partner app, and admin panel are built in parallel by separate squads working against the agreed API. Weekly integration checkpoints catch conflicts early.
Multi-sided platforms fail at peak load in ways you don't see in development. We run load tests simulating 5x expected peak usage, then tune auto-scaling policies and database query performance before going live.
We've shipped multi-sided platforms with real-time logistics, Razorpay payment reconciliation, and AI dispatch. If you're starting from scratch or scaling an existing product, let's talk specifics.