Cal.com

Cal.com

Initial Setup

Процесс развертывания проекта Сal.com начинается с создания форка официального репозитория и его клонирования на локальный компьютер. После этого необходимо установить все указанные зависимости, выполнив команду установки в корневой директории проекта.

Environment Variables

Следующим важным шагом является настройка переменных окружения. Для этого нужно скопировать файл .env.example и переименовать его в .env. В файле .env среди множества переменных есть ключевые переменные, которые нужно заполнить обязательно для развертывания проекта. Эти значения необходимо также указать в разделе Environment Variables на Vercel.

Значения переменных CALENDSO_ENCRYPTION_KEY и NEXTAUTH_SECRET генерируются с помощью openssl.

openssl rand -base64 32
CALENDSO_ENCRYPTION_KEY=
NEXTAUTH_SECRET=

Переменная NEXT_PUBLIC_API_V2_URL остается с дефолтным значением.

NEXT_PUBLIC_API_V2_URL=”http://localhost:5555/api/v2″

Переменные DATABASE_URL и DATABASE_DIRECT_URL заполняются значениями из раздела настроек вашей базы данных Supabase. DATABASE_URL соответствует Transaction Mode, а DATABASE_DIRECT_URL – Session Mode.

DATABASE_URL=””
DATABASE_DIRECT_URL=””

Database

В официальном репозитории cal.com содержится готовая схема Prisma, описывающая структуру базы данных проекта. Чтобы синхронизировать эту схему с Supabase, необходимо выполнить миграцию, которая создаст необходимые таблицы и поля в вашей базе данных.

yarn workspace @calcom/prisma db-migrate

User

Для подготовки необходимых данных аккаунта используется графический интерфейс Prisma Studio. С его помощью в таблицу User добавляется запись, включающая email, username и пустой объект metadata. В таблице UserPassword создается соответствующая запись с паролем, зашифрованным методом BCrypt.

yarn db-studio

Deployment

Для сборки проекта требуется подключить на платформе Vercel аккаунт Prо.

При настройке деплоя в Vercel для проекта, в разделе Project Settings задаются пользовательские настройки, которые переопределяют стандартные команды.

Root Directory: apps/web
Настройка указывает Vercel, что корневая директория проекта для деплоя находится в поддиректории apps/web репозитория.

Build command: cd ../.. && yarn build –include-dependencies –no-deps
Команда сборки переходит на два уровня вверх от apps/web, чтобы достичь основной директории проекта. Затем yarn выполняет сборку, включая зависимости.

Install command: YARN_ENABLE_IMMUTABLE_INSTALLS=false yarn install
Команда установки отключает режим “immutable installs” в Yarn, позволяя при необходимости модифицировать файлы yarn.lock и node_modules.

Если после запуска проекта в получаете ошибку This Serverless Function has timed out, то переустановите регион в разделе Function Region. Например, если ваша база данных находится во Франкфурте, то рекомендуется разместить ваши серверлесс-функции в этом же регионе для минимизации задержек.

Подключение календаря

Во вкладке App Store нужно выбрать сервис календаря, например, Zoho. При первой попытке установки приложения возможно появление ошибки валидации.

invalid_type in ‘client_id’: Required; invalid_type in ‘client_secret’: Required

Введите все необходимые данные в поле keys в таблице App.

{“client_id”:”…”,”redirect_url”:”<Cal.com URL>/api/integrations/zohocalendar/callback”,”client_secret”:”…”}