Open-Source Wikis

/

Cal.com

/

Cal.diy

calcom/cal.com

Cal.diy

Cal.diy is the community-driven, MIT-licensed scheduling platform — a fork of Cal.com with all enterprise/commercial code removed. It is a self-hosted Next.js application backed by PostgreSQL, designed for individuals and self-hosters who want full control over their scheduling infrastructure without proprietary "Open Core" constraints.

The project lives at github.com/calcom/cal.com (the calcom/cal.com repository hosts the Cal.diy codebase per the current README.md). It powers user signups, event-type configuration, calendar federation, slot computation, bookings, video calls, embeds, and over 100 integrations with calendars, conferencing tools, payment providers, CRMs, and analytics services.

What this codebase does

  • Schedules meetings — public booking pages, group bookings, round-robin assignment, recurring events, managed event types, and seat-based events. The EventType Prisma model in packages/prisma/schema.prisma is the single source of truth for what an organizer offers.
  • Federates calendars — pulls free/busy from Google, Microsoft 365 / Exchange, Apple, Lark, Feishu, CalDAV, and ICS feeds, and writes back confirmed events to chosen destination calendars.
  • Hosts video calls — first-party Daily.co video (packages/app-store/dailyvideo) plus Zoom, Google Meet, Office 365 Video, Webex, Jitsi, and ~25 other conferencing apps.
  • Exposes APIs — a Next.js + tRPC layer for the web app, plus a separate NestJS service in apps/api/v2 that powers the REST API documented at apps/api/docs/.
  • Provides embeds and SDK atoms — JavaScript snippet, React component, and Web Components in packages/embeds/*, plus high-level "atom" React components for the Cal.com Platform SDK in packages/platform/atoms.
  • Ships an App Store — over 100 third-party integrations live in packages/app-store/*, each wired in via packages/app-store-cli.

Tech stack at a glance

  • Language: TypeScript (strict). 3,800+ .ts files and 1,100+ .tsx files, organized as a Yarn 4 + Turborepo monorepo.
  • Framework: Next.js 13+ App Router for apps/web. NestJS for apps/api/v2. MintLify for apps/docs.
  • Database: PostgreSQL via Prisma ORM. The schema (packages/prisma/schema.prisma) defines 100 models and 46 enums.
  • API layer: tRPC for type-safe internal calls (packages/trpc/server/routers), plus REST/OpenAPI for apps/api/v2.
  • Auth: NextAuth.js with email/password, magic links, Google, GitHub, SAML (removed in Cal.diy), and a custom Prisma adapter (packages/features/auth/lib/next-auth-custom-adapter.ts).
  • UI: Tailwind CSS, shared components in packages/ui, internal feature components scattered through packages/features/*.
  • Testing: Vitest for unit tests, Playwright for E2E, Jest for apps/api/v2.
  • Tooling: Biome for formatting and linting, Turbo for task orchestration, Husky + lint-staged for git hooks, Sentry for error tracking, Trigger.dev for background jobs.

Audience for this wiki

This wiki is written for engineers landing in the codebase for the first time — what each subsystem does, where it lives, and where to start when you need to change it. It is not a user-facing manual. For end-user docs, see the MintLify content under apps/docs/content/.

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Cal.diy – Cal.com wiki | Factory