← Back to work
/07·Jan 2021 – Jul 2021·Mobile / Startup·4 min read

Grojha — Hyperlocal Delivery, From Zero

A Flutter + Firebase delivery platform that connected 30+ neighborhood shops with their customers during COVID.

  • Flutter
  • Dart
  • Firebase Auth
  • Realtime DB
  • Cloud Storage
  • FCM
  • Android

Grojha was a hyperlocal delivery platform I co-founded and engineered during the COVID-19 lockdown of 2021. The premise was simple — when going outside was off the table, the corner-store economy still needed a way to reach its customers. So we built one: a Flutter + Firebase stack that let neighborhood shops list their inventory in minutes and receive real-time orders from people on their street.

Three apps and a dashboard, all glued together by Firebase: a customer app for ordering, a vendor app for accepting orders and managing inventory, a delivery app for the runners, and a web admin panel for the operators. Two of them shipped publicly to the Google Play Store and stayed there.

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_cropper so 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 onValue listeners 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_name swapping the Android package and bundle. We avoided four separate codebases without giving up store-listing isolation.
  • State via provider. No Bloc, no Redux. provider was 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.

Next case study

Bifrost — Private Peer-to-Peer File Sharing

Continue