OpenCall

Runbook para IA

Provisionamento por CLI, pra colar numa sessão do Claude Code (ou similar).

Cole este runbook numa sessão de IA com acesso ao terminal. A IA executa o máximo possível por CLI, parando só nos pontos que exigem um humano (login/2FA, pagamento, propriedade de domínio).

Instrução pra IA que está executando

Siga os passos na ordem. Antes de qualquer comando que crie recurso cobrado ou seja difícil de reverter, confirme com o humano. Depois de cada passo marcado, mostre o resultado antes de seguir. O host do app precisa rodar um processo Node persistente — nunca sugira Vercel ou qualquer plataforma serverless.

Escolhendo o caminho

Os três caminhos usam as mesmas variáveis de ambiente — muda só onde cada peça roda.

LocalDemo (grátis)Produção
Apppnpm dev na sua máquinaRender FreeRailway Hobby
Postgrescontainer DockerNeon FreeAddon do Railway
LiveKitcontainer DockerCloud (plano Build)Cloud pago ou self-host em VPS
Armazenamentocontainer MinIONeon Object StorageCloudflare R2
Domíniolocalhost:3000nenhum (*.onrender.com)próprio
CustoUS$ 0US$ 0~US$ 10-15/mês
Tetosó a sua máquina5 pessoas simultâneas em callo que você pagar

Pré-requisitos que só o humano resolve

  • Conta no Discord Developer Portal
  • Docker Desktop instalado e aberto — o daemon não sobe sozinho
  • Node.js instalado
  • Um fork do repositório do OpenCall, ou o repositório original clonável

Nenhuma conta de nuvem, nenhum cartão, nenhum domínio. A versão clicável deste caminho é Rodar localmente (Docker).

1. Conferir a máquina

docker info > /dev/null && echo "docker ok"
node --version
pnpm --version || npm install -g pnpm

Se o docker info falhar, o Docker Desktop não está rodando: pausa pra ação humana, não tente subir o daemon por conta própria.

2. Clonar e instalar

git clone https://github.com/SEU-USUARIO/OpenCall.git
cd OpenCall
pnpm install

O postinstall do repositório roda prisma generate. Se ele falhar, pare aqui e mostre a saída antes de seguir.

3. Application do Discord

Não existe CLI oficial — 100% manual (ver Configurar o Discord). Peça ao humano pra criar a aplicação com a Redirect URI local:

http://localhost:3000/api/auth/callback/discord

Depois peça DISCORD_CLIENT_ID e DISCORD_CLIENT_SECRET.

4. Variáveis de ambiente

cp .env.docker.example .env

O arquivo já vem com todos os valores batendo com o docker-compose.yml (Postgres na 5433, MinIO na 9000, LiveKit na 7880) e com um NEXTAUTH_SECRET de desenvolvimento. Preencha só as duas linhas do Discord:

DISCORD_CLIENT_ID=...
DISCORD_CLIENT_SECRET=...

Tem que ser .env, não .env.local: a CLI do Prisma só lê o .env, e a migration do passo 5 quebra com Environment variable not found: DATABASE_URL.

5. Subir a infra e o app

pnpm dev:docker

O script encadeia três coisas: pnpm docker:up (Postgres + MinIO + LiveKit), prisma migrate dev (cria as tabelas) e pnpm dev (Next.js na 3000).

O pnpm dev não termina — é processo de longa duração. Rode em background ou num terminal separado, senão a sessão trava esperando ele.

O container minio-init terminar com exited (0) é sucesso: ele cria o bucket, libera leitura pública, roda uma vez e para.

Aqui o comando é prisma migrate dev, não db push: o repositório versiona prisma/migrations/.

6. Validação final

  1. Peça ao humano pra abrir http://localhost:3000 e logar com o Discord — é esse primeiro login que cria o ADMIN.
  2. Confirme o acesso a /admin/channels.
  3. Teste uma chamada de voz no canal Geral, nessa mesma máquina.
  4. Mande uma mensagem com imagem anexada — o MinIO está no lugar do R2.

Avise o humano de um limite estrutural: voz e vídeo só funcionam nessa máquina. O container do LiveKit anuncia 127.0.0.1 como candidato ICE, então outro aparelho na mesma rede abre a página mas nunca entra na chamada. Pra testar com outras pessoas, o caminho é a aba Demo grátis.

Encerrar

pnpm docker:down          # para os containers e mantém os dados
docker compose down -v    # para e APAGA banco e uploads

Checkpoints humanos (resumo)

  • Abrir o Docker Desktop antes de começar
  • Criar a Application do Discord e colar client id/secret (não tem API)
  • Registrar http://localhost:3000/api/auth/callback/discord como Redirect URI
  • Ser o primeiro a logar, pra virar ADMIN

On this page