Jerome Nazario
← BackChapter V

Hatid Amadeo

Lead Developer · In active development · 2 min read

Amadeo is a municipality of 41,901 residents across 26 barangays in Cavite — coffee country, hilly roads, and very limited digital transport options. The big ride-hailing platforms don't serve towns this size. Hatid Amadeo is the answer built from the ground up for one specific town: a production-grade, three-platform ride-hailing system connecting riders and drivers in real time.

It's the largest system I've led: two Flutter apps, a Python/Flask API, Firebase for real-time state, and a Next.js admin dashboard — currently in active development.

One town, three surfaces

A ride-hailing product is really three products that must agree with each other at all times: the passenger's app, the driver's app, and the operator's control room. All three converge on one API.

Architecture

Three fronts, one brain.

Passenger and driver apps in Flutter, the admin dashboard in Next.js — every booking, fare, and wallet movement goes through the same Flask API backed by Firebase.

passenger appdriver appadmin (Next.js)Flask APIFirebaseFlutter × 2, Next.js × 1wallet · surge · matching
Real-time

Rider and driver see the same trip state live — request, match, en route, complete.

Riverpod + Go Router

The Flutter apps share architecture: typed state management and routing that survives deep links.

The passenger's five taps

Book a ride the way you'd ask a neighbor: set where you are, say where you're going, confirm the fare, and watch the driver come to you on the map.

Passenger flow: map search, booking confirmation, live trackingPassenger flow: map search, booking confirmation, live trackingPassenger flow: map search, booking confirmation, live tracking

The driver's side

Drivers get the mirror image: incoming requests with the trip laid out before accepting, turn-by-turn trip progress, and an earnings wallet that makes every peso traceable.

Driver flow: incoming request, trip in progress, earnings walletDriver flow: incoming request, trip in progress, earnings walletDriver flow: incoming request, trip in progress, earnings wallet

Money that moves

The system runs a fully working in-app wallet with PayMongo cash-in — riders top up, fares settle in-app, and drivers watch earnings accumulate in real time. No cash-counting at the end of a trip, no disputes about change.

Surge pricing is per-barangay. Fares auto-scale on the demand-to-supply ratio of each of the 26 barangays independently — a busy poblacion evening doesn't raise prices on the quiet side of town.

The control room

The Next.js dashboard is where the operation is actually run: fare management, driver operations, and live transaction monitoring. Charts are Recharts over Supabase, and every number the town sees traces back to a record an operator can audit.

What comes next

Hatid is in active development, headed for launch in Amadeo. The bet is that a system built precisely for one town — its barangays, its fares, its drivers — beats a metro platform's leftovers. When it works here, the next town over looks a lot like the first.

Tech stack
Coming soon