Private Booking & Operations Platform
Custom booking software for a charter business: a seven-step customer flow with live availability and pricing, built on a locked-down data model, with the operations layer designed to match.



- Client
- Private · withheld
- What we built
- Booking web app
- Stack
- Next.js · TypeScript · Supabase
- Data
- 14 tables, row-level security
- Customer flow
- 7 steps
From picking a date to the final price.

The parts customers never see.
Availability engine
Remaining capacity per slot is the tour's capacity minus guests already booked, with a timezone-correct booking cutoff.
capacity − Σ guest_countPricing engine
One pure function handles per-person and flat-plus tours, per-person and per-unit add-ons, optional insurance and tax.
lib/pricing.tsLocked-down data
Fourteen tables with row-level security, denied by default. An append-only audit log. Waiver versions can't change once active.
RLS · default denyType safety
Strict TypeScript with no any, Zod validation on every API shape, and a server-only guard on the privileged database client.
Payments, waivers, operations and an AI concierge.
Concept screens for the operations layer, drawn in the production design system.







Built for booking from a phone.
Every step of the flow works in a single column at phone width.



