MU
← All Projects2.9
Balla Loctician: Full-Stack Salon Platform
AI Automation
A full-stack salon management platform for Balla Loctician (Harlem, NYC) that drove $5K+ in new revenue for the client. Vanilla JS single-page frontend on Vercel, Django REST API on Google Cloud Run, and a Cloudflare Worker + D1 booking tracker running at the edge. Clients book appointments against live Apple iCloud CalDAV and Google Calendar availability, pay deposits via Stripe, and the owner gets real-time booking alerts through a password-protected dashboard shared with his business partner. Every page on the frontend ships with offline fallback data — if the API is unreachable, the site still renders and bookings still land through the edge worker.
Technology Stack
DjangoCloudflare WorkersCloudflare D1PostgreSQLCalDAVGoogle Calendar API
System Architecture
Loading diagram...
Specifications
- ▸$5K+ in New Revenue: Platform drove over $5,000 in bookings for the salon in its first months of launch
- ▸Offline-First SPA: Hardcoded fallback data means every page renders even if the Django API is unreachable
- ▸Edge Booking Tracker: Cloudflare Worker + D1 captures every form submission instantly — no polling, no cron
- ▸Password-Protected Dashboard: Shared HTML dashboard with CSV export, accessible to the owner and business partner via a single shared password
- ▸Live Calendar Availability: Apple iCloud CalDAV + Google Calendar API read the owner's real calendar — only free slots are offered
- ▸Stripe Deposit Checkout: Checkout sessions with webhook handler for appointment deposits — reduces no-shows
- ▸HTMX Management Panel: Server-rendered admin dashboard for the owner to manage appointments, barbers, services, and reviews
- ▸Token-Auth REST API: Full CRUD with Swagger docs, django-filter, and LimitOffsetPagination across all resources
- ▸Parallel Redundant Delivery: Fire-and-forget POST to Worker + Web3Forms email — bookings land even if one path fails
Design Decisions
| Challenge | Solution |
|---|---|
| Bookings could not depend on the backend being up | Fire-and-forget parallel POST from the browser — Cloudflare Worker logs it, Web3Forms emails it, Stripe takes payment |
| Owner needed real-time visibility shared with his partner | Cloudflare Worker + D1 + password-protected HTML dashboard — single shared Worker secret, no accounts to manage |
| Booking slots had to reflect the owner's real calendar | Apple iCloud CalDAV + Google Calendar API — merged free/busy feed drives the available time slots |
| No-shows were hurting revenue | Stripe Checkout deposit on booking confirmation, captured via webhook |
| Frontend needed to be fast and easy to maintain | Vanilla JS ES6 modules + CSS custom properties — zero build step, instant deploy, tiny bundle |
| Owner is non-technical | HTMX-powered management dashboard + Django admin — server-rendered, no SPA complexity for the operator |
| API deployment blocked by GCP access | Moved the critical booking path to Cloudflare edge so revenue capture keeps working independent of Cloud Run |
Process Flow
Loading diagram...