Two apps, one backend, every trip tracked.
An intercity ride-sharing platform connecting passengers and drivers — booking, matching, live location and earnings, end to end.
The challenge
Intercity travellers were coordinating shared rides through phone calls and group chats — no visibility on seats, no tracking, no records. The goal: a two-sided platform where passengers book seats in minutes and drivers fill their cars reliably, with the operator seeing everything in between.
What we built
- Passenger app — search rides between cities, book seats, track the driver live, and review trip history.
- Driver app — onboard with documents, publish rides, accept bookings, run the full trip lifecycle (start → pick up → drop off → complete) and watch earnings grow.
- One backend — a Laravel API handling matching, seats, trip states, live location relay and payouts logic, covered by an extensive automated test suite.
- Free-maps routing — accurate distances and routes without expensive per-request map fees.
How we did it
The trip lifecycle is a strict state machine on the server — no app can skip a step, which keeps money and seats honest. Live location streams through lightweight polling tuned for battery life. Both apps share one design language: bold, glanceable, thumb-friendly, because drivers use it at arm's length in a moving car.
"We always knew what was being built, why, and when it would land." — Platform founder
The result
A platform where a passenger finds a seat in under a minute and a driver fills a car without a single phone call — with signed release builds delivered for both apps and the backend fully documented for the operations team.