qCom · Quick Commerce Platform · Built in Bengaluru

Run Your Own 10-Minute Delivery Business

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.

0 Apps (customer · rider · admin)
0 Backend Modules
0 REST API Endpoints
0 Automated Backend Tests
Dark Store Customer LIVE · ON THE WAY Arriving in 9:41 Packed Picked up Arriving

The Aggregator Takes the Margin — and the Customer

You're Renting Someone Else's Shelf

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.

Building It Yourself Takes a Year

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.

No Live Visibility on the Fleet

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.

Three Apps. One Platform. Your Brand.

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.

Complete, Not a Component

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".

Live Tracking, Not Guesswork

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.

Self-Hosted, Data Stays Yours

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.

Speed Is Engineered

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.

10s Rider GPS fix posted while an order is active
300ms p95 API budget, enforced by the nightly load test
66 Flyway migrations — a real, versioned schema
UPI UPI QR + Cash on Delivery, no gateway needed to start

Everything a 10-Minute Operation Needs

Built for the way Indian quick commerce actually runs — dark stores, phone-first customers, UPI, COD and a rider fleet on two wheels

Catalog & Full-Text Search

Categories, listings, product detail and PostgreSQL full-text search across the catalog

Cart That Survives a Refresh

Cart persisted locally in IndexedDB, so a dropped signal doesn't cost you the basket

UPI QR & COD Checkout

UPI deep link plus VPA, or cash on delivery that auto-settles when the order lands

Live Delivery Map

Rider position on an OpenStreetMap / Leaflet map, updated in real time on the customer's screen

Customer ↔ Rider Chat

Order-scoped messaging so "second gate, blue door" reaches the rider without a phone call

Store-Level Inventory

Per-dark-store stock with search, a low-stock filter and bulk updates from the console

Event-Driven Notifications

In-app notifications fire off order and payment events, with an unread badge in the customer app

Phone OTP Login

OTP sign-in with JWT sessions, rate limiting per phone and IP, and a pluggable SMS gateway

Three Apps and the Engine Behind Them

Every screen listed here exists as a route in the product today — not a roadmap slide

Customer App

A mobile-first PWA your shoppers install from the browser

  • Home, categories, product listing & detail
  • Search, cart and guarded checkout
  • Order list, order detail & live tracking
  • Notifications centre and account
  • Offline-safe cart stored in IndexedDB

Rider App

A PWA for the delivery partner — one screen, one job

  • OTP login and availability toggle
  • Active order card with pickup & drop details
  • Mark picked → out for delivery → delivered
  • Automatic GPS sharing every 10 seconds
  • In-order chat with the customer

Admin Console

The operations cockpit for your dark stores

  • Dashboard: orders, revenue, active riders, pending, avg delivery time
  • Products, categories & store-level inventory
  • Order queue with status transitions
  • Stores, riders and a live delivery board
  • Failed-delivery and refund queues

Live Order Tracking

Real-time by design, not a polling loop bolted on

  • WebSocket (Spring STOMP) with SockJS fallback
  • JWT-authenticated handshake, per-order topics
  • Rider position drawn on a Leaflet / OSM map
  • Order state machine: placed → confirmed → picking → packed → out for delivery → delivered
  • Subscription interceptor — customers only see their own order

Dark Stores & Inventory

Serviceability and stock, resolved per store

  • Stores with coordinates, coverage radius & operating hours
  • Nearest-store lookup decides if a pincode is serviceable
  • Coverage re-checked at order placement
  • Stock tracked per store, with a low-stock filter
  • Bulk inventory update endpoint for restocking runs

Payments & Delivery Ops

Indian payment reality, and what happens when a drop fails

  • Static UPI QR with deep link + VPA, and COD
  • Optional configurable COD fee
  • COD auto-completes on delivery; cancelled prepaid orders enter a refund queue
  • Nearest available rider assigned by Haversine distance, within a max radius
  • Manual override, reassignment, re-attempt and failed-delivery queue

How an Order Gets Delivered

One order, three apps, one state machine — every transition is recorded and pushed live

1

Customer Orders

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.

2

Store Packs, Rider Picks Up

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.

3

Live to the Doorstep

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.

Your Own Stack vs. Listing on an Aggregator

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

Engineered for the Ten-Minute Promise

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.

Backend

  • Java 21 · Spring Boot · Gradle multi-module
  • 12 modules, one deployable — schema per module
  • PostgreSQL 16 + Redis 7, Flyway migrations
  • WebSocket (STOMP) for real-time order status

Frontend

  • Angular 21 · Material (M3) · Tailwind
  • Standalone, lazy-loaded routes; Signals for state
  • PWA with service worker on all three apps
  • Shared design-token system across customer, rider & admin

Proof & Operations

  • k6 hot-path load test, p95 < 300 ms gate
  • Nightly load run in CI — a regression turns it red
  • Prometheus / Grafana with latency SLO buckets
  • Docker Compose deploy behind Nginx
21 Java 21 & Angular 21
k6 p95 < 300 ms gate
WS STOMP real-time
PG Postgres 16 + Redis 7

Indicative Pricing, Built Around Your Rollout

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.

Pilot

Free

One store, one month, guided

  • All three apps, your branding
  • Catalog seeded with your SKUs
  • Live tracking & rider assignment
  • We run the setup with you
Start a Pilot

Multi-Store

Contact Us

A city network of dark stores

  • Everything in Single Dark Store
  • Nearest-store routing per customer
  • Per-store inventory & coverage radius
  • Fleet-wide delivery board
Talk to Sales

Enterprise

Contact Us

Chains, distributors, tier-2/3 rollouts

  • Everything in Multi-Store
  • Self-hosted on your own infrastructure
  • ERP / POS integration via REST APIs
  • Monitoring, SLA & dedicated support
Talk to Sales

What Makes This Different

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.

Complete Stack Customer · Rider · Admin

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.

Live by Default STOMP WebSocket · GPS · Leaflet map

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.

Speed You Can Verify k6 load tests · Prometheus SLOs

Frequently Asked Questions

What exactly do I get with qCom?

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.

How does live order tracking work?

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.

How are riders assigned to orders?

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.

Does it support UPI and cash on delivery?

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.

Can we run it on our own servers?

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.

Is it fast enough for a 10-minute promise?

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.

Can we run multiple dark stores?

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.

How do customers log in?

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.

Launch Quick Commerce Under Your Own Brand

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.

Get in Touch

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.

Location

Bengaluru, India