Cal.com logo

Cal.com

Scheduling infrastructure for everyone

SaaS / Scheduling

68/ 100
Solid side project

The verdict

Build a personal 1-on-1 scheduling MVP in a weekend, but prepare for multi-calendar race conditions and timezone headaches if you expand to teams.

Replicating a solo scheduling link with Google Calendar integration is straightforward with an AI coding agent, but real Cal.com parity hits a wall when dealing with bi-directional calendar webhooks, synchronization retries, and daylight saving edge cases. If you just want a booking link, use the free tier; build this if you want a deep dive into complex relational scheduling data models.

Estimated effort: 2-3 weeks of focused development and debugging

What you can't replicate

  • Pre-existing OAuth verifications with Google and Microsoft
  • Enterprise HIPAA/SOC 2 compliance infrastructure
  • Native mobile apps and extensive 100+ app store ecosystem

Founded

2021

Raised

$32.4M

Team

44

Cheapest paid tier

$0

What Cal.com does

Developer-focused, customizable scheduling infrastructure and online booking platform with calendar syncing and routing.

Core features

  • Two-way calendar sync (Google/Outlook)
  • Dynamic timezone slot generation
  • Custom booking page with event types
  • Automated email/SMS reminders via cron
  • Round-robin and team scheduling logic
  • Custom domain and booking slug routing
  • Stripe payment integration for paid bookings
  • Webhook delivery and API v2 endpoints

The business

Pricing

  • Individuals$0
  • Teams$12/mo
  • Organizations$28/mo
  • EnterpriseCustom

Funding

$32.4M from Seven Seven Six, Obvious Ventures, OSS Capital, Remote First Capital, Alexis Ohanian

Pay vs build, cumulative

Break-even at month 2 — after that, every month is money kept.

The hard parts of vibe coding Cal.com

  • Preventing double-booking race conditions across disparate calendar APIs
  • Complex timezone matrix calculations accounting for daylight savings shifts
  • Weighted round-robin distribution fairness algorithms for teams
  • Enterprise compliance (HIPAA data isolation, SOC 2, SAML SSO)

How to vibecode Cal.com

Prerequisites

  • Node.jsfree

    Runtime environment for Next.js application stack

  • GitHubfree

    Code repository hosting and version control

  • Google Developer Consolefree

    Required to set up OAuth credentials for Google Calendar integration

AI coding tools

Recommended stack

FrontendNext.js (App Router, Tailwind CSS, Shadcn UI)
BackendNext.js Server Actions & API Routes
DatabaseSupabase (PostgreSQL with Prisma ORM)
AuthSupabase Auth
PaymentsStripe (skipped for personal MVP)
Otherdate-fns-tz for timezone calculations, Resend for transactional reminder emails

Hosting & infrastructure

VercelFrontend and API hosting with zero-config edge deployments$0-20/mo
SupabaseManaged PostgreSQL database and authentication layer$0-25/mo

Build guide

  1. 01Project Scaffolding & Database Schema

    Initialize the Next.js project with Tailwind CSS, configure Prisma with Supabase PostgreSQL, and define core models for Users, EventTypes, Bookings, and Availability.

    Create a new Next.js project using App Router, TypeScript, and Tailwind CSS. Integrate Prisma ORM connected to a Supabase PostgreSQL instance. Build out the relational database schema in prisma/schema.prisma with models: User (id, email, username, timezone), EventType (id, userId, title, slug, lengthInMinutes, description, price), Availability (id, userId, dayOfWeek, startTime, endTime), and Booking (id, eventTypeId, userId, attendeeName, attendeeEmail, startTime, endTime, status, uid). Ensure proper foreign key constraints, indexes on slug and userId, and run the initial migration.
  2. 02Authentication & User Dashboard

    Implement authentication using Supabase Auth and construct a dashboard interface for users to manage their profiles, custom links, and basic settings.

    Implement authentication in Next.js using Supabase Auth with email and password sign-up. Create protected dashboard routes under /settings and /dashboard. Build a clean UI using Tailwind CSS and Shadcn UI components where a user can view their unique booking URL (e.g., app.domain.com/username), edit their default timezone, and manage basic account parameters stored in the database User table.
  3. 03Event Type Management & Availability Rules

    Build the event type builder allowing users to configure meeting lengths, descriptions, buffer times, and recurring weekly availability.

    Build an event type management interface in the dashboard. Allow users to create, update, and delete event types (title, duration in minutes, slug, price, buffer times before and after events). Implement an availability matrix component where users can define working hours per day of the week (e.g., Monday 09:00 to 17:00). Store these rules in the database and handle validation so overlapping ranges cannot be saved.
  4. 04Public Booking Page & Timezone-Aware Slot Engine

    Develop the public booking route that renders available time slots dynamically by calculating user availability, existing bookings, and visitor timezone offsets.

    Create a dynamic public booking route at /[username]/[eventSlug]. Build a responsive calendar and time slot selection view. Implement a robust backend slot-generation algorithm that takes a user's weekly availability rules, checks existing conflicting bookings in the database, accounts for buffer times, detects the visitor's local timezone via Intl.DateTimeFormat, and renders available bookable slots in 15- or 30-minute intervals. Ensure daylight saving time shifts are correctly calculated using date-fns-tz.
  5. 05Booking Creation & Email Notification Pipeline

    Handle booking submissions, enforce transaction locking against double-booking races, and trigger automated confirmation emails via Resend.

    Implement the booking confirmation handler when a visitor selects a slot and submits their name and email. In a database transaction, re-verify slot availability to prevent race conditions and double bookings. Create a new Booking record with status 'ACCEPTED'. Integrate the Resend API to send automated email confirmations to both the host and the attendee containing meeting details, cancellation links, and ICS calendar invites.
  6. 06Google Calendar Integration

    Integrate Google Calendar OAuth flow to read external calendar busy times and insert confirmed bookings into the user's primary calendar.

    Implement Google Calendar OAuth connection in settings. Store OAuth refresh and access tokens securely in a CalendarCredentials database model. Build a background sync utility that queries the Google Calendar FreeBusy API for a given date range when rendering booking slots, merging external calendar busy periods with internal app bookings. Automatically create a calendar event via the Google Calendar API when a new booking is successfully confirmed.

Cost vs paying for Cal.com

What will you build it with?

Est. 4.5M in / 1.2M out tokens· Includes access to introductory usage of the default model with dynamic rate limits.$0

Starting total with Claude Code$0 one-time

Starting costs (one-time)

  • Custom domain name (optional)$12/yr

Total~$12 one-time

Ongoing costs (monthly)

  • Supabase Pro (optional free tier available)$25/mo
  • Vercel Hobby / Pro$0-20/mo

Total~$0-25/mo

Paying for Cal.com

$12-28/mo

Your time to build

35-50 hours

AI tool credits

$20 (Claude Pro or Cursor Pro)

Break-even

N/A (built for personal learning and self-hosted control)

Sources

Vibecoded copycats

All copies →

Loading…

How to Vibecode Cal.com - VibeItYourself