Cal.diy: The Fully Open-Source Scheduling Platform
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
| Feature | Cal.com | Cal.diy |
|---|---|---|
| License | AGPL + Proprietary EE | 100% MIT |
| Enterprise Features | Paid tier | Removed |
| License Key Required | Yes (for EE) | No |
| Teams/Organizations | Paid | Removed |
| SSO/SAML | Paid | Removed |
| Workflows | Paid | Removed |
| Insights/Analytics | Paid | Removed |
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 -dThen open http://localhost:3000 and create your first user.
Default test accounts:
| Password | Role | |
|---|---|---|
free@example.com | free | Free user |
pro@example.com | pro | Pro user |
admin@example.com | ADMINadmin2022! | 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 dxThe 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-seedRequired Environment Variables
| Variable | Description |
|---|---|
DATABASE_URL | PostgreSQL connection string |
NEXTAUTH_SECRET | Cookie encryption key (openssl rand -base64 32) |
CALENDSO_ENCRYPTION_KEY | Auth encryption key (openssl rand -base64 24) |
| Variable | Default | Description |
|---|---|---|
NEXT_PUBLIC_WEBAPP_URL | http://localhost:3000 | Base URL |
NEXTAUTH_URL | {WEBAPP_URL}/api/auth | Auth server location |
CALCOM_TELEMETRY_DISABLED | Set to 1 to disable anonymized telemetry |
Configuring Integrations
Google Calendar
- Enable Google Calendar API in Google Cloud Console
- Create OAuth credentials (Web application type)
- Add redirect URI:
<CAL_DIY_URL>/api/integrations/googlecalendar/callback - Add credentials to
.envasGOOGLE_API_CREDENTIALS(JSON string) - Run
yarn workspace @calcom/prisma seed-app-store
Microsoft 365
- Register app in Azure Portal
- Set redirect URI:
<CAL_DIY_URL>/api/integrations/office365calendar/callback - Use Application (client) ID as
MS_GRAPH_CLIENT_ID - Create client secret for
MS_GRAPH_CLIENT_SECRET
Zoom
- Create app in Zoom Marketplace
- Set redirect URI:
<CAL_DIY_URL>/api/integrations/zoomvideo/callback - Add credentials to
.env
Deployment Options
Docker Compose (Recommended)
docker compose up -dIncludes PostgreSQL, Cal.diy web app, and Prisma Studio for database management.
Docker (Standalone)
docker pull calcom/cal.diy
# Requires external PostgreSQL databaseBuild from Source
DOCKER_BUILDKIT=0 docker compose build calcom
docker compose up -d calcomPlatform 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
- 🔗 GitHub Repository: github.com/calcom/cal.diy
- 🔗 License: MIT
- 🔗 Upstream Project: Cal.com
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! 🐺