MU
← All Projects
2.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
DjangoPythonVanilla JSVercelGoogle Cloud RunCloudflare WorkersCloudflare D1StripePostgreSQLCalDAVGoogle 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
ChallengeSolution
Bookings could not depend on the backend being upFire-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 partnerCloudflare Worker + D1 + password-protected HTML dashboard — single shared Worker secret, no accounts to manage
Booking slots had to reflect the owner's real calendarApple iCloud CalDAV + Google Calendar API — merged free/busy feed drives the available time slots
No-shows were hurting revenueStripe Checkout deposit on booking confirmation, captured via webhook
Frontend needed to be fast and easy to maintainVanilla JS ES6 modules + CSS custom properties — zero build step, instant deploy, tiny bundle
Owner is non-technicalHTMX-powered management dashboard + Django admin — server-rendered, no SPA complexity for the operator
API deployment blocked by GCP accessMoved the critical booking path to Cloudflare edge so revenue capture keeps working independent of Cloud Run
Process Flow
Loading diagram...