Deep Dive: Cal.com's Shortcomings
Comparison
The Short Version
Section titled “The Short Version”| The Booking Kit | Cal.com | Calendly | |
|---|---|---|---|
| What it is | Composable scheduling toolkit | Full scheduling application | Managed SaaS product |
| License | MIT | AGPL-3.0 | Proprietary |
| You get | Packages you compose | An entire app you deploy | A hosted service you rent |
| Modify privately | Yes | No (AGPL copyleft) | No (closed source) |
| Runtime | Browser, Edge, Node | Node + Postgres only | N/A |
| Bundle | ~50KB core (tree-shakeable) | 4,500+ TS files, 80+ DB models | N/A |
Feature Comparison
Section titled “Feature Comparison”| Feature | The Booking Kit | Cal.com | Calendly |
|---|---|---|---|
| Slot computation engine | Yes | Yes | Yes |
| RRULE-based availability | Yes | Yes | Yes |
| Timezone-aware scheduling | Yes | Yes | Yes |
| Buffer time | Yes | Yes | Yes |
| Availability overrides | Yes | Yes | Yes |
| Double-booking prevention | Database-level (EXCLUDE USING gist + SERIALIZABLE) | Application-level conflict checks | Managed internally |
| Team scheduling | Yes (round-robin, collective, fixed) | Yes | Basic |
| Seat-based / group bookings | Yes | Yes | No |
| Recurring bookings | Yes | Yes | No |
| Walk-in queue management | Yes | No | No |
| Kiosk mode | Yes | No | No |
| Routing forms | Yes | Yes | No |
| Payment integration | Yes (Stripe + adapter pattern) | Yes | Yes (Stripe) |
| Confirmation modes | Yes | Yes | Yes |
| Booking audit trail | Yes (append-only event log) | Partial | No |
| Multi-tenancy + RBAC | Yes | Yes | Limited |
| Webhooks | Yes (HMAC-SHA256, replay-protected) | Yes | Yes |
| Workflow automation | Yes | Yes | Limited |
| Email + ICS | Yes | Yes | Yes |
| Calendar sync | Yes | Yes | Yes |
| Embed widgets | Yes | Yes | Yes |
| REST API | Yes | Yes | Yes |
| Copy-paste UI (shadcn convention) | 31 components | No — tied to their app | No |
| Pluggable adapters | Yes (auth, email, jobs, calendar, SMS, payment) | Hardcoded integrations | No |
| Edge / Cloudflare D1 | Yes | No | No |
| CLI scaffolding | Yes (npx thebookingkit init) | No | No |
| Hosted platform | No | Yes | Yes |
| Built-in video | No | Yes | Yes |
| App marketplace | No (adapter pattern instead) | Yes (111 integrations) | Yes |
| Mobile apps | No | Yes | Yes |
| Zero-code setup | No | Partial | Yes |
Why Developers Choose The Booking Kit
Section titled “Why Developers Choose The Booking Kit”1. MIT License — No Strings Attached
Section titled “1. MIT License — No Strings Attached”Cal.com is AGPL-3.0. If you modify Cal.com and serve it over a network (which every SaaS does), you must release your modifications under the same license. For companies embedding scheduling into a commercial product, this is a legal blocker without purchasing Cal.com’s enterprise license.
The Booking Kit is MIT. Modify it, embed it, sell it, keep it private. No copyleft obligations.
2. Composable Packages, Not a Monolith
Section titled “2. Composable Packages, Not a Monolith”Cal.com gives you a 4,500-file Next.js application with 80+ Prisma models and 72 interdependent feature packages. You can’t extract “just the slot engine.”
The Booking Kit gives you independent packages:
@slotkit/core → Pure scheduling math. No framework, no ORM, no runtime assumptions.@slotkit/db → Drizzle schema. Any Postgres 15+.@slotkit/server → Auth, webhooks, API. Swap any adapter.@slotkit/d1 → Cloudflare D1 edge adapter.registry/ui/ → 31 copy-paste React components you own.Use one package or all of them. They compose — they don’t couple.
3. Runs Anywhere — Including the Edge
Section titled “3. Runs Anywhere — Including the Edge”Cal.com requires a Node.js server with a warm PostgreSQL connection. No edge deployment.
@slotkit/core runs in browsers, Cloudflare Workers, Deno, Vercel Edge Functions, and Node.js. With @slotkit/d1, you can deploy a complete scheduling backend to Cloudflare’s global edge network.
4. Database-Level Safety
Section titled “4. Database-Level Safety”Cal.com prevents double-bookings with application-level conflict checks (checkForConflicts.ts). If the application code has a bug or a race condition slips through, a double booking can occur.
The Booking Kit enforces double-booking prevention at the database level with PostgreSQL EXCLUDE USING gist constraints and SERIALIZABLE transactions with automatic retry (jittered exponential backoff). Even buggy application code cannot create a double booking.
5. Own Your UI
Section titled “5. Own Your UI”Cal.com’s booking UI is wired to their tRPC API and Zustand store. You can theme it, but you cannot restructure the booking flow or extract individual components.
The Booking Kit provides 31 React components following the shadcn/ui convention — copy-paste source code, className/style props, tbk- CSS prefix, zero runtime dependency on any backend.
6. Walk-In & Kiosk — For Physical Businesses
Section titled “6. Walk-In & Kiosk — For Physical Businesses”Cal.com was built for online meetings. It has no walk-in queue, no kiosk mode, no hybrid appointment/walk-in scheduling.
The Booking Kit includes:
- Walk-in queue with position tracking, wait time estimation, and analytics
- Kiosk mode with multi-provider resource views and check-in management
- 8 dedicated components:
QueueDisplay,QueueManager,QueueTicket,WalkInEntryForm,WalkInToggle,WalkInAnalytics,KioskCalendar,KioskShell
7. Swap Anything With Adapters
Section titled “7. Swap Anything With Adapters”Cal.com has 111 integrations as hardcoded “app store” packages. Adding a new one means forking their monorepo.
The Booking Kit uses typed adapter interfaces:
const auth: AuthAdapter = new ClerkAdapter();const email: EmailAdapter = new SESAdapter();const jobs: JobAdapter = new BullMQAdapter();const calendar: CalendarAdapter = new OutlookAdapter();Implement a TypeScript interface. No marketplace, no vendor approval.
8. No Feature Rug-Pulls
Section titled “8. No Feature Rug-Pulls”Cal.com has a history of removing free-tier features overnight. Their Workflows engine (automated email/SMS notifications) was free, then abruptly paywalled after abuse. Users who built processes around it had their pipelines severed without warning.
With The Booking Kit, features can’t be revoked. You own the source code under MIT. No vendor can paywall your own codebase.
9. Predictable Costs
Section titled “9. Predictable Costs”Cal.com’s costs escalate quickly: removing branding requires Teams ($15/user/month), SSO requires Organizations ($37/user/month), and production API usage starts at $299/month. A 20-person team needing routing forms and brand removal pays $3,600-$8,880/year.
The Booking Kit is MIT-licensed. No per-seat fees. No per-booking API charges. No paywalls. Ever.
When Cal.com Is the Better Choice
Section titled “When Cal.com Is the Better Choice”We’re honest about this. Cal.com is better when:
- You want a product, not a toolkit — Cal.com ships a complete admin dashboard, managed hosting, and mobile apps
- You need 100+ integrations today — Zoom, Google Meet, Slack, Salesforce, Zapier, and more, pre-built
- Video conferencing is core — Cal.com integrates Daily.co, Zoom, Teams natively
- Non-developers will manage scheduling — Cal.com has a no-code admin UI
- You want a managed cloud option — Cal.com Cloud handles infrastructure for you
When Calendly Is the Better Choice
Section titled “When Calendly Is the Better Choice”- You need scheduling running today with zero engineering effort
- Your use case is simple one-on-one meetings
- You’re comfortable with per-seat subscription pricing
- You don’t need custom UI or deep product integration
Architecture Comparison
Section titled “Architecture Comparison”| Dimension | The Booking Kit | Cal.com |
|---|---|---|
| Core engine | @slotkit/core — framework-agnostic, 0 runtime deps | Embedded in feature packages, requires Prisma + tRPC |
| Database | Drizzle ORM, normalized schema, ~15 tables | Prisma, 80+ models, JSON blob configuration fields |
| Schema safety | DB constraints (gist exclusion, serializable txns) | Application-level conflict checks |
| Date handling | date-fns 3.x (single library) | dayjs + date-fns (dual, mid-migration) |
| Auth | Pluggable AuthAdapter interface | NextAuth.js 4.x hardcoded |
| API | REST + adapter pattern | tRPC (coupled to React) |
| UI delivery | Copy-paste source (shadcn convention) | npm package (@calcom/ui) |
| Testing | Property-based (fast-check) + 623 unit tests | Example-based unit + Playwright E2E |
| Edge support | Yes (D1 adapter, universal core) | No (Node.js + Postgres only) |
The Bottom Line
Section titled “The Bottom Line”Calendly — you want zero code and don’t mind renting.
Cal.com — you want a complete open-source scheduling product with managed hosting and 100+ integrations.
The Booking Kit — you’re building a product that needs scheduling as infrastructure. MIT license, composable packages, edge-ready runtime, copy-paste UI, database-level safety, and features for physical businesses that no other tool provides.