Overview
Discover what makes Cal.com powerful
Cal.com (formerly Calendso) is an open‑source, self‑hosted booking and scheduling platform that aims to replace proprietary services like Calendly. From a developer’s standpoint, the project is designed for extensibility and performance: it exposes a rich GraphQL API, supports webhooks, and can be integrated into existing authentication or billing pipelines. The core of the application is a full‑stack React/Next.js frontend coupled with an Express/Node backend that communicates with a PostgreSQL database via Prisma ORM. The system is built to be modular; most features—such as time‑zone handling, availability rules, and email notifications—are implemented as pluggable modules that can be overridden or replaced without touching the core codebase.
Frontend
Backend
Data Layer
Authentication
Overview
Cal.com (formerly Calendso) is an open‑source, self‑hosted booking and scheduling platform that aims to replace proprietary services like Calendly. From a developer’s standpoint, the project is designed for extensibility and performance: it exposes a rich GraphQL API, supports webhooks, and can be integrated into existing authentication or billing pipelines. The core of the application is a full‑stack React/Next.js frontend coupled with an Express/Node backend that communicates with a PostgreSQL database via Prisma ORM. The system is built to be modular; most features—such as time‑zone handling, availability rules, and email notifications—are implemented as pluggable modules that can be overridden or replaced without touching the core codebase.
Architecture
- Frontend: Next.js 13 with React Server Components, TypeScript, and Tailwind CSS. The UI is a single‑page application that consumes the GraphQL API over HTTP/2, leveraging server‑side rendering for SEO and performance.
- Backend: Node.js 20 with Express, TypeScript, and Apollo Server. Business logic is split into services (e.g., scheduling, notifications) and controllers, following a clean‑architecture pattern that facilitates unit testing.
- Data Layer: PostgreSQL 14+ accessed through Prisma. The schema is versioned with Prisma migrations, and the database supports advanced features such as JSONB for flexible event metadata.
- Authentication: The platform integrates with OAuth providers (Google, GitHub, Microsoft) and supports JWT‑based session handling. Custom authentication can be injected via the
authplugin interface. - Containerization: Docker Compose files are provided for local development, and a Helm chart is available for Kubernetes deployments. The container image is built on
node:20-alpineand serves both the API and UI, reducing runtime overhead.
Core Capabilities
- GraphQL API: CRUD operations for users, teams, event types, bookings, and availability. The schema is extensible; developers can add custom fields to the
Eventtype via a plugin hook. - Webhooks & Callbacks: Triggered on booking creation, cancellation, or rescheduling. The payload is JSON and can be consumed by external services (Zapier, custom microservices).
- Email & SMS: Out‑of‑the‑box integration with SendGrid, Postmark, and Twilio. The notification service is pluggable; you can swap providers by implementing the
IEmailProviderinterface. - Recurrence & Availability: Support for complex recurrence rules (iCal RFC 5545) and time‑zone aware calendars. Availability is defined per user or team, allowing shared booking links that automatically respect each participant’s calendar.
- Plugin System: A
cal.com/pluginsdirectory lets developers drop in JavaScript modules that register routes, middlewares, or GraphQL resolvers. The system uses a simple dependency injection container to wire plugins at runtime.
Deployment & Infrastructure
Cal.com is designed for self‑hosting on any platform that supports Docker or Kubernetes. Key requirements:
- CPU/RAM: Minimum 2 vCPU and 4 GB RAM for a small team; production clusters scale horizontally via the Kubernetes Helm chart.
- Storage: Persistent PostgreSQL volumes are required; optional S3-compatible storage can be used for media uploads.
- CI/CD: The repository includes GitHub Actions that build Docker images, run tests, and push to Docker Hub. Developers can integrate these workflows into their own pipelines.
- Scaling: The API layer is stateless; load balancers can route traffic to multiple replicas. The database scales via read replicas or sharding if needed.
Integration & Extensibility
- OAuth & SSO: Built‑in support for SAML, OIDC, and custom OAuth providers. Developers can expose a
/authendpoint that redirects to any identity provider. - Custom Domains & SSL: The platform can serve multiple subdomains, each mapped to a team or user. Let’s Encrypt certificates are automatically provisioned via Certbot in the Docker image.
- Webhook Callbacks: Developers can register custom endpoints that receive events, enabling real‑time integration with CRMs or ticketing systems.
- SDKs & Client Libraries: While the primary API is GraphQL, a lightweight TypeScript SDK is available in the
packages/sdkfolder for client applications.
Developer Experience
- Documentation: The repo contains a comprehensive
docs/folder with architecture diagrams, API reference, and plugin guides. The README is kept concise but links to deeper resources. - Community: Active discussions on GitHub, a dedicated Discord channel, and regular community calls. The project follows the Contributor Covenant, making it welcoming for newcomers.
- Testing: Jest and Playwright are used for unit and end‑to‑end tests. The test suite covers core scheduling logic, ensuring that new features do not regress existing behavior.
- Licensing: AGPLv3 guarantees that any derivative work must also be open source, which aligns with the community‑driven ethos of Cal.com.
Use Cases
- Enterprise Scheduling – A SaaS company can host Cal.com to offer its customers a self‑hosted booking widget that integrates with their existing identity and billing systems.
- Consulting Firms – Teams can share custom event types (e.g.,
Open SourceReady to get started?
Join the community and start self-hosting Cal.com today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
XBackBone
Lightweight PHP file manager for instant sharing
Seerr
Self-hosted media request manager for Jellyfin, Plex, and Emby
Swing Music
Self‑hosted music streaming with a slick browser UI
goploader
Secure, terminal‑friendly file sharing in Go
Mopidy
Self-hosted other
Bugzilla
Collaborative bug tracking for software teams
