Open-Source Wikis

/

Cal.com

/

Packages

/

Other packages

calcom/cal.com

Other packages

A grab-bag of smaller workspaces. Each is too thin for its own page, but worth knowing about.

dayjs

packages/dayjs ships a single pre-configured Day.js bundle with the plugins Cal.diy needs (utc, timezone, customParseFormat, relativeTime, localizedFormat, weekOfYear, isBetween, minMax, duration). The convention: every internal package imports Day.js from @calcom/dayjs, never directly from dayjs. This guarantees plugins are loaded.

A patch in .yarn/patches/dayjs-npm-1.11.4-97921cd375.patch fixes a long-standing timezone bug; pinned via resolutions in the root package.json.

AGENTS.md notes:

Use date-fns or native Date instead of Day.js when timezone awareness isn't needed.

The codebase is gradually shifting away from Day.js for non-timezone code paths, but Day.js remains the single source of truth for booking-time math.

i18n

packages/i18n contains next-i18next configuration plus the per-locale JSON bundles under packages/i18n/locales/<locale>/common.json. The English bundle is canonical; other locales are translated by the community.

The web app mirrors translations to apps/web/public/static/locales/ for client-side fetching. The script i18n.json and the workflow .github/workflows/i18n.yml automate the propagation. i18n-unused (configured by i18n-unused.config.js) catches dead keys.

When adding UI strings:

  1. Add the key to packages/i18n/locales/en/common.json (AGENTS.md mandate).
  2. Reference it via useLocale() / t(...) in the component.
  3. The mirror to apps/web/public/static/locales/en/common.json happens via the i18n workflow.

kysely

packages/kysely/types.ts is the generated Kysely-compatible type set produced by the prisma-kysely generator (declared in packages/prisma/schema.prisma). It is used wherever raw SQL is needed — primarily PBAC and analytics queries that don't fit the Prisma DSL well.

sms

packages/sms wraps Twilio (and any future SMS provider). Used by booking SMS reminders and 2FA flows. Cron jobs (cron-scheduleSMSReminders.yml, cron-scheduleWhatsappReminders.yml, cron-checkSmsPrices.yml) drive the reminder schedule.

types

packages/types/ holds shared TypeScript declarations that don't belong to a single domain:

  • Calendar.d.ts — the Calendar interface that every calendar app-store adapter implements.
  • EventManager.d.ts, Event.d.ts, Booking.d.ts, EventBusyDate.d.ts — booking pipeline types.
  • VideoApiAdapter.d.ts — video integration interface.
  • payment.d.ts, pricing.d.ts — payment + pricing types.

If you are working in a context where you need a Cal.diy-specific type that isn't generated by Prisma or Zod, this is where it usually lives.

tsconfig

packages/tsconfig/ is a set of shared tsconfig.json presets. Workspaces extend one of base.json, nextjs.json, react-library.json, or nestjs.json.

testing

packages/testing/ provides shared test fixtures and the booking scenario builder at packages/testing/src/lib/bookingScenario/bookingScenario.ts. This file alone is over 2,000 lines and is the foundation of the booking test suite.

debugging

packages/debugging/ exposes a debug-focused logger and helpers. Used sparingly inside packages/features/troubleshooter.

di

packages/di/ provides a micro DI container used by every domain's di/ directory. It supports interface-to-class binding, request scoping, and singletons. Tests inject mock implementations through this container.

coss-ui

packages/coss-ui/ (Community Open-Source UI) is a smaller token package shared between Cal.diy and the marketing site. It overlaps with @calcom/ui. The scripts/pull-coss-ui-components.ts script syncs components.

config

packages/config/ aggregates runtime configuration helpers — feature flags defaults, domain redirects, and similar.

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

Other packages – Cal.com wiki | Factory