Pré-requisitos
- Conta na Vercel
- Repositório no GitHub conectado à Vercel
- Banco PostgreSQL disponível (ex.: Neon)
Configuração do Projeto
1. Importar o Repositório
No painel da Vercel:
- Clique em Add New → Project
- Selecione o repositório
plataforma-testes
- A Vercel detecta automaticamente o framework Next.js
2. Configurar Variáveis de Ambiente
Em Settings → Environment Variables, adicione todas as variáveis do guia de variáveis.
Variáveis obrigatórias para o funcionamento correto:
DATABASE_URL
DATABASE_URL_UNPOOLED
POSTGRES_PRISMA_URL ← alternativa pooled para o Neon
AUTH_SECRET
NEXTAUTH_URL ← URL do projeto no Vercel
NEXTAUTH_SECRET
CRF_SECRET ← mínimo 32 chars; gere com: openssl rand -hex 32
RESEND_API_KEY
EMAIL_FROM
NEXT_PUBLIC_APP_URL
NEXT_PUBLIC_SENTRY_DSN
SENTRY_AUTH_TOKEN
ENCRYPTION_KEY ← 64 chars hex; gere com: openssl rand -hex 32
CRON_SECRET ← protege /api/cron/* contra chamadas externas
Configure para os três ambientes: Development, Preview e Production.
As variáveis CSRF_SECRET, REDIS_URL e ENCRYPTION_KEY existem apenas no .env.local por padrão e nunca são enviadas ao Vercel automaticamente. Você precisa adicioná-las manualmente no painel. Sem CSRF_SECRET, a proteção CSRF é desabilitada silenciosamente. Sem CRON_SECRET, o cron de backup falha e o Neon pode suspender após dias sem atividade.
3. Deploy
Clique em Deploy. A Vercel fará:
pnpm install
pnpm build
- Deploy dos arquivos estáticos e funções serverless
Deploy via CLI
# Instale a CLI da Vercel
pnpm add -g vercel
# Faça login
vercel login
# Deploy em produção
vercel --prod --yes
Migrações de Banco Automáticas
O projeto tem um GitHub Action (.github/workflows/db-deploy.yml) que aplica migrações do Prisma automaticamente:
- PRs → aplica na branch de preview do banco
- Push para
main → aplica no banco de produção
Configure os secrets no GitHub:
| Secret | Descrição |
|---|
PREVIEW_DATABASE_URL | Banco do ambiente de preview |
PROD_DATABASE_URL | Banco de produção |
Domínio Customizado
Em Settings → Domains, adicione seu domínio e configure os registros DNS conforme instruído pela Vercel. O SSL é provisionado automaticamente.
Neon + Vercel: Cold-Start
O plano free do Neon suspende o banco automaticamente após 5 dias sem atividade. Ao receber a primeira requisição, o servidor Postgres pode demorar até 15 segundos para acordar.
O projeto já tem dois mecanismos para lidar com isso:
connect_timeout=30 na URL do Prisma — aguarda até 30s para estabelecer conexão
- Cron diário (
/api/cron/database-backup às 3h UTC) mantém o banco ativo com acesso diário
Se CRON_SECRET não estiver configurado no Vercel, o cron falha e o banco pode suspender. Configure essa variável para garantir que o backup diário rode corretamente.
Limites do Plano Free
| Recurso | Limite Free |
|---|
| Deploys/mês | Ilimitados |
| Bandwidth | 100 GB/mês |
| Serverless invocations | 100k/mês |
| Execução de função | 10s máx (Hobby) |
| Tamanho de bundle | 250 MB comprimido |