Grojha — Hyperlocal Delivery, From Zero
Order anything from your nearby local stores and get it delivered within 20–30 minutes.
The moment
It was 2021. India was deep into a second-wave COVID lockdown. Going to the corner store was something you thought twice about. Big delivery apps existed but were tuned for chains and aggregators — small neighborhood shops were left out, and the people who'd shopped at those shops every week for years were stuck.
Grojha was the answer my co-founder and I built. Hyperlocal, as in "the kirana store five minutes from your apartment". Delivery, as in 20–30 minutes door-to-door. From zero, because none of it existed when we started.
What we shipped
Three Flutter apps and an admin dashboard, all running on Firebase. Two of the three apps live on the Google Play Store and have stayed there:
- Grojha — the customer-facing app. Browse nearby shops, place orders, track delivery in real-time.
- Grojha Retails — the vendor-facing app. Manage inventory, accept orders, mark them packed.
- Grojha Delivery — the runner-facing app. Pick up orders, navigate to drop, mark delivered.
- Grojha Admin — a web dashboard for the operations team — onboarding, dispute resolution, payouts.
The stack
A small, deliberately boring stack — chosen so two engineers could ship four products and not drown in DevOps.
- Flutter / Dart for all three mobile apps. One codebase, one language, three deliverables.
- Firebase Auth for sign-in (phone-OTP for customers and vendors, email for runners and admins).
- Firebase Realtime Database as the primary store. The order lifecycle is heavily real-time — order placed, accepted, packed, picked up, delivered — and Realtime DB's push semantics meant the four apps could stay in lock-step without us writing a single WebSocket.
- Firebase Cloud Storage for product photos.
- Firebase Cloud Messaging (FCM) for push notifications — order updates to the customer, new-order pings to the vendor, dispatch nudges to the runner.
image_picker+image_cropperso vendors could upload a clean product photo from their phone in seconds. Catalog quality directly drove conversion, so this was non-negotiable.pinput+ Firebase phone auth for OTP login that didn't feel like a chore.
Architectural choices that aged well
- Realtime DB over Firestore. Firestore had launched but Realtime DB's read pricing and
onValuelisteners were a better fit for our workload — most reads were live order subscriptions, not ad-hoc queries. Three years later this is still the right call for an order-flow app. - One project, multiple package IDs. Each app shipped from the same Flutter project tree with
change_app_package_nameswapping the Android package and bundle. We avoided four separate codebases without giving up store-listing isolation. - State via
provider. No Bloc, no Redux.providerwas simple, fast, and what every Flutter dev on the team already understood.
What the numbers said
Within the first three months post-launch:
- 30+ local shops onboarded.
- 100+ active customers.
- 500+ deliveries completed.
- Two apps live on the Google Play Store.
These are not unicorn numbers. They're real-world traction in one neighborhood, achieved by two engineers and a small ops team during a lockdown. That's the only kind of metric that mattered to us at the time.
What I learned
- Hyperlocal businesses run on trust, not technology. The app was a coordination layer; the actual product was a vendor relationship the operations team had built shop-by-shop. The tech got out of their way.
- Firebase's free tier is genuinely production-grade for a startup of this size. We didn't pay a hosting bill until we'd shipped real revenue.
- Three apps from one codebase is a force multiplier early. It became friction later (vendor needs were diverging from delivery's), but in month one it let two engineers do the work of six.
- Knowing when to stop matters. Lockdowns lifted, customer behavior shifted back, and scaling further would have required the kind of capital + operational depth a side-startup couldn't bring. Walking away with a working product, paying customers, and a clear story was its own kind of win.
Stack
Flutter (Dart), Firebase (Auth, Realtime DB, Cloud Storage, FCM), Android targets via the Play Console.