Cal.diy: The Fully Open-Source Scheduling Platform

⬅️ Back to Tools

TLDR

  • Cal.diy is a fully open-source, 100% MIT-licensed fork of Cal.com with all enterprise/commercial code stripped out.
  • It gives you complete scheduling infrastructure booking pages, calendar integrations, video meetings, round-robin, and more.
  • It is self-hosted only: you run it on your own infrastructure with full data control.
  • Built on Next.js, tRPC, Prisma, and PostgreSQL with a modern, clean codebase.
  • With 42k+ GitHub stars and 16,400+ commits, it is one of the most mature open-source scheduling solutions available.

If you want a Cal.com-like experience without proprietary enterprise paywalls or license keys, Cal.diy is the fork to run.


What Cal.diy Is

Cal.diy is the community-driven, fully open-source scheduling platform; a fork of Cal.com with all enterprise/commercial code removed. Unlike Cal.com’s “Open Core” model, Cal.diy is 100% MIT-licensed with no proprietary “Enterprise Edition” features.

It is designed for individuals and self-hosters who want full control over their scheduling infrastructure without any commercial dependencies. There is no hosted/managed version you run it on your own hardware.


What Makes It Different from Cal.com

FeatureCal.comCal.diy
LicenseAGPL + Proprietary EE100% MIT
Enterprise FeaturesPaid tierRemoved
License Key RequiredYes (for EE)No
Teams/OrganizationsPaidRemoved
SSO/SAMLPaidRemoved
WorkflowsPaidRemoved
Insights/AnalyticsPaidRemoved

Key Features

📅 Booking & Scheduling

  • Custom event types (15min, 30min, 60min, etc.)
  • Recurring bookings
  • Availability management
  • Time zone support
  • Booking page customization
  • Confirmation and reminder emails
  • Buffer time between meetings
  • Booking limits and round-robin scheduling

📆 Calendar Integrations

  • Google Calendar
  • Microsoft Office 365
  • Apple Calendar (via CalDAV)

🎥 Video Meetings

  • Zoom
  • Google Meet
  • Microsoft Teams

🏗️ Additional Features

  • Multiple booking URLs
  • Booking redirects
  • Collective meetings
  • Email notifications via Mailhog

💻 Built With

  • Next.js React framework for production
  • tRPC End-to-end typesafe APIs
  • React.js UI components
  • Tailwind CSS Styling
  • Prisma Database ORM
  • PostgreSQL Database
  • Daily.co Video calls

Installation

Quick Start with Docker (Recommended)

# Clone the repository
git clone --recursive https://github.com/calcom/cal.diy.git
cd cal.diy

# Copy environment file
cp .env.example .env

# Generate required keys
openssl rand -base64 32  # For NEXTAUTH_SECRET
openssl rand -base64 24  # For CALENDSO_ENCRYPTION_KEY

# Start with Docker (includes PostgreSQL)
docker compose up -d

Then open http://localhost:3000 and create your first user.

Default test accounts:

EmailPasswordRole
free@example.comfreeFree user
pro@example.comproPro user
admin@example.comADMINadmin2022!Admin user

Development Setup

# Clone and install
git clone https://github.com/calcom/cal.diy.git
cd cal.diy
yarn

# Set up environment
cp .env.example .env
openssl rand -base64 32  # Add to NEXTAUTH_SECRET
openssl rand -base64 24  # Add to CALENDSO_ENCRYPTION_KEY

# Start local database and app
yarn dx

The yarn dx command starts a local PostgreSQL instance with seeded test users.

Manual Database Setup

If you prefer setting up PostgreSQL manually:

# Create database
createdb caldiy

# Set DATABASE_URL in .env
DATABASE_URL='postgresql://user:password@localhost:5432/caldiy'

# Run migrations
yarn workspace @calcom/prisma db-migrate

# Seed with test users
cd packages/prisma && yarn db-seed

Required Environment Variables

VariableDescription
DATABASE_URLPostgreSQL connection string
NEXTAUTH_SECRETCookie encryption key (openssl rand -base64 32)
CALENDSO_ENCRYPTION_KEYAuth encryption key (openssl rand -base64 24)
VariableDefaultDescription
NEXT_PUBLIC_WEBAPP_URLhttp://localhost:3000Base URL
NEXTAUTH_URL{WEBAPP_URL}/api/authAuth server location
CALCOM_TELEMETRY_DISABLEDSet to 1 to disable anonymized telemetry

Configuring Integrations

Google Calendar

  1. Enable Google Calendar API in Google Cloud Console
  2. Create OAuth credentials (Web application type)
  3. Add redirect URI: <CAL_DIY_URL>/api/integrations/googlecalendar/callback
  4. Add credentials to .env as GOOGLE_API_CREDENTIALS (JSON string)
  5. Run yarn workspace @calcom/prisma seed-app-store

Microsoft 365

  1. Register app in Azure Portal
  2. Set redirect URI: <CAL_DIY_URL>/api/integrations/office365calendar/callback
  3. Use Application (client) ID as MS_GRAPH_CLIENT_ID
  4. Create client secret for MS_GRAPH_CLIENT_SECRET

Zoom

  1. Create app in Zoom Marketplace
  2. Set redirect URI: <CAL_DIY_URL>/api/integrations/zoomvideo/callback
  3. Add credentials to .env

Deployment Options

Docker Compose (Recommended)

docker compose up -d

Includes PostgreSQL, Cal.diy web app, and Prisma Studio for database management.

Docker (Standalone)

docker pull calcom/cal.diy
# Requires external PostgreSQL database

Build from Source

DOCKER_BUILDKIT=0 docker compose build calcom
docker compose up -d calcom

Platform Deployments

  • Railway One-click deploy button
  • Northflank Managed deployment
  • Vercel Serverless deployment (Pro plan required)
  • Render Cloud deployment
  • Elestio Managed open-source

Best Use Cases

Cal.diy makes sense if you want:

  • a fully open-source scheduling system with no proprietary paywalls
  • self-hosted calendar booking for personal or small-team use
  • complete data control your calendar data never touches a third-party SaaS
  • a Cal.com-like experience without the AGPL + Enterprise Edition complexity
  • to experiment, customize, or fork scheduling infrastructure freely under MIT

Tradeoffs

Cal.diy is not a managed SaaS. It assumes:

  • you are comfortable running Docker or Node.js services
  • you can configure OAuth apps for Google Calendar, Microsoft 365, and Zoom yourself
  • you are okay with enterprise features removed (no SSO/SAML, no teams/organizations, no advanced workflows)
  • you accept responsibility for self-hosting maintenance: updates, backups, and security

Cal.diy is intended for personal, non-production use. For commercial/enterprise scheduling needs, use Cal.com with their hosted or on-prem enterprise options.


References


Why This Tool Rocks

  • 100% Open Source: No “Open Core” split. Everything is MIT-licensed.
  • No License Keys: Works out of the box. No enterprise paywalls to work around.
  • Self-Hosted: Your scheduling data stays on your infrastructure, not someone else’s cloud.
  • Feature-Removal Model: Enterprise/commercial code is stripped out, leaving a clean, auditable codebase.
  • Privacy-Focused: No commercial tracking or upselling. Telemetry can be disabled entirely.
  • Active Community: 42k+ stars, 16k+ commits, and an active fork community.
  • Modern Stack: Next.js, tRPC, Prisma, Tailwind; familiar tooling for developers who want to customize.
  • Cal.com Heritage: Inherits one of the most polished scheduling UIs in open source, without the commercial baggage.

Crepi il lupo! 🐺