🛵App Ojol LokalPesan via WA
Production Ready · v1.0

Template Aplikasi Ojol Lengkap,
Siap Kustomisasi

User, Driver, Merchant, Admin dalam 1 APK. Flutter + Firebase. Production-ready dengan 17 Cloud Functions, defenses skala komersial, dan dokumentasi handover untuk klien.

4
Role
32+
Halaman
17
Cloud Functions
9
Sprint Pengembangan
9:41●●●●100%
Lokasi Kamu

Sekitarmu

3

Halo, Andi 👋

Mau makan apa hari ini?

Cari toko atau menu...

Promo Hari Ini

Diskon 20% semua menu

Semua
Makanan
Minuman
Snack

Toko Terdekat

12 toko

🏪

Warung Pak Budi

Makanan
4.8

156 ulasan

🏪

Es Teh Manis Asli

Minuman
4.9

89 ulasan

🏠Beranda
🛒Keranjang
📦Pesanan
👤Profil
App Showcase

Lihat Tampilan App

Gunakan tombol panah, dots, atau swipe untuk menjelajah semua layar.

9:41●●●●100%
Lokasi Kamu

Sekitarmu

3

Halo, Andi 👋

Mau makan apa hari ini?

Cari toko atau menu...

Promo Hari Ini

Diskon 20% semua menu

Semua
Makanan
Minuman
Snack

Toko Terdekat

12 toko

🏪

Warung Pak Budi

Makanan
4.8

156 ulasan

🏪

Es Teh Manis Asli

Minuman
4.9

89 ulasan

🏠Beranda
🛒Keranjang
📦Pesanan
👤Profil
9:41●●●●100%

Keranjang

Warung Pak Budi

Kosongkan
🍜

Mie Ayam Spesial

Rp 18.000

2
🥤

Es Teh Manis

Rp 5.000

2
🍘

Kerupuk Udang

Rp 3.000

1
SubtotalRp 49.000
Ongkos kirimRp 5.000
TotalRp 54.000
9:41●●●●100%

Checkout

Alamat Pengiriman

Rumah

Jl. Mawar No. 12, RT 03/RW 05

Pagar hijau, lantai 2

HEMAT30

Diskon Rp 7.500 diterapkan

Rincian Harga

SubtotalRp 49.000
Ongkir (1.2 km)Rp 5.000
Voucher−Rp 7.500
Total PembayaranRp 46.500

Metode Pembayaran

Saldo Wallet

Rp 125.000

QRIS / VA / E-wallet

9:41●●●●100%

Status Pesanan

Menunggu Konfirmasi

Diproses

Siap Diambil

Driver Menuju Toko

Dalam Perjalanan

Selesai

Estimasi Tiba

≈ 8 – 12 menit

🏪

Warung Pak Budi

2x Mie Ayam · 2x Es Teh · 1x Kerupuk

9:41●●●●100%
Driver dalam perjalanan
ETA ≈ 8 menit
🛵

Budi Santoso

B 1234 ABC
4.9
9:41●●●●100%
🛵

Budi Santoso

Online

Hari ini

Halo, saya driver pesanan kamu 🛵

10:42

Halo, sudah di toko ya?

10:43 ✓✓

Sudah, ambil pesanan dulu

10:43

Pagar hijau ya pak?

10:48

Iya betul, makasih!

10:48 ✓✓

Tulis pesan...
9:41●●●●100%

Beri Rating

Pesanan #ORD-8421 selesai 🎉

🛵

Budi Santoso

Driver kamu

Sangat Bagus!

🏪

Warung Pak Budi

Toko

Bagus

“Drivernya ramah, makanan sampai masih hangat 👍”
9:41●●●●100%

Alamat Tersimpan

Rumah

Utama

Jl. Mawar No. 12, RT 03/RW 05, Sukamaju

Pagar hijau, lt. 2

Kantor

Plaza Sentral Lt. 8, Jl. Sudirman No. 50

Rumah Ibu

Jl. Anggrek No. 25, Komplek Bunga

Layar 1 / 8

Home

Banner promo, kategori, daftar merchant terdekat dengan rating & jarak.

Fitur Lengkap

Empat Role, Satu APK

Pilih role di bawah untuk lihat fitur masing-masing. Semua sudah di-implement, di-test, dan di-deploy ke production environment.

Pelanggan

Pesan makanan, top-up saldo, lacak driver real-time.

Browse merchant + search

Daftar toko dengan kategori, search bar real-time, banner promo carousel.

Search produk dalam toko

Filter menu by nama atau deskripsi — penting untuk merchant dengan banyak menu.

Cart multi-item, multi-merchant safe

Tambah item dari toko lain otomatis clear cart sebelumnya (cegah salah pesan).

Checkout dengan map picker

Auto-detect lokasi GPS atau pin manual di Google Maps. Catatan ke driver.

Address book tersimpan

Simpan alamat 'Rumah', 'Kantor', dll dengan default. Pilih cepat saat checkout.

Voucher promo

Validasi quota & expiry server-side. Diskon percentage atau nominal, dengan minimum order.

Payment: Saldo, Transfer, QRIS, E-wallet

Top-up saldo dompet via Midtrans/Xendit. Atau bayar langsung gateway tanpa top-up.

Tracking real-time driver

Marker live driver di Google Maps. Sejak driver accept (ke toko) sampai sampai ke user.

ETA estimasi tiba

Banner waktu tiba berdasarkan jarak + waktu masak merchant + buffer pickup.

Chat & telpon driver

Chat real-time per order + tombol langsung dialer dengan format +62 otomatis.

Cancel & refund flow

Batalkan pre-merchant: saldo & voucher quota auto-refund dalam transaction atomic.

Rating + review

Rating 1-5 driver & merchant separate. Otomatis muncul setelah delivered.

Laporkan masalah (dispute)

Window 48 jam pasca-delivered untuk klaim refund. Admin review & putuskan nominal.

Push notification status

Update status order via FCM. Tap notif → deep-link langsung ke order screen.

Alur Order

Dari Pesan ke Sampai

Klik step di bawah untuk lihat layar yang muncul di tiap fase. Semua transisi sudah dihandle real-time via Firestore listener.

9:41●●●●100%
Lokasi Kamu

Sekitarmu

3

Halo, Andi 👋

Mau makan apa hari ini?

Cari toko atau menu...

Promo Hari Ini

Diskon 20% semua menu

Semua
Makanan
Minuman
Snack

Toko Terdekat

12 toko

🏪

Warung Pak Budi

Makanan
4.8

156 ulasan

🏪

Es Teh Manis Asli

Minuman
4.9

89 ulasan

🏠Beranda
🛒Keranjang
📦Pesanan
👤Profil
Layar saat: Pilih Toko & Menu
9 Sprint Hardening

Bukan Asal Jadi

Setiap sprint memperbaiki defenses yang berbeda — dari race condition handling sampai delivery kit. Total 53 fix kritikal.

Sprint 1 · 7 fix

Security & Data Integrity

Firestore rules field-level whitelist, atomic transactions, webhook idempotency, race condition handling.

1
Sprint 2 · 6 fix

UX Critical & Defense

Role-based router guard, FCM token cleanup, driver isActive check, confirm dialog actions.

2
Sprint 3 · 8 fix

Quick Wins & Defensive Fixes

Payment race window, ownership lock, voucher soft-delete, cursor pagination, validators.

3
Sprint 4 · 5 fix

Code Quality & User Features

Hardcoded colors → tokens, cancel order flow, image resize, auto-refresh, error mapper.

4
Sprint 5 · 7 fix

Production-readiness Blockers

Field-level rules, distance-based delivery fee, merchant payout, FCM deep link.

5
Sprint 6 · 6 fix

UX Polish (GoFood/Grab parity)

Live tracking sejak driverAccepted, telpon, ETA berbasis jarak, search produk, prep time, address book.

6
Sprint 7 · 4 fix

Skala Komersial Defenses

Geo-filter ≤5km, order timeout sweep, refund/dispute flow, verifikasi KTP/SIM/STNK driver.

7
Sprint 8 · 2 fix

Background Location & Auto-Broadcast

Foreground service Android, iOS background mode, broadcast nearest driver dengan re-broadcast 15km.

8
Sprint 9 · 8 fix

Delivery Kit untuk Jual Template

Externalized secrets, customize.sh, package-delivery.sh, check-ready.sh, dokumen klien lengkap.

9
17 Cloud Functions Production

Logika Berat Ada di Server

Bukan client-side compute. Total, komisi, voucher, refund — semua dihitung server biar tidak bisa di-tipu.

λ createTopUpInvoice()
λ xenditWebhook()
λ midtransWebhook()
λ getInvoiceStatus()
λ createOrderInvoice()
λ createOrderWithBalance()
λ onOrderStatusChange()
λ submitRating()
λ cancelUnpaidOrder()
λ cancelOrder()
λ orderTimeoutSweep()
λ createDispute()
λ resolveDispute()
λ submitDriverVerification()
λ reviewDriverVerification()
λ onOrderReadyPickup()
λ orderRebroadcastSweep()
λ createTopUpInvoice()
λ xenditWebhook()
λ midtransWebhook()
λ getInvoiceStatus()
λ createOrderInvoice()
λ createOrderWithBalance()
λ onOrderStatusChange()
λ submitRating()
λ cancelUnpaidOrder()
λ cancelOrder()
λ orderTimeoutSweep()
λ createDispute()
λ resolveDispute()
λ submitDriverVerification()
λ reviewDriverVerification()
λ onOrderReadyPickup()
λ orderRebroadcastSweep()
Production Grade

Bukan Sekadar Demo App

Defenses untuk skala komersial: race condition, fraud prevention, timeout protection, dan lebih banyak lagi.

Security Rules berlapis

Field-level whitelist Firestore — user tidak bisa edit balance/role sendiri. Driver tidak bisa unsuspend dirinya.

Race condition handling

Transaction atomic untuk accept order, voucher quota, payment confirmation, withdraw approval. Idempotent.

Webhook + fallback polling

Midtrans/Xendit webhook idempotent + amount validation. Fallback polling kalau webhook miss.

Distance-based pricing

Haversine formula merchant → user. Konfigurable base fee, per-km, min/max.

Background location

Foreground service Android dengan persistent notification. iOS background mode.

Auto-broadcast intelligent

Order ke 8 driver terdekat saat readyPickup. Re-broadcast 15 km kalau belum diambil dalam 2 menit.

Order timeout sweeper

Scheduled CF tiap 5 menit. Auto-cancel order nyangkut + refund saldo & voucher quota.

Address book + map picker

User simpan alamat tersimpan. Picker dengan reverse geocoding + drag pin.

Tech Stack

Flutter
Native performance, satu codebase Android & iOS
Firebase Auth
Phone OTP + Google Sign-In
Firestore
Real-time database, security rules ketat
Cloud Functions
TypeScript, 17 endpoints production
FCM
Push notification + deep link ke screen
Cloud Storage
Upload foto produk, KTP/SIM/STNK
Google Maps SDK
Tracking real-time, picker lokasi
Midtrans / Xendit
Payment gateway tinggal switch
Riverpod
State management modern, predictable
GoRouter
Type-safe routing dengan role guard
Delivery Kit

Workflow 80 Menit per Klien

Bukan sekadar jual source code. Anda dapat scripts otomasi & dokumen klien yang membuat tiap delivery cepat dan konsisten.

delivery-workflow.sh

# Alur per klien:

01$ git clone --depth=1 app-ojol-lokal client-NAMA-app
02$ cd client-NAMA-app && rm -rf .git
03# Setup Firebase project di console (10 menit)
04$ flutterfire configure
05$ cp .env.example .env # isi dengan kredensial klien
06$ ./scripts/customize.sh # ✅ replace nama, package, warna
07$ flutter pub global run rename setBundleId --value com.klien.app
08$ ./scripts/gen-keystore.sh client-NAMA # backup .jks!
09$ firebase deploy
10$ ./scripts/check-ready.sh # 8 quality gate
11$ ./scripts/package-delivery.sh client-NAMA
12# → delivery-output/client-NAMA-app-YYYYMMDD.zip → ship 🚀

Scripts Otomasi

4 perintah, semua otomatis

./scripts/customize.sh

Replace nama app, package ID, warna, API keys dari .env

./scripts/check-ready.sh

8 quality gate (analyze, test, secrets, package ID)

./scripts/package-delivery.sh

Output ZIP bersih (strip internal files, reset secrets)

./scripts/gen-keystore.sh

Auto-generate keystore + key.properties

Dokumen yang Termasuk

7 Dokumen Klien Siap Pakai

CLIENT_README.md

Onboarding setup untuk klien

CLIENT_HANDOVER.md

Operator guide untuk staff non-tech

PRE_DELIVERY_CHECKLIST.md

9-step quality gate sebelum ship

PRODUCTION_SIGNING.md

Generate keystore & build APK

SECRETS_SETUP.md

Daftar API key & cara dapat

PRIVACY_POLICY_TEMPLATE.md

Template Bahasa Indonesia

TOS_TEMPLATE.md

Terms of Service template

Time to delivery: ~80 menit (sebelumnya 2 hari)

FAQ

Pertanyaan Umum

Full source code Flutter (Android + iOS), Cloud Functions TypeScript (17 endpoints), Firestore rules + indexes, dokumentasi lengkap (setup guide, operator handover, privacy policy template, TOS template), dan scripts otomatis (customize, package-delivery, generate keystore).

Siap Launch App Ojol Anda Sendiri?

Hubungi kami untuk demo live, diskusi kustomisasi, dan harga. Pengerjaan rata-rata 3-5 hari kerja per klien.

Atau scroll ke atas untuk lihat fitur lebih detail.