Brand-to-booking build
Crownmark Barbershop
From brand to booking in one stack.
crownmark.hair ↗The problem
The shop wanted a booking experience that looked like the brand, read real calendar availability, and didn't require a monthly SaaS.
What we built
A custom 4-step date → time → form flow queries the owner's Google Calendar through a service account, returns only free 15-minute slots, and writes confirmed bookings back as events. ZeptoMail handles confirmations; a Cloudflare Pages Function routes contact-form mail.
Outcomes
- ▸15-min race-safe slot allocation against live calendar freeBusy
- ▸Cinzel + Raleway identity with procedural SVG marble backdrop
- ▸Consent Mode v2 GA4 with custom booking-funnel events
Stack
Next.js 15Tailwind v4Cloudflare PagesPages FunctionsGoogle Calendar APIZeptoMailMailChannels
Want something similar?
Most of our projects start from a pattern we've already shipped. Tell us what you need.
Start a project