Towing Marketplace App
Mobile app to request towing, manage queues, assign drivers, and track status in real time.
Multi-role app for customers, drivers, and managers, with routing, notifications, and a request-assignment flow designed to reduce friction and replace WhatsApp-and-phone chaos. Version 1.0.0 was delivered in 21 days.
UI Preview
A quick look at the product before we get into the technical breakdown.
The Problem
Towing operations often run on phone calls, WhatsApp, and spreadsheets: incomplete requests, repeated data entry, no status trail, SLA delays, and too much back-and-forth between customer, operator, and driver. On top of that, sensitive details such as the customer phone number need to be controlled and released only at the right moment.
The Solution
We built a Flutter app with three roles (Customer, Driver, and Manager) on top of a Firebase backend (Auth + Firestore + Functions). The customer creates a request with complete details such as location, vehicle, and constraints, operators triage and assign jobs, and drivers receive everything with route guidance and live status updates. Push notifications keep the flow synchronized, while privacy rules such as hiding phone numbers until acceptance reduce misuse and contact leakage.
Engineering Highlights
Complete data without friction
A towing request needs detail such as location, vehicle, mobility status, and restrictions, but users will not tolerate a giant form. The flow was split into short steps with progressive validation, reducing drop-off and improving request quality.
Privacy and information timing
Sensitive information such as phone numbers cannot be exposed from the start. The data model supports releasing fields based on status, for example only after acceptance or assignment, which reduces abuse and off-process direct contact.
Real-time sync with push
Status updates need to be instant for every role. Firestore handles in-app realtime updates, while FCM ensures critical events still arrive when the app is in the background.
Stack