Local Ride-Hailing App — 4-Role Food Delivery
A GoFood/GrabFood-style food delivery platform combining four roles — Customer, Driver, Merchant, and Admin — in one Flutter codebase (Android & iOS). A Firebase backend with 17 production Cloud Functions handles the order flow end to end: browsing merchants, checkout with a map picker, auto-broadcast to the nearest drivers, real-time tracking, and automatic payouts to merchants & drivers. Commercial-grade defenses included — atomic transactions, layered security rules, and dispute resolution.
Visit Website- Platform
- Android · iOS
- Year
- 2026
- Industry
- Food Delivery / On-Demand
- Role
- Full-cycle: architecture, 4-role Flutter app, Firebase & Cloud Functions backend
App screenshots
Click an image to zoom — swipe left/right to browse.
Key features
4 roles in 1 APK
Customer, Driver, Merchant, and Admin share one app with type-safe routing + role guards (GoRouter).
Checkout with map picker
Auto-detected GPS location or a manual pin on Google Maps, a saved address book, and notes for the driver.
Real-time driver tracking
A live driver marker on the map from acceptance (to the store) until arrival at the customer, complete with an ETA.
Auto-broadcast to nearest drivers
Ready orders are automatically broadcast to the 8 nearest drivers via FCM; re-broadcast within a 15 km radius if unclaimed after 2 minutes.
Driver background location
An Android foreground service + iOS background mode keep the driver's position tracked even with the app in the background.
Flexible payments
Wallet balance, transfers, QRIS, and e-wallets via Midtrans/Xendit — switch gateways with a .env change.
Automatic payouts & commissions
(Subtotal − commission) lands in the merchant's balance and the delivery fee in the driver's on delivery — idempotent, no double-credit.
Full admin panel
Approve merchants & drivers, set commissions/delivery fees, manage vouchers & banners, approve withdrawals, resolve disputes, and financial reports.
Technical highlights
The advanced parts behind the scenes that make this system run smoothly.
- Race-protected accept: a Firestore transaction prevents two drivers from grabbing the same order, with real-time suspend status validation.
- Distance-based delivery fees: Haversine distance from merchant to customer with admin-configurable base fee, per-km rate, and min/max.
- Idempotent Midtrans/Xendit webhooks with amount validation, plus polling fallback for missed webhooks.
- Order timeout sweeper: a scheduled Cloud Function every 5 minutes auto-cancels stuck orders and refunds balances & voucher quotas.
- Field-level security rules: users can't change their own balance/role, drivers can't unsuspend themselves.
- 17 production Cloud Functions (broadcast, payment, payout, dispute, sweeper) with handover documentation for non-technical operators.
Tech stack
Want an app like this for your business?
We've built systems like Local Ride-Hailing App from scratch all the way to production. Tell us what you need — the initial consultation is free, no strings attached.

