cal.com

Scheduling infrastructure for absolutely everyone.

HR・勤怠Calendlyの代替NOASSERTION
40,831 スター12,367 フォーク
AIによる要約
ひとことで言うと

予約・スケジュール管理を自社でホストできる、Calendlyに代わるオープンソースのスケジューリングツールです。

こんな方におすすめ

・企業:社内外のミーティング予約を一元管理し、ホワイトラベル(自社ブランド)で運用したい情報システム部門や営業チームに最適です。Google CalendarやZoomとの連携にも対応しています。 ・スタートアップ:顧客との商談やオンボーディング面談の予約を効率化でき、Docker Composeで手軽にセルフホストできるため、有料サービスの月額課金を避けながらブランドに合わせたカスタマイズが可能です。 ・個人事業主・フリーランス:コンサルティングやコーチングの予約ページを無料で運用でき、Stripe決済連携やワークフロー自動化にも対応しているため、一人でも本格的な予約管理ができます。

有料サービスとの違い

Calendlyは無料プランだと1種類のイベントのみで、チーム機能やブランドカスタマイズには月額10ドル以上の有料プランが必要です。Cal.comはセルフホストで完全無料、イベント数やメンバー数に制限がなく、ソースコードを自由に改変できるため、データ管理もカスタマイズも自社で完結できます。

プロジェクトについて

あらゆる人のためのスケジューリングインフラストラクチャ

オープンソースの Calendly 後継ツール。あなたが自分のデータ、ワークフロー、外観を完全にコントロールできます。

Calendly やその他のスケジューリングツールは素晴らしいです。私たちの生活を大幅に楽にしてくれました。ビジネスミーティング、セミナー、ヨガクラス、さらには家族との通話にも使っています。しかし、ほとんどのツールはコントロールやカスタマイズの点で非常に限られています。

そこで Cal.com の出番です。セルフホストまたは私たちがホスト。デザインからホワイトラベル対応。API 駆動で、あなた自身のドメインにデプロイ可能。イベントとデータを完全にコントロールできます。

受賞歴

Hacker News

Product Hunt

このプロジェクトは BrowserStack でテストされています

使用技術

お問い合わせ

商用のお問い合わせは営業チームにご連絡ください。

最新情報をお届け

Cal.com は 2021年9月15日に v.1.0 として公式ローンチし、これまでに大きな進歩を遂げました。このリポジトリの releases をウォッチして、今後のアップデート情報を受け取りましょう:

cal-star-github

はじめに

ローカルコピーを立ち上げて実行するには、以下の簡単な手順に従ってください。

前提条件

Cal.com を実行するために必要なもの:

  • Node.js(バージョン: >=18.x)
  • PostgreSQL(バージョン: >=13.x)
  • Yarn (推奨)

利用可能なインテグレーションのいずれかを有効にしたい場合は、それぞれの追加認証情報の取得が必要になる場合があります。詳細は下記のインテグレーションセクションをご覧ください。

開発

セットアップ

  1. リポジトリをクローン(またはフォーク https://github.com/calcom/cal.com/fork)。コードは AGPLv3 でライセンスされており、ネットワーク経由でソフトウェアとやり取りするユーザーにソースコードを提供する必要があります。これらの要件なしで商用利用するには、商用ライセンスを取得してください。

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

    Windows をお使いの場合は、管理者権限で gitbash で以下のコマンドを実行してください: > git clone -c core.symlinks=true https://github.com/calcom/cal.com.git 詳細はドキュメントをご覧ください。

  2. プロジェクトフォルダに移動

    cd cal.com
    
  3. yarn でパッケージをインストール

    yarn
    
  4. .env ファイルをセットアップ

    • .env.example.env にコピー
    • openssl rand -base64 32 でキーを生成し、.env ファイルの NEXTAUTH_SECRET に追加
    • openssl rand -base64 24 でキーを生成し、.env ファイルの CALENDSO_ENCRYPTION_KEY に追加

Windows ユーザー: Prisma エラー(unexpected character / in variable name)を回避するために、packages/prisma/.env シンボリックリンクを実際のコピーに置き換えてください:

# Git Bash / WSL
rm packages/prisma/.env && cp .env packages/prisma/.env
  1. Node のセットアップ Node のバージョンがドキュメントで指定されたプロジェクト要件を満たさない場合、"nvm"(Node Version Manager)を使用してプロジェクトが必要とするバージョンの Node を使用できます:

    nvm use
    

    最初に特定のバージョンをインストールしてから使用する必要がある場合があります:

    nvm install && nvm use
    

    nvm はこちらからインストールできます。

yarn dx でクイックスタート

  • Docker と Docker Compose のインストールが必要
  • いくつかのテストユーザーを含むローカル Postgres インスタンスが起動されます - 認証情報はコンソールに表示されます
yarn dx

作成されるデフォルトの認証情報:

メール パスワード ロール
free@example.com free 無料ユーザー
pro@example.com pro Pro ユーザー
trial@example.com trial トライアルユーザー
admin@example.com ADMINadmin2022! 管理者ユーザー
onboarding@example.com onboarding オンボーディング未完了

これらの認証情報を使用して http://localhost:3000 にサインインできます。

ヒント: シードされたユーザーの完全なリストと詳細を表示するには、yarn db-studio を実行して http://localhost:5555 にアクセスしてください。

開発のヒント

  1. シェルスクリプトに export NODE_OPTIONS="--max-old-space-size=16384" を追加して、Node プロセスのメモリ制限を増やします。代わりに、アプリを実行する前にターミナルでこれを実行することもできます。16384 を Node プロセスに割り当てたい RAM の量に置き換えてください。

  2. .env ファイルに NEXT_PUBLIC_LOGGER_LEVEL={level} を追加して、すべての tRPC クエリとミューテーションのログの詳細度を制御します。 {level} は以下のいずれかです:

    0 silly
    1 trace
    2 debug
    3 info
    4 warn
    5 error
    6 fatal

    .env ファイルで NEXT_PUBLIC_LOGGER_LEVEL={level} を設定すると、そのレベル以上のログが有効になります。仕組みは以下の通りです:

    ロガーは指定されたレベル以上のすべてのログを含みます。例えば:

    • NEXT_PUBLIC_LOGGER_LEVEL=2 に設定すると、レベル 2(debug)以上、つまりレベル 2(debug)、3(info)、4(warn)、5(error)、6(fatal)がログに記録されます。
    • NEXT_PUBLIC_LOGGER_LEVEL=3 に設定すると、レベル 3(info)以上、つまりレベル 3(info)、4(warn)、5(error)、6(fatal)がログに記録されますが、レベル 2(debug)とレベル 1(trace)は無視されます。
echo 'NEXT_PUBLIC_LOGGER_LEVEL=3' >> .env

例えば、ログレベルを info に設定する場合。

Gitpod セットアップ

  1. 下のボタンをクリックして、このプロジェクトを Gitpod で開きます。

  2. 必要な依存関係がすべてインストールされた完全に設定されたワークスペースがブラウザで開きます。

Gitpod で開く

手動セットアップ

  1. .env ファイルで環境変数を設定します。<user><pass><db-host><db-port> をそれぞれの値に置き換えてください。

    DATABASE_URL='postgresql://<user>:<pass>@<db-host>:<db-port>'
    
    1. ダウンロードしてローカルに PostgreSQL をインストールします(まだの場合)。

    2. createDB <DB名> を実行して独自のローカル DB を作成します。

    3. 作成した DB で psql シェルを開きます:psql -h localhost -U postgres -d <DB名>

    4. psql シェル内で \conninfo を実行します。以下の情報が表示されます。 image

    5. すべての情報を抽出して DATABASE_URL に追加します。URL は postgresql://postgres:postgres@localhost:5432/Your-DB-Name のようになります。ポートは設定可能で、必ずしも 5432 である必要はありません。

    ローカル DB を作成したくない場合は、railway.app、Northflank、render などのサービスの利用も検討できます。

  2. .envDATABASE_URL をコピーして .env.appStore に貼り付けます。

  3. Prisma スキーマ(packages/prisma/schema.prisma にあります)を使用してデータベースをセットアップ

    開発環境では以下を実行:

    yarn workspace @calcom/prisma db-migrate
    

    本番環境では以下を実行:

    yarn workspace @calcom/prisma db-deploy
    
  4. mailhog を実行して開発中に送信されたメールを確認

    注意: E2E_TEST_MAILHOG_ENABLED が "1" の場合に必要

    docker pull mailhog/mailhog
    docker run -d -p 8025:8025 -p 1025:1025 mailhog/mailhog
    
  5. 実行(開発モード)

    yarn dev
    

最初のユーザーのセットアップ

アプローチ1
  1. Prisma Studio を開いてデータベースの内容を確認または変更:

    yarn db-studio
    
  2. User モデルをクリックして新しいユーザーレコードを追加。

  3. emailusernamepassword フィールドを入力し、metadata を空の {} に設定します(BCrypt でパスワードを暗号化することを忘れずに)。Save 1 Record をクリックして最初のユーザーを作成します。

    新しいユーザーはデフォルトで TRIAL プランに設定されます。必要に応じて packages/prisma/schema.prisma ファイルでこの動作を調整できます。

  4. ブラウザで http://localhost:3000 を開き、作成したユーザーでログインします。

アプローチ2

以下を実行してローカル DB をシード

cd packages/prisma
yarn db-seed

上記のコマンドでローカル DB にダミーユーザーが追加されます。

E2E テスト

環境変数 NEXTAUTH_URL が正しい値に設定されていることを確認してください。ローカルで実行する場合、.env.example 内のドキュメントにあるように、値は http://localhost:3000 にする必要があります。

# ターミナルで実行:
yarn test-e2e

# 最後の HTML レポートを開く:
yarn playwright show-report test-results/reports/playwright-html-report

問題の解決

E2E テストブラウザがインストールされていない

npx playwright install を実行してテストブラウザをダウンロードし、yarn test-e2e 実行時の以下のエラーを解決します:

Executable doesn't exist at /Users/alice/Library/Caches/ms-playwright/chromium-1048/chrome-mac/Chromium.app/Contents/MacOS/Chromium

以前のバージョンからのアップグレード

  1. 最新バージョンをプル:

    git pull
    
  2. 依存関係の追加/更新/削除を確認

    yarn
    
  3. 以下のコマンドのいずれか1つを実行してデータベースマイグレーションを適用:

    開発環境では以下を実行:

    yarn workspace @calcom/prisma db-migrate
    

    (これは場合によっては開発データベースをクリアする可能性があります)

    本番環境では以下を実行:

    yarn workspace @calcom/prisma db-deploy
    
  4. .env 変数の変更を確認

    yarn predev
    
  5. サーバーを起動。開発環境では:

    yarn dev
    

    本番ビルドの場合は、例えば:

    yarn build
    yarn start
    
  6. 新しいバージョンをお楽しみください。

AI アシスト開発

このリポジトリには AI コーディングアシスタントの設定が含まれています。すべての AI 設定は agents/ ディレクトリに単一の情報源として格納されています。

構造

agents/
├── rules/           # モジュール化されたエンジニアリングルール
├── skills/          # 再利用可能なスキル/プロンプト
├── commands.md      # コマンドリファレンス
└── knowledge-base.md # ドメイン知識

AGENTS.md            # メインのエージェント指示

ツール設定

シンボリックリンクを使用してツール間で設定を共有しています:

.claude/
├── rules -> ../agents/rules
└── skills -> ../agents/skills

.cursor/
├── rules -> ../agents/rules
└── skills -> ../agents/skills

他のツールの使用

他の AI ツール(Windsurf、Goose、OpenCode など)をお好みの場合、独自のドットフォルダを作成して git から除外できます:

# .git/info/exclude に追加(ローカルのみ、コミットされません)
.windsurf/
.goose/
.opencode/

これにより、個人的なツールの好みを許容しながらリポジトリをクリーンに保てます。

デプロイメント

Docker

公式サポート: チームはこのリポジトリの Dockerfile と docker-compose リソースを公式にサポートします。

重要: Cal.com はこれらの Docker リソースを使用したインストールをサポートしません。Docker 設定を提供・維持していますが、Docker ベースのインストールのサポートはユーザーの責任です。

このイメージは DockerHub の https://hub.docker.com/r/calcom/cal.com で見つかります。

ARM ユーザーへの注意: イメージのプルには {version}-arm サフィックスを使用してください。例:docker pull calcom/cal.com:v5.6.19-arm

要件

サーバー/システムに dockerdocker compose がインストールされていることを確認してください。両方とも Docker Desktop や Rancher Desktop を含むほとんどの Docker ユーティリティによってインストールされます。

注意:Docker のドキュメントによると、ハイフンなしの docker compose が docker-compose を使用する主要な方法になっています。

(ほとんどのユーザー向け)Docker Compose で Cal.com を実行

Cal.com を評価中、または最小限の変更で実行する場合は、このオプションが適しています。

  1. calcom/cal.com をクローン

    git clone --recursive https://github.com/calcom/cal.com.git
    
  2. ディレクトリに移動

    cd cal.com
    
  3. 設定を準備:.env.example.env にリネームして .env を更新

    cp .env.example .env
    

    ほとんどの設定はそのままで構いませんが、設定オプションについては下記の重要な実行時変数をご覧ください。

    必須のシークレットキー

    開始前に、NEXTAUTH_SECRETCALENDSO_ENCRYPTION_KEY のセキュアな値を生成する必要があります。本番環境でデフォルトの secret プレースホルダーを使用することはセキュリティリスクです。

    NEXTAUTH_SECRET(Cookie 暗号化キー)を生成:

    openssl rand -base64 32
    

    CALENDSO_ENCRYPTION_KEY(AES256 用に 32 バイトが必要)を生成:

    openssl rand -base64 24
    

    .env ファイルをこれらの値で更新:

    NEXTAUTH_SECRET=<your_generated_secret>
    CALENDSO_ENCRYPTION_KEY=<your_generated_key>
    

    プッシュ通知(VAPID キー) 以下のようなエラーが表示される場合:

    Error: No key set vapidDetails.publicKey
    

    Web Push の環境変数が不足しています。 NEXT_PUBLIC_VAPID_PUBLIC_KEYVAPID_PRIVATE_KEY を生成して設定する必要があります。

    以下で生成:

    npx web-push generate-vapid-keys
    

    .env ファイルを更新:

    NEXT_PUBLIC_VAPID_PUBLIC_KEY=your_public_key_here
    VAPID_PRIVATE_KEY=your_private_key_here
    

    .env.example には実際のキーではなくプレースホルダーのみをコミットしてください。

    .env ファイルの適切な値を更新してから続行します。

  4. (オプション)以下のコマンドでイメージをプリプル:

    docker compose pull
    

    これは docker-compose.yaml ファイルの image: で指定されたデフォルトのイメージロケーションを使用します。

    注意:サポートのために、デフォルトでは Scarf.sh がダウンロードメトリクスのレジストリプロキシとして使用されます。

  5. docker compose で Cal.com を起動

    (ほとんどのユーザーおよび初回実行時)ローカル PostgreSQL データベース、Cal.com Web アプリ、Prisma Studio を含む完全なスタックを実行するには:

    docker compose up -d
    

    リモートデータベースに対して Cal.com Web アプリと Prisma Studio を実行するには、DATABASE_URL が利用可能なデータベース用に設定されていることを確認して実行:

    docker compose up -d calcom studio
    

    Cal.com Web アプリのみを実行するには、DATABASE_URL が利用可能なデータベース用に設定されていることを確認して実行:

    docker compose up -d calcom
    

    注意:デバッグのためにアタッチモードで実行するには、実行コマンドから -d を削除してください。

  6. ブラウザで http://localhost:3000 またはあなたが定義した NEXT_PUBLIC_WEBAPP_URL を開きます。初回 Cal.com 実行時にセットアップウィザードが初期化されます。最初のユーザーを定義すれば、使用開始です!

    初回セットアップの注意(カレンダー統合): セットアップウィザード中に、必須に見える「カレンダーを接続」ステップに遭遇する場合があります。この時点でカレンダーを接続したくない場合は、<NEXT_PUBLIC_WEBAPP_URL>/event-types に直接ナビゲートしてこのステップをスキップできます。カレンダー統合は後から設定 > インテグレーションページから追加できます。

Cal.com のアップデート

  1. Cal.com スタックを停止

    docker compose down
    
  2. 最新の変更をプル

    docker compose pull
    
  3. 必要に応じて env 変数を更新。

  4. Cal.com スタックを再起動

    docker compose up -d
    

(上級ユーザー向け)Cal.com のビルドと実行

  1. calcom/cal.com をクローン

    git clone https://github.com/calcom/cal.com.git
    
  2. ディレクトリに移動

    cd cal.com
    
  3. .env.example.env にリネームして .env を更新

    設定オプションについては下記のビルド時変数をご覧ください。.env ファイルの適切な値を更新してから続行します。

  4. Cal.com Docker イメージをビルド:

    注意:アプリケーション設定の要件により、現在ビルドプロセス中に利用可能なデータベースが必要です。

    a) 別の場所でホスティングする場合は、.env ファイルで DATABASE_URL を設定し、次のステップをスキップ

    b) ローカルまたは一時的なデータベースが必要な場合は、docker compose でローカルデータベースを起動

    docker compose up -d database
    
  5. docker compose で Cal.com をビルド(ビルド時にネットワークブリッジの使用を許可するために DOCKER_BUILDKIT=0 を指定する必要があります。この要件は将来削除されます)

    DOCKER_BUILDKIT=0 docker compose build calcom
    
  6. docker compose で Cal.com を起動

    (ほとんどのユーザーおよび初回実行時)ローカル PostgreSQL データベース、Cal.com Web アプリ、Prisma Studio を含む完全なスタックを実行するには:

    docker compose up -d
    

    リモートデータベースに対して Cal.com Web アプリと Prisma Studio を実行するには、DATABASE_URL が利用可能なデータベース用に設定されていることを確認して実行:

    docker compose up -d calcom studio
    

    Cal.com Web アプリのみを実行するには、DATABASE_URL が利用可能なデータベース用に設定されていることを確認して実行:

    docker compose up -d calcom
    

    注意:デバッグのためにアタッチモードで実行するには、実行コマンドから -d を削除してください。

  7. ブラウザで http://localhost:3000 またはあなたが定義した NEXT_PUBLIC_WEBAPP_URL を開きます。初回 Cal.com 実行時にセットアップウィザードが初期化されます。最初のユーザーを定義すれば、使用開始です!

設定

重要な実行時変数

これらの変数は実行時にも提供する必要があります

変数 説明 必須 デフォルト
DATABASE_URL 認証情報付きのデータベース URL - コネクションプーラーを使用する場合はそちらを指定 必須 postgresql://unicorn_user:magical_password@database:5432/calendso
CALCOM_LICENSE_KEY Enterprise ライセンスキー オプション
NEXT_PUBLIC_WEBAPP_URL サイトのベース URL。注意:この値がビルド時の値と異なる場合、コンテナ起動時にわずかな遅延が発生します(静的ビルドファイルの更新のため)。 オプション http://localhost:3000
NEXTAUTH_URL 認証サーバーの場所。デフォルトでは Cal.com Docker インスタンス自体。 オプション {NEXT_PUBLIC_WEBAPP_URL}/api/auth
NEXTAUTH_SECRET Cookie 暗号化キー。ビルド変数と一致する必要があります。生成: openssl rand -base64 32 必須 secret
CALENDSO_ENCRYPTION_KEY 認証暗号化キー(AES256 用に 32 バイト)。ビルド変数と一致する必要があります。生成: openssl rand -base64 24 必須 secret
ビルド時変数

イメージを自分でビルドする場合、これらの変数は Docker ビルド時に提供する必要があり、.env ファイルの更新で提供できます。現在、これらの変数の変更が必要な場合は、自分のイメージをビルドして公開する手順に従う必要があります。

これらの変数の更新は評価には必要ありませんが、本番運用には必要です。変数の生成手順は Cal.com の手順をご覧ください。

変数 説明 必須 デフォルト
DATABASE_URL 認証情報付きのデータベース URL - コネクションプーラーを使用する場合はそちらを指定 必須 postgresql://unicorn_user:magical_password@database:5432/calendso
MAX_OLD_SPACE_SIZE Nodejs/NPM ビルドオプションに必要 必須 4096
NEXT_PUBLIC_LICENSE_CONSENT ライセンス同意 - true/false 必須
NEXTAUTH_SECRET Cookie 暗号化キー 必須 secret
CALENDSO_ENCRYPTION_KEY 認証暗号化キー 必須 secret
NEXT_PUBLIC_WEBAPP_URL 静的ファイルに注入されるベース URL オプション http://localhost:3000
NEXT_PUBLIC_WEBSITE_TERMS_URL 利用規約ウェブサイトのカスタム URL オプション https://cal.com/terms
NEXT_PUBLIC_WEBSITE_PRIVACY_POLICY_URL プライバシーポリシーウェブサイトのカスタム URL オプション https://cal.com/privacy
NEXT_PUBLIC_API_V2_URL v2 API の URL。Cal.com Platform を使用したカスタムインテグレーションまたはカスタム予約体験の場合のみ必要 オプション
CALCOM_TELEMETRY_DISABLED Cal.com による匿名使用データの収集を許可(1 に設定で無効化) オプション
NEXT_PUBLIC_SINGLE_ORG_SLUG ORGANIZATIONS_ENABLED が true の場合に必須 オプション
ORGANIZATIONS_ENABLED Enterprise または Organizations プランに使用 オプション

トラブルシューティング

SSL エッジ終端

SSL 証明書を処理するロードバランサーの背後で実行する場合、リクエストが拒否されないように環境変数 NODE_TLS_REJECT_UNAUTHORIZED=0 を追加する必要があります。これは何をしているか理解しており、サービスへのトラフィックを転送するサービス/ロードバランサーを信頼できる場合にのみ行ってください。

Failed to commit changes: Invalid 'prisma.user.create()'

特定のバージョンでは、metadata フィールドが空の場合にユーザー作成に問題が発生する場合があります。空の json オブジェクト {} をフィールド値として使用すると、この問題が解決するはずです。また、id フィールドは自動インクリメントされるため、id の値を空にすることも試してみてください。

CLIENT_FETCH_ERROR

このエラーが発生した場合、サーバーのデフォルトの Auth コールバックが WEBAPP_URL をベース URL として使用している方法に原因がある可能性があります。コンテナはローカルマシンと同じ DNS にアクセスできるとは限らないため、自身に解決するように設定する必要があります。NEXTAUTH_URL=http://localhost:3000/api/auth を設定してバックエンドが自身にループバックするようにすることで修正できる場合があります。

Railway

Railway にデプロイ

上のボタンを使用して Railway に Cal.com をデプロイできます。Railway チームも Cal.com のプラットフォームへのデプロイに関する詳細なブログ記事を公開しています。

Northflank

Northflank にデプロイ

上のボタンを使用して Northflank に Cal.com をデプロイできます。Northflank チームも Cal.com のプラットフォームへのデプロイに関する詳細なブログ記事を公開しています。

Vercel

現在、このアプリケーションを Vercel でデプロイするには、無料プランのサーバーレス関数数の制限により Vercel Pro プランが必要です。

Vercel でデプロイ

Render

Render にデプロイ

Elestio

Elestio にデプロイ

ロードマップ

提案された機能(および既知の問題)のリストはロードマッププロジェクトをご覧ください。計画されたタグ付きリリースを確認するためにビューを変更できます。

ライセンス

Cal.com, Inc. は商用オープンソース企業であり、このオープンソースリポジトリの一部には商用ライセンスが必要です。このコンセプトは「Open Core」と呼ばれ、コア技術(99%)は AGPLv3 の下で完全にオープンソースであり、残りの 1% は商用ライセンス("/ee" Enterprise Edition)でカバーされています。エンタープライズ機能を必要とする大規模な組織にのみ関連するものと考えています。エンタープライズ機能は Cal.com, Inc. のフルタイム雇用のコアエンジニアリングチームによって構築されています。報酬については https://cal.com/open をご覧ください。

[!NOTE] 私たちの哲学はシンプルです。すべての「シングルプレイヤー API」は AGPLv3 の下でオープンソースです。すべての商用「マルチプレイヤー API」は商用ライセンスの下にあります。

AGPLv3 EE
商用目的でのセルフホスト
プライベートにクローン
公開フォーク
CLA 必要
公式サポート
プライベートな派生物
SSO
管理パネル
なりすまし
マネージドイベントタイプ
Organizations
支払い
プラットフォーム
チーム
ユーザー
ビデオ
ワークフロー

[!TIP] 私たちはコミュニティと密に連携し、何をオープンにし何を商用にすべきかについて常にフィードバックを求めています。このリストは固定されたものではなく、過去に商用からオープンに移行したものもあります。何か問題があると感じたらディスカッションを開いてください。

リポジトリアクティビティ

コントリビュート

コントリビュートを歓迎します!タイポの修正、ドキュメントの改善、新機能の構築など、あなたの助けが Cal.com をより良くします。

小さな改善でも重要です - ご協力ありがとうございます!

Good First Issues

help wanted ラベルのイシューには、比較的限られたスコープの小さな機能やバグが含まれています。ここから始めて経験を積み、コントリビューションプロセスに慣れるのに最適な場所です。

バウンティ

コントリビューター

翻訳

コードは書けないけどコントリビュートしたい場合は、ディスカッションに参加して #Translate チャンネルで翻訳したい言語をお知らせください。

コンテンツセキュリティポリシーの有効化

  • CSP_POLICY="non-strict" 環境変数を設定すると、style-src の unsafe-inline を除く Strict CSP が有効になります。インスタンスにカスタム変更がある場合、インスタンスを CSP 互換にするためにコードの変更が必要になる場合があります。現在、ログインページでのみ strict CSP が有効で、他の SSR ページではレポートのみモードで有効化されて潜在的な問題を検出しています。SSG ページではまだサポートされていません。

シングル組織モード

詳細なドキュメント(スクリーンショット付き)についてはこちらのドキュメントを参照してください。

インテグレーション

Google API 認証情報の取得

  1. Google API Console を開きます。Google Cloud サブスクリプションにプロジェクトがない場合は、先に進む前に作成する必要があります。ダッシュボードペインで「API とサービスを有効にする」を選択します。
  2. 検索ボックスに「calendar」と入力し、Google Calendar API の検索結果を選択します。
  3. 選択した API を有効にします。
  4. 次に、サイドペインから OAuth 同意画面に移動します。アプリタイプ(内部または外部)を選択し、最初のページで基本的なアプリの詳細を入力します。
  5. スコープの2ページ目で「スコープを追加または削除」を選択します。Calendar.event を検索し、スコープ値 .../auth/calendar.events.../auth/calendar.readonly のスコープを選択して「更新」を選択します。
  6. 3ページ目(テストユーザー)で、使用する Google アカウントを追加します。ウィザードの最後のページで詳細が正しいことを確認し、同意画面が設定されます。
  7. サイドペインから認証情報を選択し、「認証情報を作成」を選択します。OAuth クライアント ID オプションを選択します。
  8. アプリケーションタイプとして「ウェブアプリケーション」を選択します。
  9. 承認済みリダイレクト URI の下で「URI を追加」を選択し、<Cal.com URL>/api/integrations/googlecalendar/callback<Cal.com URL>/api/auth/callback/google の URI を追加します(Cal.com URL をアプリケーションが実行される URI に置き換えてください)。
  10. キーが作成され、認証情報ページにリダイレクトされます。OAuth 2.0 クライアント ID の下にある新しく生成されたクライアント ID を選択します。
  11. 「JSON をダウンロード」を選択します。このファイルの内容をコピーして、.env ファイルの GOOGLE_API_CREDENTIALS キーの値として JSON 文字列全体を貼り付けます。

Cal.com アプリストアに Google カレンダーを追加

Google 認証情報を追加した後、Google Calendar アプリをアプリストアに追加できます。 以下を実行してアプリストアを再構築できます

cd packages/prisma
yarn seed-app-store

Google Calendar アプリを有効にするにはさらにいくつかのステップを完了する必要があります。 「Google API 認証情報の取得」セクションを完了していることを確認してから、以下を実行してください

  1. リダイレクト URL <Cal.com URL>/api/auth/callback/google を追加
  2. 「OAuth 同意画面」の下で「アプリを公開」をクリック

Microsoft Graph クライアント ID とシークレットの取得

  1. Azure アプリ登録を開き、「新規登録」を選択
  2. アプリケーションに名前を付ける
  3. このアプリケーションを使用できるユーザーまたはアクセスできる API任意の組織ディレクトリ内のアカウント(任意の Azure AD ディレクトリ - マルチテナント) に設定
  4. Web リダイレクト URI を <Cal.com URL>/api/integrations/office365calendar/callback に設定(Cal.com URL をアプリケーションが実行される URI に置き換え)
  5. アプリケーション(クライアント)ID を .env の MS_GRAPH_CLIENT_ID 属性値として使用
  6. 証明書とシークレットをクリックして新しいクライアントシークレットを作成し、その値を MS_GRAPH_CLIENT_SECRET 属性として使用

Zoom クライアント ID とシークレットの取得

  1. Zoom Marketplace を開き、Zoom アカウントでサインイン。
  2. 右上の「Develop」=>「Build App」をクリック。
  3. 「General App」を選択し、「Create」をクリック。
  4. アプリに名前を付ける。
  5. 「アプリの管理方法を選択」で「User-managed app」を選択。
  6. Zoom App Marketplace にアプリを公開するオプションが表示された場合は、選択を解除。
  7. Client ID と Client Secret を .env ファイルの ZOOM_CLIENT_IDZOOM_CLIENT_SECRET フィールドにコピー。
  8. 「OAuth Information」の「OAuth Redirect URL」を <Cal.com URL>/api/integrations/zoomvideo/callback に設定(Cal.com URL をアプリケーションが実行される URI に置き換え)。
  9. 上記のリダイレクト URL を許可リスト URL としても追加し、「Subdomain check」を有効にします。フォームの下に「saved」と表示されていることを確認。
  10. アプリの基本情報を提供する必要はありません。代わりに「Scopes」をクリックし、「+ Add Scopes」をクリック。左側で、
    1. 「Meeting」カテゴリをクリックし、スコープ meeting:write:meeting をチェック。
    2. 「User」カテゴリをクリックし、スコープ user:read:settings をチェック。
  11. 「Done」をクリック。
  12. これで完了です。Cal.com の設定で簡単に Zoom インテグレーションを追加できます。

Daily API 認証情報の取得

  1. Daily.co パートナーシップフォームにアクセスして情報を入力
  2. ダッシュボード内で developers タブに移動
  3. API キーをコピー
  4. .env ファイルの DAILY_API_KEY フィールドに API キーを貼り付け
  5. Daily Scale Plan をお持ちの場合は、ビデオ録画などの機能を使用するために DAILY_SCALE_PLAN 変数を true に設定

Basecamp クライアント ID とシークレットの取得

  1. 37 Signals Integrations Dashboard にアクセスしてサインイン。
  2. 「Register one now」リンクをクリックして新しいアプリケーションを登録。
  3. 会社の詳細を入力。
  4. 統合する製品として Basecamp 4 を選択。
  5. OAuth のリダイレクト URL を <Cal.com URL>/api/integrations/basecamp3/callback に設定(Cal.com URL をアプリケーションが実行される URI に置き換え)。
  6. 完了をクリックし、Client ID とシークレットを BASECAMP3_CLIENT_IDBASECAMP3_CLIENT_SECRET フィールドにコピー。
  7. BASECAMP3_CLIENT_SECRET 環境変数を {your_domain} ({support_email}) に設定。 例:Cal.com (support@cal.com)

HubSpot クライアント ID とシークレットの取得

  1. HubSpot Developer を開き、アカウントにサインインするか新規作成。
  2. Developer アカウントページのホームから「Manage apps」に移動。
  3. 右上の「Create legacy app」ボタンをクリックして public app を選択。
  4. 「App info」タブに任意の情報を入力
  5. 「Auth」タブに移動
  6. Client ID と Client Secret を .env ファイルの HUBSPOT_CLIENT_IDHUBSPOT_CLIENT_SECRET フィールドにコピー。
  7. OAuth のリダイレクト URL を <Cal.com URL>/api/integrations/hubspot/callback に設定(Cal.com URL をアプリケーションが実行される URI に置き換え)。
  8. ページ下部の「Scopes」セクションで、crm.objects.contactscrm.lists のスコープの「Read」と「Write」を選択。
  9. 下部フッターの「Save」ボタンをクリック。
  10. これで完了です。Cal.com で作成された予約が HubSpot のコンタクトのミーティングとして表示されます。

Webex クライアント ID とシークレットの取得

Webex Readme をご覧ください

ZohoCRM クライアント ID とシークレットの取得

  1. Zoho API Console を開き、アカウントにサインインするか新規作成。
  2. API コンソールページから「Applications」に移動。
  3. 右上の「ADD CLIENT」ボタンをクリックして「Server-based Applications」を選択。
  4. 「Client Details」タブに任意の情報を入力
  5. 「Client Secret」タブに移動。
  6. Client ID と Client Secret を .env ファイルの ZOHOCRM_CLIENT_IDZOHOCRM_CLIENT_SECRET フィールドにコピー。
  7. OAuth のリダイレクト URL を <Cal.com URL>/api/integrations/zohocrm/callback に設定(Cal.com URL をアプリケーションが実行される URI に置き換え)。
  8. 「Settings」セクションで、すべてのデータセンターで同じ OAuth 認証情報を使用する場合は「Multi-DC」オプションをチェック。
  9. 下部フッターの「Save」/「UPDATE」ボタンをクリック。
  10. これで完了です。Cal.com の設定で簡単に ZohoCRM インテグレーションを追加できます。

Zoho Calendar クライアント ID とシークレットの取得

こちらの手順に従ってください

Zoho Bigin クライアント ID とシークレットの取得

こちらの手順に従ってください

Pipedrive クライアント ID とシークレットの取得

こちらの手順に従ってください

Unkey によるレート制限

Cal.com はレート制限に Unkey を使用しています。これはオプション機能であり、テストやセルフホスティングには必須ではありません。

レート制限を有効にしたい場合:

  1. unkey.com でアカウントにサインアップ
  2. ratelimit.create_namespaceratelimit.limit の権限を持つ Root キーを作成
  3. .env ファイルの UNKEY_ROOT_KEY フィールドに Root キーをコピー

注意:Unkey を設定しない場合、Cal.com はレート制限なしで通常通り動作します。

ワークフロー

メールリマインダー用の SendGrid のセットアップ

  1. SendGrid アカウントを作成 (https://signup.sendgrid.com/)
  2. Settings -> API keys に移動して API キーを作成
  3. .env ファイルの SENDGRID_API_KEY フィールドに API キーをコピー
  4. Settings -> Sender Authentication に移動してシングルセンダーを認証
  5. .env ファイルの SENDGRID_EMAIL フィールドに認証済みメールアドレスをコピー
  6. .env ファイルの NEXT_PUBLIC_SENDGRID_SENDER_NAME フィールドにカスタム送信者名を追加(フォールバックは Cal.com)

SMS リマインダー用の Twilio のセットアップ

  1. Twilio アカウントを作成 (https://twilio.com/try-twilio)
  2. 「Get a Twilio phone number」をクリック
  3. .env ファイルの TWILIO_SID フィールドに Account SID をコピー
  4. .env ファイルの TWILIO_TOKEN フィールドに Auth Token をコピー
  5. .env ファイルの TWILIO_PHONE_NUMBER フィールドに Twilio 電話番号をコピー
  6. .env ファイルの NEXT_PUBLIC_SENDER_ID フィールドに独自の送信者 ID を追加(フォールバックは Cal.com)
  7. メッセージングサービスを作成(Develop -> Messaging -> Services)
  8. メッセージングサービスに任意の名前を付ける
  9. 「Add Senders」をクリック
  10. 送信者タイプとして電話番号を選択
  11. リストされた電話番号を追加
  12. 他のフィールドはそのまま
  13. セットアップを完了し、「View my new Messaging Service」をクリック
  14. .env ファイルの TWILIO_MESSAGING_SID フィールドに Messaging Service SID をコピー
  15. 認証サービスを作成
  16. .env ファイルの TWILIO_VERIFY_SID フィールドに Verify Service SID をコピー

Changesets

changesets を使用してチェンジログの生成と公開パッケージの公開を行っています(private: true のパッケージは無視されます)。

良い readme の例は atoms readme です。すべての公開パッケージは:

  1. changesets を使用する際にセマンティックバージョニングに従う必要があります。
  2. 破壊的変更を ❗️Breaking change でマークする必要があります。

謝辞

Cal.com を支える素晴らしいプロジェクトに特別な感謝を:

Cal.com はオープンスタートアップであり、Jitsu(オープンソースの Segment 代替)がほとんどの使用メトリクスの追跡を支援しています。

ar translation bg translation cs translation de translation el translation en translation es translation es-419 translation fr translation he translation hu translation it translation ja translation ko translation nl translation no translation pl translation pt translation pt-BR translation ro translation ru translation sr translation sv translation tr translation uk translation vi translation zh-CN translation zh-TW translation