Introduction
The Booking Kit is an open-source TypeScript toolkit for building production-grade booking and scheduling systems. It provides the database schema, scheduling math, and UI components — without locking you into a SaaS platform.
Philosophy
Section titled “Philosophy”“Hide the Math, Expose the UI.”
The hard parts — timezone-aware slot computation, RRULE (the iCalendar recurrence rule standard — e.g., FREQ=WEEKLY;BYDAY=MO,TU,WE means every Monday, Tuesday, Wednesday) recurrence expansion, double-booking prevention, team scheduling algorithms — are encapsulated in @thebookingkit/core. The UI components are copy-paste source code you own entirely, following the shadcn/ui convention.
Who is The Booking Kit for?
Section titled “Who is The Booking Kit for?”- SaaS builders adding booking to their platform (clinics, salons, studios, tutoring, restaurants, hotels)
- Agencies building custom scheduling for clients
- Solo developers who need Cal.com-level features without the Cal.com codebase
Whether you’re building appointments with people (barbers, doctors, consultants) or reservations for physical spaces (restaurant tables, hotel rooms, tennis courts, yoga mats, coworking desks), The Booking Kit handles both.
What’s included?
Section titled “What’s included?”| Package | Description |
|---|---|
@thebookingkit/core | Framework-agnostic scheduling engine, business logic, and adapter interfaces |
@thebookingkit/db | Drizzle ORM schema (26 tables), migrations, and type exports for PostgreSQL 15+ |
@thebookingkit/ui | 31 React components — booking calendar, slot picker, admin views |
Key capabilities
Section titled “Key capabilities”- Two booking modes — Provider mode (1:1 appointments with people) and Resource mode (capacity-based physical units)
- Slot computation with RRULE expansion, override masking, and booking/buffer filtering
- Timezone-safe math — all computation in UTC, display in any IANA timezone
- Double-booking prevention at the database level via Postgres
EXCLUDE USING gist - Team scheduling — round-robin, collective, managed, fixed assignment
- Resource pools — automatic assignment strategies (best-fit, round-robin, largest-first)
- Payments — Stripe integration with cancellation policies and no-show fees
- Workflow automation — trigger-condition-action engine for booking events
- Webhooks — HMAC-SHA256 signed, replay-protected, with exponential backoff retry
- Multi-tenancy — Organization isolation, RBAC, cascading settings
- 31 React components — customer booking flow, admin dashboard, payments, workflows
Framework agnostic
Section titled “Framework agnostic”@thebookingkit/coreis pure TypeScript. Runs in Node.js, Deno, Bun, and edge runtimes.@thebookingkit/dbuses standard Postgres via Drizzle ORM. Database constraints work regardless of your backend.@thebookingkit/uiprovides React components. Use@thebookingkit/corewith any frontend framework.
Next steps
Section titled “Next steps”- Installation — Add The Booking Kit to your project
- Quick Start — Compute your first available slots
- Architecture — Understand how the pieces fit together
- Live Demo — See The Booking Kit in action with a working barber shop booking app