Work / Bharat-First / JalSeva

No. 03 · Bharat-First · Water

Three apps.
One docker compose.
163 million Indians. जलसेवा · JalSeva

Your grandmother who can't read English can order water with her voice. That is the bar. Customer app, supplier console, admin hub · one platform, one container, one tap (or three) from thirst to tanker. Voice-first in 22 Indian languages.

163MIndians without clean water
22Indian languages, voice-first
3Apps in one container
19Production API endpoints
20K+Requests per second on one VM

Act I · The Problem

A phone call. And then silence.

One hundred and sixty-three million Indians do not have access to clean drinking water. In thousands of towns across Bharat, families depend on water tankers. The system that delivers them was designed by nobody. It is a phone number on a wall, a man who may or may not pick up, and a wait that may or may not end.

No transparency. No tracking. No accountability. You call a number, you hope someone answers, and you wait. Sometimes for hours. Sometimes the tanker never arrives. There is nothing to refund and no one to ask.

We thought we could do better.

  1. i.

    The customer cannot see. No live tracking. No estimated arrival. No way to know if the order was even received.

  2. ii.

    The supplier cannot scale. Paper logs. Phone tag. No earnings visibility. Drivers paid in cash.

  3. iii.

    The town cannot govern. No commission framework. No verification. No way for a panchayat to know who is operating in their ward.

  4. iv.

    Most apps are not for Bharat. They assume English literacy, fast 4G, and a smartphone someone bought new. None of those are guaranteed.

Act II · The Promise

One platform. Three jobs. Zero compromises.

Most teams build the customer app first, the supplier app second, and the admin app three years later in a different framework. JalSeva ships all three as one Next.js app on day one. Same codebase. Same auth. Same data layer. One docker compose up.

App · 01 · /

Customer booking

Three taps from thirst to tanker. Voice ordering in 22 languages via Gemini. Live GPS tracking on the map. UPI payment with Razorpay. Rating after delivery.

  • Voice-first PWA, offline capable
  • Hindi-first interface, RTL ready
  • Phone OTP login (Firebase Auth)
  • WhatsApp bot fallback for feature phones

App · 02 · /supplier

Supplier console

The driver opens the same URL with a different role. Real-time order notifications. Route navigation via Google Maps. Earnings analytics. Accept, dispatch, deliver, get paid.

  • Real-time Firestore push
  • One-tap order acceptance
  • Daily and monthly earnings view
  • No paperwork. No middlemen.

App · 03 · /admin

Admin hub

For the panchayat, the operator, the regulator. Verify suppliers. Set commission rules. Watch every active delivery on a single live map. Pull analytics on demand.

  • Supplier KYC verification flow
  • Commission management per region
  • Live operations map
  • Aggregate analytics dashboard

Built for the operator, the supplier and the customer. Same docker compose.

docker compose up --build

Act III · The Product

Three taps. That's it.

And if that is still too much, just speak. JalSeva understands twenty-two languages. Then watch your tanker arrive in real time, on the map, on the phone you already own.

  1. i

    Pick the location

    Pin your home on the map, or tap a saved address. Or just say it out loud.

    अपना स्थान चुनें

  2. ii

    Choose the tanker size

    Three sizes. Live pricing edge-cached for thirty seconds. No surprise charges.

    टैंकर का साइज़ चुनें

  3. iii

    Pay with UPI

    Razorpay. Cards, wallets, UPI. Then watch the tanker arrive, live, on the map.

    UPI से भुगतान करें

Act IV · The Scale Path

From one city to national. Without rewriting a line.

Most platforms need a rewrite to grow. Cluster mode, L1 in-process cache, batch writer with backpressure, and bounded Firestore queries are baked in from line one. Every scaling step is an infrastructure decision, not a code change.

Stage Code change What you do Throughput
One city · MVP None Single VM. docker compose up. 5·10K req/s
One state None Same VM, scaled compose mode with Nginx + 4 workers. ~20K req/s
Multi-state None Two VMs behind a Google Cloud load balancer. 40·60K req/s
National None GKE Autopilot + Memorystore Redis. Horizontal

Act V · Proof

Built by Team Dhurandhar. Open source.

SPRINT 2026 · Team Dhurandhar

Built end to end during the SPRINT 2026 cohort under the dmj.one banner. Voice ordering, supplier flows and admin hub all shipped in one cycle.

Resilience layers · everywhere

Circuit breakers with exponential backoff and one-probe recovery. L1 in-process cache (1·120 s TTL). Batch writer with 50K buffer cap. Graceful shutdown with parallel flushes. Zero downtime drain.

Cluster mode · auto-detect cores

One worker per CPU core. Two to four times throughput on the same VM, no manual config. Nginx edge cache (one year for static, thirty seconds for pricing) and gzip on every response.

Bounded queries · always

Every Firestore scan has a .limit(). No runaway reads, ever. Haversine math runs sub-millisecond before any Maps API call is even attempted.

ONDC · Beckn ready

Open Network for Digital Commerce search and confirm endpoints implemented. JalSeva can list on India's national commerce protocol the day a supplier wants it.

WCAG 2.2 AAA · slow phone

ARIA labels, screen reader support, RTL-ready, reduced motion respected, full keyboard nav. The grandmother on a 4G feature-phone-style budget is a primary user.

The Stack

Next.js 16. Bun-fast TypeScript. Production from line one.

  • Next.js 16
  • React 19
  • TypeScript 5.9
  • Tailwind CSS 4
  • PWA (Serwist)
  • Gemini 3 Flash
  • Google Maps
  • Firebase Auth (OTP)
  • Cloud Firestore
  • Upstash Redis
  • Razorpay UPI
  • Zustand
  • Vitest
  • Biome
  • Docker · Nginx
  • ONDC · Beckn

If 163 million Indians can drink from it, your platform can run on it.

I build production platforms that ship as one container, scale without rewrites, and treat the slow phone as a primary user. If your delivery, logistics or civic stack looks like this, I would like to talk.