03 — In development
WashHup
Real-time bookings, live job status and instant notifications for car care.
A full-stack service platform connecting car owners with car-care providers. Bookings update live, job status is tracked as it changes, and both sides are notified instantly over WebSockets backed by Redis pub/sub.
- Role
- Fullstack developer
- Year
- 2025
- Status
- In development
Problem
A car wash is a live operation: a booking changes state several times in an hour, and the owner and the washer need the same truth at the same moment. Polling a REST endpoint produces stale screens and duplicate actions.
Approach
Bookings are the unit of state, and every change is published as an event. FastAPI owns the writes, Redis pub/sub fans each event out to the socket layer, and a connected client subscribes only to the channels it is allowed to see.
Key features
- 01Real-time booking updates pushed to the client as they happen
- 02Live status tracking from request through to completion
- 03Instant notifications for owners and service providers
- 04Payment gateway integration for completed jobs
Architecture & decisions
Redis pub/sub as the fan-out
A write never blocks on a socket: the API publishes to a channel and the socket layer delivers, so a slow client cannot stall a booking.
A channel per booking
Clients join the channel for their booking or provider queue, which keeps updates scoped instead of broadcasting one job to every connected client.
Authorised connections
The WebSocket handshake validates the session before joining a channel, so live updates cannot leak another customer's job.
Payments reconciled with state
A gateway confirmation is recorded against the booking rather than trusted as the source of truth, so a dropped callback cannot silently mark a job paid.
Outcome
WashHup is the project that made real-time architecture concrete for me: separate the write path from delivery, and treat a socket as a projection of state rather than the state itself.