Proximity booking platform
GarriWash
202500 / Project overview
A location-aware car-wash booking product that routes each request to nearby, available washers and keeps the request moving when someone declines.
A customer can lose time searching for an available washer, while a declined request can leave the booking stalled. GarriWash solves this by matching each request by proximity and availability, then passing it to the next suitable washer when necessary.
01 / Challenge
The constraint that shaped the build.
A booking could not simply enter a queue. The system needed to find washers inside a ten-kilometre radius, rank them by distance and availability, then cascade the same request without creating conflicting assignments.
02 / Approach
Make the rules visible.
I treated routing as a stateful backend workflow rather than a collection of frontend conditions. Location, availability, response status and timeout behavior were modeled explicitly so every transition had one source of truth.
Radius-based washer discovery
Nearest-available request escalation
Cascading reassignment after rejection
JWT-protected customer and washer flows
03 / Solution
The finished system.
The Flutter client handles booking and response flows while a Symfony and API Platform backend owns matching, authentication and request state. PostgreSQL stores the operational data and Docker keeps the development environment repeatable.
Outcome
The finished system supports the complete request journey from location-aware discovery through acceptance, rejection and reassignment.