Fork customizado do Cal.diy para agendamento interno da ALLGED, rodando em cal.allged.com.br.
Cal.diy é um fork open-source do Cal.com (100% MIT, sem código Enterprise). Este repositório é a versão customizada da ALLGED, com funcionalidades adicionadas sobre o upstream.
| Feature | Status | Descrição |
|---|---|---|
| CancellationReason | ✅ completo | Campo obrigatório de motivo de cancelamento por evento. Enum CancellationReasonRequirement (MANDATORY_HOST_ONLY, MANDATORY_ALL, OPTIONAL, DISABLED). Campo requiresCancellationReason em EventType. |
| Organizations | ✅ ativo | Org tecnicos-allged habilitada. Páginas de settings, membros, convite e SSO. |
| Teams | ✅ ativo | Páginas de booking de time, gerenciamento de membros, aba no settings. |
| Routing Forms | ✅ ativo | Port do Cal.com v4.4.2. |
| Insights | ✅ ativo | Dashboard de bookings. Admin vê todos os dados via scope org. |
| API v2 (NestJS) | ✅ ativo | Rodando em container cal-api-v2:5555. Proxy via /v2/[...slug] em Next.js. |
| Companion App | 🚧 em build | App mobile Expo para agendamento. OAuth via OAuthClient. |
Internet
└─ Cloudflare (proxy)
└─ Traefik (reverse proxy, TLS)
├─ cal.allged.com.br → container cal-src:3000 (Next.js)
│ └─ /v2/* → cal-api-v2:5555 (NestJS proxy)
└─ (outros serviços)
cal-src → postgres:5432 (banco cal_src)
cal-src → redis:6379
cal-api-v2 → postgres:5432
cal-api-v2 → redis:6379
- Docker + Docker Compose v2
- Arquivo
/home/regis/stack/.envcom as variáveis abaixo
# Banco de dados
CAL_SRC_DB_USER=cal_src
CAL_SRC_DB_PASSWORD=<senha>
CAL_SRC_DB_NAME=cal_src
# Auth
CAL_SRC_NEXTAUTH_SECRET=<openssl rand -base64 32>
CAL_SRC_ENCRYPTION_KEY=<openssl rand -base64 24> # exatamente 32 chars
# URLs
CAL_SRC_WEBAPP_URL=https://cal.allged.com.br
# Organização
CAL_SRC_ORG_SLUG=tecnicos-allged
# Timezone
TZ=America/Sao_Paulocd /home/regis/stack
# Primeira vez: build das imagens
docker compose build cal-src cal-api-v2
# Subir tudo
docker compose up -d
# Verificar saúde
docker compose ps# Reconstruir só o web (Next.js)
docker compose build cal-src
docker compose up -d --force-recreate cal-src
# Reconstruir só a API v2 (NestJS)
docker compose build cal-api-v2
docker compose up -d --force-recreate cal-api-v2cd /home/regis/stack/cal-diy
# Instalar dependências
node .yarn/releases/yarn-4.12.0.cjs install
# Variáveis de desenvolvimento (copiar e ajustar)
cp .env.example .env
# Banco local (necessário postgres rodando)
node .yarn/releases/yarn-4.12.0.cjs workspace @calcom/prisma db-migrate
# Dev server (Next.js)
node .yarn/releases/yarn-4.12.0.cjs devA API v2 roda como container separado. O Next.js faz proxy de /v2/* para ela via route handler em apps/web/app/v2/[...slug]/route.ts.
Cliente → GET https://cal.allged.com.br/v2/me
→ Next.js app/v2/[...slug]/route.ts (runtime proxy)
→ http://cal-api-v2:5555/v2/me (NestJS interno)
→ 401 (precisa de Bearer token OAuth)
O Companion App usa OAuth. O OAuthClient foi criado no banco com:
clientId:94539bd8dd1e0e2d2d9bff78bece6d708176d10acb736de009b9677f5968bbc5type:publicredirectUri:expo-wxt-app://oauth/callback
Para criar um novo client: acesse /settings/developer/oauth no painel.
App Expo em /home/regis/stack/companion/apps/mobile.
cd /home/regis/stack/companion/apps/mobile
# Login Expo (uma vez)
eas login
# Vincular projeto (uma vez)
eas init
# Build APK para testar no celular
eas build --platform android --profile preview --non-interactiveArquivo .env em apps/mobile/:
EXPO_PUBLIC_CALCOM_APP_URL=https://cal.allged.com.br
EXPO_PUBLIC_CALCOM_API_URL=https://cal.allged.com.br
EXPO_PUBLIC_CALCOM_WEB_URL=https://cal.allged.com.br
EXPO_PUBLIC_CALCOM_OAUTH_CLIENT_ID=94539bd8dd1e0e2d2d9bff78bece6d708176d10acb736de009b9677f5968bbc5
EXPO_PUBLIC_CALCOM_OAUTH_REDIRECT_URI=expo-wxt-app://oauth/callbackTurbo v2 filtra variáveis de ambiente. Qualquer nova variável runtime do Next.js precisa estar declarada em globalEnv no turbo.json. Exemplo: API_V2_URL foi adicionada para o proxy da API v2.
Após mudanças no schema:
# Gerar migration
node .yarn/releases/yarn-4.12.0.cjs workspace @calcom/prisma migrate dev --name descricao
# Deploy em produção (roda automaticamente no start.sh do container)
node .yarn/releases/yarn-4.12.0.cjs workspace @calcom/prisma db-deployBranch deploy — é o que roda em produção. main é o upstream original.
Fork do calcom/cal.diy — licença MIT.