Skip to content
All projects

Mobile · Real-time · Payments

CarWash Booking

Mobile · Real-time · Payments

A full-stack Flutter platform for car-wash businesses — customers book services, track appointments live, manage vehicles, buy memberships, earn loyalty rewards and pay securely, backed by a real-time Django REST + Channels API.

12
Technologies
3
Domains
6
Capabilities
1
Public links

Who it's for

Car-wash and vehicle-service businesses that want bookings, live tracking, memberships, loyalty and payments in one branded app.

Where it fits

Customer phones (Android and iOS via one Flutter codebase) plus an operations dashboard for staff, scheduling and revenue analytics.

The hard part

The problem

Car-wash booking spans the whole lifecycle — choosing a service, live tracking, payment, loyalty and back-office operations — and it all has to feel immediate on a phone.

Architecture overview

A Flutter app (Riverpod, Dio, GoRouter, Hive) talks to a Django REST + Channels backend. Live booking status streams over WebSockets with Google Maps; passwordless OTP login issues JWTs with automatic refresh; Stripe handles payments and subscriptions; Celery/Redis run notifications and scheduled jobs off the request path; FCM delivers push updates.

Service lifecycle

  1. Book
  2. Location
  3. Service
  4. Payment
  5. Live status
  6. Completion

live status streams over WebSockets + Google Maps

A customer moves through a service lifecycle — book, pick location, choose service, pay, then watch live status update in real time until completion.

How it works

What's actually in it.

  1. 01Online booking with packages, locations and time-slot scheduling.
  2. 02Real-time booking tracking over WebSockets + Google Maps.
  3. 03Passwordless OTP login with JWT and automatic token refresh.
  4. 04Vehicle management, memberships, loyalty and referral rewards.
  5. 05Stripe payments and subscription billing; in-app product store.
  6. 06Celery/Redis background processing for notifications and scheduled jobs; FCM push.

Engineering decisions

Passwordless OTP authentication

For a consumer booking app, a password is friction and a liability. OTP login over JWT with automatic token refresh removes the password entirely while keeping sessions secure.

The trade-off

OTP depends on message delivery and adds a verification step, but it removes password management and lowers the barrier to a first booking.

Technical highlights

  • Live service tracking on a map, end to end.
  • Memberships, loyalty tiers and referrals built in.
  • Admin dashboard for bookings, staff, attendance and analytics.

Tech stack

  • Flutter
  • Riverpod
  • Dio
  • Django REST Framework
  • Django Channels
  • PostgreSQL
  • Redis
  • Celery
  • Stripe
  • Firebase Cloud Messaging
  • Google Maps
  • WebSockets

Want to go deeper on CarWash Booking?

I'm happy to walk through the architecture and the decisions behind it.

Get in touch