
A multi-sided on-demand delivery platform connecting customers, merchants, and riders — comprising a Django REST API, a real-time Socket.io server, and three separate React Native mobile apps (customer, seller, rider) with GPS tracking, push notifications, and PDF invoice generation.
Building a delivery marketplace is not a single product problem — it is three simultaneous product problems. Customers need to discover, order, and track. Sellers need to manage inventory, accept orders, and monitor their shop. Riders need real-time order assignments, navigation, and earnings tracking. All three must stay in sync, in real time, with no lag at the moment an order is placed or a delivery status changes.
The client needed a production-ready platform with the complexity of a Swiggy or Blinkit equivalent — multi-merchant support, GPS logistics, push notifications, background job scheduling, and PDF invoicing — without the luxury of a large team or an extended timeline.
We designed a five-component architecture. At the core, a Django REST API with versioned routes per user type handles all business logic: order management, authentication, multi-domain routing, and background cron jobs for reporting and task automation. A separate Node.js Socket.io server handles all real-time state — order status broadcasts, live rider location updates, and audio message delivery — keeping the API stateless and the socket layer focused.
Three React Native apps were built in parallel: customer (browse, order, track), seller (inventory, order intake, analytics), and rider (order acceptance, navigation, earnings). Each app is optimised for its distinct user flow. Fuzzy search powers store and product discovery; haversine distance calculations handle delivery radius logic server-side; and Expo's notification SDK ensures push delivery across iOS and Android.
We built API-first: every order lifecycle endpoint, auth flow, and cron job was completed and tested before any mobile screen was started. This gave us a stable contract to build all three apps against simultaneously rather than sequentially.
The socket server was architected as a thin, stateless relay — it broadcasts events but holds no business logic — meaning it could be deployed and scaled independently. The customer app received the most UX investment: map-based store discovery, real-time order tracking, audio message support, and Lottie animations for key moments in the order flow. Docker containerisation was built into the deployment from the start, with separate domain routing for api, seller, work, and sales subdomains.
Complete ecosystem: API, sockets, and 3 mobile apps built and deployed
Separate, purpose-built apps for customers, sellers, and riders
Order status, GPS location, and audio messages synced live across all apps
Ready to build?
Book a free 30-minute strategy call. We'll scope your MVP, define the architecture, and tell you exactly what it takes to launch.
Book a free strategy callarrow_forward