cal.diy

(★ 47,849)

Scheduling infrastructure for absolutely everyone.

File Explorer

Showing a partial file list — download the zip above to see everything.

  • .dockerignore
  • .editorconfig
  • .env.appStore.example
  • .env.example
  • .gitattributes
  • .gitignore
  • .gitpod.yml
  • .kodiak.toml
  • .npmrc
  • .yarnrc.yml
  • AGENTS.md
  • app.json
  • CLAUDE.md
  • CODE_OF_CONDUCT.md
  • CONTRIBUTING.md
  • Dockerfile
  • LICENSE
  • PERMISSIONS.md
  • Procfile
  • README.md
  • SECURITY.md
  • SPEC-WORKFLOW.md

# Installation Guide

node
Prerequisites

Setup Steps

git clone https://github.com/calcom/cal.diy.git

Clone the repository locally.

yarn

Install project package dependencies.

cp .env.example .env

Create the environment configuration file.

yarn workspace @calcom/prisma db-migrate

Run database migrations for the development environment.

yarn dx

Run local dev environment and DB using docker.

Key Commands

yarn

Install all package dependencies for the project.

yarn dx

Start local development environment including Postgres and test users using Docker.

yarn workspace @calcom/prisma db-migrate

Apply database migrations using the Prisma schema for development.

yarn workspace @calcom/prisma db-deploy

Deploy database migrations for a production environment.

You must configure NEXTAUTH_SECRET and CALENDSO_ENCRYPTION_KEY environment variables in the .env file.

# Use via CDN

jsDelivr

jsDelivr serves any public GitHub repository as a CDN with zero setup. Pick a version and a file to get a ready-to-paste link and snippet.

Showing a partial file list.

Release Timeline

Command Glossary

Commands referenced in this DOCs, explained below.

🔍

username

View Details ▼

Manage users.
Accessed in configuration mode.

username {{admin}} privilege 15 secret {{password}}

Set up an admin account:

🔍

createDB

View Details ▼

Create a PostgreSQL database.

createdb {{database_name}}

Create a database owned by the current user:

createdb {{[-O|--owner]}} {{username}} {{database_name}} '{{description}}'

Create a database owned by a specific user with a description:

createdb {{[-T|--template]}} {{template_name}} {{database_name}}

Create a database from a template:

🔍

docker compose down

View Details ▼

Stop and remove containers, networks, images, and volumes created by `docker compose up`.

docker compose down

Stop and remove all containers and networks:

docker compose down --rmi all

Stop and remove containers, networks, and all images used by services:

docker compose down --rmi local

Stop and remove containers, networks, and only images without a custom tag:

🔍

docker compose up

View Details ▼

Start and run Docker services defined in a Compose file.

docker compose up

Start all services defined in the docker-compose file:

docker compose up {{[-d|--detach]}}

Start services in the background (detached mode):

docker compose up --build

Start services and rebuild images before starting:

🔍

docker compose

View Details ▼

Run and manage multi container Docker applications.

docker compose ps

List all running containers:

docker compose up {{[-d|--detach]}}

Create and start all containers in the background using a `docker-compose.yml` file from the current directory:

docker compose up --build

Start all containers, rebuild if necessary:

🔍

docker pull

View Details ▼

This command is an alias of `docker image pull`.

tldr docker image pull

View documentation for the original command:

🔍

docker run

View Details ▼

This command is an alias of `docker container run`.

tldr docker container run

View documentation for the original command:

🔍

docker

View Details ▼

Manage Docker containers and images.
Some subcommands such as `container` and `image` have their own usage documentation.

docker {{[ps|container ls]}} {{[-a|--all]}}

List all Docker containers (running and stopped):

docker {{[run|container run]}} --name {{container_name}} {{image}}

Start a container from an image, with a custom name:

docker container {{start|stop}} {{container_name}}

Start or stop an existing container:

🔍

git clone

View Details ▼

Clone an existing repository.

git clone {{remote_repository_location}} {{path/to/directory}}

Clone an existing repository into a new directory (the default directory is the repository name):

git clone --recursive {{remote_repository_location}}

Clone an existing repository and its submodules:

git clone {{[-n|--no-checkout]}} {{remote_repository_location}}

Clone only the `.git` directory of an existing repository:

🔍

git pull

View Details ▼

Fetch branch from a remote repository and merge it to local repository.

git pull

Download changes from default remote repository and merge it:

git pull {{[-r|--rebase]}}

Download changes from default remote repository and use fast-forward:

git pull {{remote_name}}

Download changes from a specific remote repository:

🔍

npx

View Details ▼

This command is an alias of `npm exec`.

tldr npm exec

View documentation for the original command:

🔍

nvm

View Details ▼

Install, uninstall, or switch between Node.js versions under the fish shell.
Supports version numbers like "12.8" or "v16.13.1", and labels like "stable", "system", etc.

nvm install {{node_version}}

Install a specific version of Node.js:

nvm install {{node_version}}

Install a specific version of Node.js:

nvm use {{node_version}}

Use a specific version of Node.js in the current shell:

🔍

openssl rand

View Details ▼

Generate random bytes using a cryptographically secure PRNG.

openssl rand -hex 8

Generate an 8-byte (16 characters) hex string and write it to `stdout`:

openssl rand -base64 20

Generate 20 random bytes encoded in base64:

openssl rand -out {{path/to/file}} {{length}}

Generate random bytes and write them to a file (without encoding):

🔍

pass

View Details ▼

Store and read passwords or other sensitive data.
All data is GPG-encrypted, and managed with a Git repository.

pass init {{gpg_id_1 gpg_id_2 ...}}

Initialize (or re-encrypt) the storage using one or more GPG IDs:

pass insert {{[-m|--multiline]}} {{path/to/data}}

Save a new password and additional information (press `<Ctrl d>` on a new line to complete):

pass edit {{path/to/data}}

Edit an entry:

🔍

psql

View Details ▼

PostgreSQL client.

psql {{database}}

Connect to the database. By default, it connects to the local socket using port 5432 with the currently logged in user:

psql {{[-h|--host]}} {{host}} {{[-p|--port]}} {{port}} {{[-U|--username]}} {{username}} {{database}}

Connect to the database on given server host running on given port with given username, without a password prompt:

psql {{[-h|--host]}} {{host}} {{[-p|--port]}} {{port}} {{[-U|--username]}} {{username}} {{[-W|--password]}} {{database}}

Connect to the database; user will be prompted for password:

🔍

yarn

View Details ▼

JavaScript and Node.js package manager alternative.

yarn global add {{module_name}}

Install a module globally:

yarn install

Install all dependencies referenced in the `package.json` file (the `install` is optional):

yarn add {{module_name}}@{{version}}

Install a module and save it as a dependency to the `package.json` file (add `--dev` to save as a dev dependency):

🔍

pro

View Details ▼

Manage Ubuntu Pro services.

sudo pro attach

Connect your system to the Ubuntu Pro support contract:

pro status

Display the status of Ubuntu Pro services:

pro fix {{CVE-number}}

Check if the system is affected by a specific vulnerability (and apply a fix if possible):

// repository documentation