calendso - 絶対にすべての人のためのスケジューリング インフラストラクチャ。

(Scheduling infrastructure for absolutely everyone.)

Created at: 2021-03-22 21:47:42
Language: TypeScript
License: MIT

ロゴ

Cal.com (旧 Calendso)

オープンソースの Calendly の代替。
詳細 »

Slack · ウェブサイト · 問題 · ロードマップ

Cal.com Slack に参加する 商品探し アップタイム Github スター ハッカーニュース ライセンス 1 か月あたりのコミット数 価格 じつ追跡 在庫確認

プロジェクトについて

予約画面

すべての人のためのスケジューリング インフラストラクチャ

オープン ソースの Calendly の代替。自身のデータ、ワークフロー、および外観を担当します。

Calendly やその他のスケジューリング ツールは素晴らしいものです。それは私たちの生活を大幅に楽にしてくれました。ビジネス会議、セミナー、ヨガのクラス、さらには家族との電話にも使用しています。ただし、ほとんどのツールは、制御とカスタマイズに関して非常に制限されています。

そこで登場するのが Cal.com です。自己ホストまたは当社がホストします。ホワイトレーベル・バイ・デザイン。API 駆動型で、独自のドメインにデプロイする準備ができています。イベントとデータを完全に制御します。

今月の商品: 4 月

Product Huntで私たちをサポートしてください

Cal.com - オープンソースの Calendly 代替 |  商品探し Cal.com - オープンソースの Calendly 代替 |  商品探し Cal.com - オープンソースの Calendly 代替 |  商品探し

で構築

最新に保つ

Cal は 9 月 15 日に v.1.0 として正式にリリースされましたが、多くの新機能が追加されています。今後の更新について通知されるこのリポジトリのリリースをご覧ください。

cal-star-github

入門

ローカル コピーを起動して実行するには、次の簡単な手順に従ってください。

前提条件

Cal を実行するために必要なものは次のとおりです。

  • Node.js (バージョン: >=15.x <17)
  • PostgreSQL
  • (推奨)

利用可能な統合のいずれかを有効にする場合は、それぞれについて追加の認証情報を取得する必要がある場合があります。詳細については、以下の統合セクションを参照してください。

発達

設定

  1. リポジトリを公開 GitHub リポジトリ (またはフォークhttps://github.com/calcom/cal.com/fork ) に複製します。コードを配布する場合は、ソース コードを公開してAGPLv3に準拠してください。プライベート リポジトリにクローンするには、商用ライセンスを取得してください)

    git clone https://github.com/calcom/cal.com.git
  2. プロジェクトフォルダーに移動します

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

    yarn
  4. openssl rand -base64 32
    キーを生成
    NEXTAUTH_SECRET
    し、.env ファイルの下に追加するために使用します。

クイックスタート
yarn dx

  • Docker と Docker Compose をインストールする必要があります
  • 少数のテスト ユーザーでローカルの Postgres インスタンスを開始します - 資格情報はコンソールに記録されます
yarn dx

開発のヒント

NEXT_PUBLIC_DEBUG=1
の任意の場所に追加して、 trpc
.env
によって駆動されるすべてのクエリとミューテーションのログ情報を取得します。

echo 'NEXT_PUBLIC_DEBUG=1' >> .env

手動設定

  1. ファイルで環境変数を構成し

    .env
    ます。
    <user>
    <pass>
    、を該当する値
    <db-host>
    に置き換えます
    <db-port>

    DATABASE_URL='postgresql://<user>:<pass>@<db-host>:<db-port>'
    
    DATABASE_URL の設定方法がわからない場合は、こちらの手順に従って、Heroku を使用してクイック DB を作成してください。
    1. Herokuで無料のアカウントを作成します。

    2. 新しいアプリを作成します。 アプリを作成する

    3. 新しいアプリで に移動し

      Overview
      、 の横に
      Installed add-ons
      ある をクリックします
      Configure Add-ons
      。これは、データベースをセットアップするために必要です。 画像

    4. をクリックしたら

      Configure Add-ons
      、 をクリックして
      Find more add-ons
      を検索し
      postgres
      ます。オプションの 1 つが表示されます
      Heroku Postgres
      - そのオプションをクリックします。 画像

    5. ポップアップが表示されたら、クリック

      Submit Order Form
      - プラン名は
      Hobby Dev - Free
      . 注文フォームを送信

    6. 上記の手順を完了したら、新しく作成した をクリックして、

      Heroku Postgres
      その に移動します
      Settings
      画像

    7. Settings
      、URI を Cal.com .env ファイルにコピーし、
      postgresql://<user>:<pass>@<db-host>:<db-port>
      をそれに置き換えます。 画像 画像

    8. DB を表示するには、Prisma に新しいデータを追加したら、Heroku Data Explorerを使用できます。

  2. の .env ファイルに 32 文字のランダムな文字列を設定します

    CALENDSO_ENCRYPTION_KEY
    (生成するには次のようなコマンドを使用できます
    openssl rand -base64 24
    )。

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

    yarn workspace @calcom/prisma db-deploy
  4. 実行 (開発モード)

    yarn dev

最初のユーザーの設定

  1. Prisma Studioを開いて、データベースの内容を確認または変更します。

    yarn db-studio
  2. モデルをクリックして

    User
    、新しいユーザー レコードを追加します。

  3. フィールド

    email
    username
    、に入力し、空
    password
    に設定し(パスワードをBCryptで暗号化することを忘れないでください)、クリックして最初のユーザーを作成します。
    metadata
    {}
    Save 1 Record

    新しいユーザーは

    TRIAL
    、デフォルトでプランに設定されています。ファイル内の必要に応じて、この動作を調整することができ
    packages/prisma/schema.prisma
    ます。

  4. ブラウザーを開いてhttp://localhost:3000にアクセスし、作成したばかりの最初のユーザーでログインします。

E2E-テスト

環境変数

NEXTAUTH_URL
を正しい値に設定してください。
.env.example
言及内のドキュメントのように、ローカルで実行している場合、値は
http://localhost:3000
.

# In a terminal just run:
yarn test-e2e

# To open last HTML report run:
yarn workspace @calcom/web playwright-report

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

  1. 現在のバージョンをプルします。

    git pull
  2. 依存関係が追加/更新/削除されたかどうかを確認する

    yarn
  3. 次のいずれかのコマンドを実行して、データベースの移行を適用します。

    開発環境で、次を実行します。

    yarn workspace @calcom/prisma db-migrate

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

    実稼働環境では、次を実行します。

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

    yarn predev
  5. サーバーを起動します。開発環境では、次のようにします。

    yarn dev

    プロダクション ビルドの場合は、たとえば次のように実行します。

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

展開

ドッカー

Cal の Docker 構成は、コミュニティ内の人々による取り組みです。

Docker リポジトリに貢献したい場合は、ここに返信してください

Docker 構成は、docker リポジトリにあります。

Docker に問題がありますか? 回答を見つけるか、ここで新しいディスカッションを開いてコミュニティに質問してください。

Cal.com, Inc. は Docker の公式サポートを提供していませんが、修正とドキュメントは受け入れます。自己責任。

ヘロク

配備

鉄道

鉄道に配備

上のボタンを使用して、Cal on Railwayを配備できます。Railway のチームは、Cal のプラットフォームへの展開に関する詳細なブログ投稿も行っています。

ヴェルセル

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

Vercel でデプロイする

ロードマップ

Cal.com ロードマップ

提案された機能 (および既知の問題) のリストについては、ロードマップ プロジェクトを参照してください。ビューを変更して、予定されているタグ付きリリースを表示できます。

貢献する

寄稿ガイドをご覧ください。

良い最初の問題

比較的範囲が限られている小さな機能やバグを含む、必要なヘルプのリストがあります。これは、開始し、経験を積み、貢献プロセスに慣れるのに最適な場所です。

統合

Google API 資格情報の取得

  1. Google API コンソールを開きます。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. サイド ペインから [Credentials] を選択し、[Create Credentials] を選択しますOAuth クライアント ID オプションを選択します。
  8. [アプリケーションの種類] として [Web アプリケーション] を選択します。
  9. <Cal.com URL>/api/integrations/googlecalendar/callback
    [認可されたリダイレクト URI] で、[URI の追加] を選択し、Cal.com URL をアプリケーションが実行されるURI に置き換える URI を追加します。
  10. キーが作成され、資格情報ページにリダイレクトされます。OAuth 2.0 クライアント ID で、新しく生成されたクライアント ID を選択します。
  11. [JSON のダウンロード] を選択します。このファイルの内容をコピーし、JSON 文字列全体を GOOGLE_API_CREDENTIALS キーの値として .env ファイルに貼り付けます。

Google カレンダーを Cal.com App Store に追加する

Google 資格情報を追加すると、Google カレンダー アプリをアプリ ストアに追加できるようになります。を実行して、App Store を再設定できます。

cd packages/prisma
yarn seed-app-store

Google カレンダー アプリを有効にするには、さらにいくつかの手順を完了する必要があります。「Google API クレデンシャルの取得」セクションを必ず完了してください。その後、次のことを行います

  1. 追加のリダイレクト URL を追加する
    <Cal.com URL>/api/auth/callback/google
  2. 「OAuth コンセント画面」の下で、「PUBLISH APP」をクリックします。

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属性として使用します。

Slack クライアント ID とシークレットおよび署名シークレットの取得

これをテストするには、アプリのウェブサイトで自分用の Slack アプリを作成する必要があります。

以下のアプリ マニフェストをコピーして、Slack アプリの設定に貼り付けます。

YOUR_DOMAIN
ローカルでテストしている場合は、必ず独自のドメインまたはプロキシ ホストに置き換えてください。

アプリ マニフェスト
display_information:
 name: Cal.com Slack
features:
 bot_user:
   display_name: Cal.com Slack
   always_online: false
 slash_commands:
   - command: /create-event
     url: https://YOUR_DOMAIN/api/integrations/slackmessaging/commandHandler
     description: Create an event within Cal!
     should_escape: false
   - command: /today
     url: https://YOUR_DOMAIN/api/integrations/slackmessaging/commandHandler
     description: View all your bookings for today
     should_escape: false
oauth_config:
 redirect_urls:
   - https://YOUR_DOMAIN/api/integrations/slackmessaging/callback
 scopes:
   bot:
     - chat:write
     - commands
     - chat:write.public 
settings:
 interactivity:
   is_enabled: true
   request_url: https://YOUR_DOMAIN/api/integrations/slackmessaging/interactiveHandler
   message_menu_options_url: https://YOUR_DOMAIN/api/integrations/slackmessaging/interactiveHandler
 org_deploy_enabled: false
 socket_mode_enabled: false
 token_rotation_enabled: false

通常どおり統合を追加します - Slack アプリ - 追加します。oauth フローに従ってサーバーに追加します。

次に、アプリが実行されていることを確認します

yarn dx
。次に、slack チャットで次のいずれかのコマンドを入力します:
/create-event
または
/today

注: 次に、ngrokなどのプロキシ サーバーをセットアップして、ローカル ホスト マシンをパブリック https サーバーでホストできるようにする必要があります。

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

  1. Zoom マーケットプレイスを開き、Zoom アカウントでサインインします。
  2. 右上の「開発」→「アプリのビルド」をクリックします。
  3. 「OAuth」で「作成」を選択します。
  4. アプリに名前を付けます。
  5. アプリの種類として [ユーザー管理アプリ] を選択します。
  6. Zoomアプリマーケットプレイスでアプリを公開するオプションの選択を解除します。
  7. 「作成」をクリックします。
  8. クライアント ID とクライアント シークレットを .env ファイルの
    ZOOM_CLIENT_ID
    ZOOM_CLIENT_SECRET
    フィールドにコピーします。
  9. <Cal.com URL>/api/integrations/zoomvideo/callback
    Cal.com URL をアプリケーションが実行される URI に置き換えて、OAuth のリダイレクト URL を設定します。
  10. また、上記のリダイレクト URL を許可リスト URL として追加し、「サブドメイン チェック」を有効にします。フォームの下に「保存済み」と表示されていることを確認してください。
  11. アプリに関する基本情報を提供する必要はありません。代わりに、[スコープ] をクリックしてから、[+ スコープの追加] をクリックします。左側で、カテゴリ「ミーティング」をクリックし、スコープを確認します
    meeting:write
  12. 「完了」をクリックします。
  13. 準備万端です。これで、Zoom 統合を Cal.com 設定に簡単に追加できるようになりました。

毎日の API 資格情報の取得

  1. 毎日開いて、アカウントにサインインします。
  2. ダッシュボードから開発者タブに移動します。
  3. API キーをコピーします。
  4. 次に、.env ファイルの API キーを .env ファイルの
    DAILY_API_KEY
    フィールドに貼り付けます。
  5. ビデオ録画などの機能を使用するために、Daily Scale Plan
    DAILY_SCALE_PLAN
    で変数をに設定している場合。
    true

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

  1. HubSpot Developerを開いてアカウントにサインインするか、新しいアカウントを作成します。
  2. 開発者アカウント ページのホーム内から、[アプリの管理] に移動します。
  3. 右上の「Create app」ボタンをクリックします。
  4. 「アプリ情報」タブに必要な情報を入力します
  5. タブ「認証」に移動します
  6. クライアント ID とクライアント シークレットを .env ファイルの
    HUBSPOT_CLIENT_ID
    HUBSPOT_CLIENT_SECRET
    フィールドにコピーします。
  7. <Cal.com URL>/api/integrations/hubspotothercalendar/callback
    Cal.com URL をアプリケーションが実行される URI に置き換えて、OAuth のリダイレクト URL を設定します。
  8. ページの下部にある [スコープ] セクションで、呼び出されたスコープに対して [読み取り] と [書き込み] を選択していることを確認します。
    crm.objects.contacts
  9. 一番下のフッターにある「保存」ボタンをクリックします。
  10. 準備万端です。これで、コンタクトの HubSpot でミーティングとして作成された Cal.com の予約を確認できるようになりました。

重要な API キーの取得

  1. Vitalを開き、[API キーを取得] をクリックします。
  2. 希望のチーム名でチームを作成
  3. ダッシュボードのサイドバーの構成セクションに移動します
  4. API キーをクリックすると、サンドボックスが表示されます
    api_key
  5. api_key
    VITAL_API_KEY
    .env.appStore ファイルにコピーします。
  6. Vital Webhookを開き、接続されたアプリケーションの Webhook として追加
    <CALCOM BASE URL>/api/integrations/vital/webhook
    します。
  7. 関心のある Webhook のすべてのイベントを選択します。
    sleep_created
  8. Webhook シークレット (
    sec...
    ) を
    VITAL_WEBHOOK_SECRET
    .env.appStore ファイルにコピーします。

ワークフロー

メール リマインダー用に SendGrid を設定する

  1. SendGrid アカウントを作成する ( https://signup.sendgrid.com/ )
  2. [設定] -> [API キー] に移動し、API キーを作成します
  3. API キーを .env ファイルの SENDGRID_API_KEY フィールドにコピーします
  4. [設定] -> [送信者認証] に移動し、単一の送信者を確認します
  5. 確認済みのメールを .env ファイルの SENDGRID_EMAIL フィールドにコピーします

SMS リマインダー用に Twilio を設定する

  1. Twilio アカウントを作成します ( https://www.twilio.com/try-twilio )
  2. 「Twilio 電話番号を取得する」をクリックします
  3. アカウント SID を .env ファイルの TWILIO_SID フィールドにコピーします。
  4. 認証トークンを .env ファイルの TWILIO_TOKEN フィールドにコピーします
  5. メッセージング サービスを作成します (開発 -> メッセージング -> サービス)。
  6. メッセージング サービスの任意の名前を選択します
  7. 「送信者を追加」をクリックします
  8. 送信者タイプとして電話番号を選択
  9. 記載されている電話番号を追加
  10. 他のすべてのフィールドはそのままにしておきます
  11. セットアップを完了し、[View my new Messaging Service] をクリックします。
  12. Messaging Service SID を .env ファイルの TWILIO_MESSAGING_SID フィールドにコピーします。

ライセンス

AGPLv3 ライセンスの下で配布されます。詳細については、を参照

LICENSE
してください。

謝辞

Cal.com を強化する以下の素晴らしいプロジェクトに感謝​​します。

実.com

Cal.com はオープンなスタートアップであり、Jitsu (オープンソースのセグメントの代替手段) は、使用状況の指標のほとんどを追跡するのに役立ちます。