Customer app, rider app and admin console — one platform you deploy and own. Stop renting shelf space on an aggregator and handing over your margin, your brand and your customer data. qCom gives you the whole quick-commerce stack, dark store to doorstep.
List on a marketplace and the platform owns the storefront, the pricing surface and the buyer. Your commission is their revenue line, your repeat customer is their user — and you can be delisted or out-ranked at will.
Quick commerce is not one app — it's three, plus a real-time backend. Consumer PWA, rider PWA, admin console, order state machine, GPS tracking, dark-store inventory, payments. Most teams underestimate it by several quarters.
Without live rider positions and per-order status, "where is my order?" becomes a phone call. Late deliveries surface after the SLA is already blown, and failed drops sit in a WhatsApp group instead of a queue.
qCom is a complete quick-commerce stack — a customer PWA, a rider PWA and an admin console on one Spring Boot backend. Deploy it under your own name, on your own servers, and keep the order, the margin and the customer relationship.
Browse, cart, checkout, orders, live tracking, notifications and account on the customer side; a full delivery flow for riders; a store, catalog, inventory, order and rider console for you. Nothing critical is left as "phase two".
The rider app streams a GPS fix every 10 seconds while an order is live. Status changes are pushed over WebSocket to the customer's map and to your delivery board — the same truth on every screen.
Docker Compose brings up PostgreSQL 16, Redis 7, the app and Nginx. Run it in your own cloud or your own rack. Your catalog, order history and customer list never leave your infrastructure.
A k6 load-test harness drives the real customer hot paths and fails the build when p95 latency breaches 300 ms. Prometheus metrics with SLO buckets ship with the app. Ten-minute promises need a backend that can keep them.
Built for the way Indian quick commerce actually runs — dark stores, phone-first customers, UPI, COD and a rider fleet on two wheels
Categories, listings, product detail and PostgreSQL full-text search across the catalog
Cart persisted locally in IndexedDB, so a dropped signal doesn't cost you the basket
UPI deep link plus VPA, or cash on delivery that auto-settles when the order lands
Rider position on an OpenStreetMap / Leaflet map, updated in real time on the customer's screen
Order-scoped messaging so "second gate, blue door" reaches the rider without a phone call
Per-dark-store stock with search, a low-stock filter and bulk updates from the console
In-app notifications fire off order and payment events, with an unread badge in the customer app
OTP sign-in with JWT sessions, rate limiting per phone and IP, and a pluggable SMS gateway
Every screen listed here exists as a route in the product today — not a roadmap slide
A mobile-first PWA your shoppers install from the browser
A PWA for the delivery partner — one screen, one job
The operations cockpit for your dark stores
Real-time by design, not a polling loop bolted on
Serviceability and stock, resolved per store
Indian payment reality, and what happens when a drop fails
One order, three apps, one state machine — every transition is recorded and pushed live
Their location resolves to the nearest serviceable dark store, they add in-stock items to the cart and pay by UPI or choose COD. The order is placed and coverage is re-checked server-side.
Your console moves the order through confirmed → picking → packed. The nearest available rider with spare capacity is assigned by distance from the store, and the job lands on their phone.
The rider marks picked up, and a GPS fix flows every 10 seconds. The customer watches the map and the tracker; you watch the whole fleet. Delivered closes the order — and settles COD automatically.
Marketplaces buy you reach. They do not give you a business you control.
| What's at stake | Your own qCom stack | Listing on an aggregator |
|---|---|---|
| Commission on every order | None — you own the platform | Charged per order, on their terms |
| Customer identity & order history | Yours, in your database | Held by the marketplace |
| Branding of the storefront | Entirely your app and brand | A tile inside their app |
| Pricing & promotions | Set directly, changed instantly | Bound by platform rules and ranking |
| Rider fleet | Your riders, your SLAs, live on your map | Their fleet, their visibility |
| Where the data lives | Your servers — Docker, Postgres, your cloud | Their infrastructure |
| Tier-2 / tier-3 expansion | Add a dark store and switch it on | Wherever the platform decides to operate |
A modular monolith you can actually operate — not a microservice sprawl you'd need a platform team to run. Java 21 and Spring Boot on the backend, Angular 21 across all three apps, and a load-test harness that proves the latency budget instead of assuming it.
Figures below are indicative and in INR — final pricing depends on store count, fleet size and whether we host or you do. Talk to us and we'll scope it honestly.
One store, one month, guided
One store, one rider fleet
A city network of dark stores
Chains, distributors, tier-2/3 rollouts
Quick commerce needs three apps, not one. qCom ships the customer PWA, the rider PWA and the admin console together, on a single backend — so an order placed on one screen is already live on the other two.
Real-time is built in: GPS from the rider every 10 seconds, order status pushed over WebSocket to a per-order topic, and the rider drawn on a Leaflet map the customer can actually watch.
The ten-minute promise is a latency problem before it is a logistics one. A k6 harness drives the real hot paths nightly and fails the build if p95 crosses 300 ms — the speed claim is tested, not asserted.
Three applications and one backend. A customer PWA (home, categories, search, product detail, cart, checkout, orders, live tracking, notifications, account), a rider PWA (login, active orders, delivery flow with GPS sharing) and an admin console (dashboard, products, categories, inventory, orders, stores, riders, delivery board, failed deliveries, refunds) — all served by a single Spring Boot backend of 12 modules.
The rider app watches the device GPS and posts a buffered fix every 10 seconds while an order is active. Order status changes are broadcast over WebSocket (Spring STOMP, with a SockJS fallback and a JWT-authenticated handshake) to a per-order topic, and the customer's tracking screen renders the rider on an OpenStreetMap map via Leaflet.
The platform picks the nearest available rider with spare capacity, using Haversine distance from the dark store's pickup coordinates, and refuses riders beyond the configured maximum radius. An admin can override and pick a specific rider, reassign a delivery, re-attempt a failed one, or cancel it from the failed-deliveries queue.
Yes. The MVP payment scope is COD plus static UPI QR — the checkout returns a UPI deep link and VPA, and no payment gateway is required to start. COD payments auto-complete on delivery, an optional COD fee is configurable, and cancelling a paid order moves it into an admin refund queue.
Yes. qCom ships as Docker Compose: PostgreSQL 16, Redis 7, the Spring Boot application and an Nginx reverse proxy. It runs on your infrastructure, so your catalog, order history and customer data stay with you — no aggregator sits between you and your buyer.
Speed is engineered and measured, not assumed. A k6 load-test harness drives the real customer hot paths — serviceability, product list, search, product detail, add-to-cart, place-order — and fails the run if p95 response time breaches the 300 ms budget. It runs nightly in CI, and the app exposes Prometheus metrics with SLO buckets for latency and error rate.
Yes. Stores carry coordinates, a coverage radius and operating hours, and inventory is tracked per store. A customer's location resolves to the nearest serviceable store, and the same check is re-run when the order is placed, so a shopper only ever sees stock that a nearby dark store can actually deliver.
By phone OTP — the Indian default. The auth module issues a short-lived JWT access token with a longer-lived refresh token, rate-limits OTP requests per phone and per IP, and creates the customer lazily on first successful login. The SMS gateway is pluggable, so you connect your own provider.
Bring us your dark store, your SKUs and your riders — we'll show you the customer app, the rider app and the console running as one platform. Then you decide whether to keep paying someone else for your own customers.
Run a retail chain, a dark store or a distribution network? Tell us how many stores and riders you're planning for, and we'll set up a walkthrough of the customer app, the rider app and the admin console.