A makeup artist was juggling DMs, a calendar app, and cash deposits to hold appointment slots. No-shows cost real money and selling her masterclass content meant manually emailing files after a payment screenshot.

The Problem
A makeup artist was juggling DMs, a calendar app, and cash deposits to hold appointment slots. No-shows cost real money and selling her masterclass content meant manually emailing files after a payment screenshot.
The Approach
We built her a booking platform with money in the flow: clients pick a slot from a live availability calendar and pay a deposit through Stripe to lock it, with a dedicated flow to collect the balance later. Masterclasses sell as digital products through the same checkout. An admin dashboard covers appointments, blocked dates, clients, portfolio, services, and testimonials. Real-world hardening included converting iPhone HEIC uploads to JPEG automatically.
Deep Dive
## What we built A public portfolio and booking site plus a full admin: appointments, availability, clients, masterclass products and purchases, portfolio categories, services, settings, and testimonials. Deposits hold slots; balances collect later through their own paid flow. ## Tech React with Vite and Tailwind on the front, FastAPI with SQLAlchemy and MySQL behind it, Stripe for deposits, balances, and digital products, S3 for media, JWT auth with rate limiting, Docker and GitHub Actions for deploys. ## Results 12 database models, 14 API route modules, 16 frontend routes, deposits and digital product sales flowing through Stripe instead of DMs and screenshots. ## What is next Package add-ons and automated appointment reminders are the natural next layer on the booking engine.
The Outcome
Stripe deposit checkout with a separate balance-collection flow
digital masterclass sales through the same account
live availability calendar with blocked dates
12 database models and 14 API modules
automatic HEIC to JPEG conversion for iPhone photo uploads
Keep Exploring