

John Crosby runs Drunken Master Mixing Crew — a mobile bartending business in Atlanta. He needed a way for potential clients to discover his services, get an instant quote, and book an event without downloading an app or making a phone call.
The constraint that shaped everything: no native app. Apple's 15-27% commission on in-app billing was a non-starter for a service business with real margins. The site needed to feel like a native app — bottom nav, full-screen step flows, smooth transitions — while living entirely in the browser.
The core product is a multi-step booking wizard at /book. It walks clients through: bar type (Open, Premium, N/A Mocktail, Cash), guest count with tier selection, service duration, add-ons (Wedding Signature Cocktails, Birthday Cocktails, etc.), date and time, and contact details.
The price updates in real time at the bottom of every step. By the time a client hits submit, they've already seen exactly what they're paying — no quote request, no callback, no waiting.
State across the wizard is managed with Zustand persisted to sessionStorage. No backend round-trip between steps — the full booking object assembles on the client and submits once at the end. This kept the wizard fast and made it resilient to network hiccups mid-flow.
Stripe Checkout handles a 25% deposit at booking. Resend sends confirmation emails. Supabase stores the booking record and handles admin auth so John can manage availability and view bookings.
Web-native over native app was the right call for the business reason stated above. But it created a real design constraint: mobile browser chrome (address bar, bottom safe areas, notch) means you're never truly full-screen the way a native app is.
The solution was treating the bottom nav as a fixed UI element that accounts for safe area insets, using viewport height units carefully, and leaning into the step-flow pattern instead of fighting it. The result feels native enough that most users won't think about what they're using — which is the goal.
120+ photos from a shoot at Torched Hop Brewing Company in Atlanta. Brick wall bar setting, craft taps, bottles, John behind the bar. Selected 6 hero and background shots for the site. The photography is doing real work — it's the difference between a booking tool that feels transactional and one that makes you want to hire the person.
The admin dashboard for John is functional but minimal. He can view bookings and manage availability but the interface is utilitarian. A more considered dashboard — with booking status, revenue summary, calendar view — would make this genuinely useful as a business operations tool, not just a data store.
The add-ons pricing logic is also hardcoded in the wizard. As John adds new services or seasonal packages, that requires a code change. A simple admin interface to manage add-ons and pricing without touching the codebase would be the right next step.