> ## Documentation Index
> Fetch the complete documentation index at: https://docs.assessiq.digital/llms.txt
> Use this file to discover all available pages before exploring further.

# Deploy na Vercel

> Como fazer deploy do AssessIQ na Vercel com zero configuração extra.

## Pré-requisitos

* Conta na [Vercel](https://vercel.com)
* 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:

1. Clique em **Add New → Project**
2. Selecione o repositório `plataforma-testes`
3. 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](/docs/variaveis-de-ambiente).

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**.

<Warning>
  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.
</Warning>

### 3. Deploy

Clique em **Deploy**. A Vercel fará:

1. `pnpm install`
2. `pnpm build`
3. Deploy dos arquivos estáticos e funções serverless

***

## Deploy via CLI

```bash theme={null}
# 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:

1. **`connect_timeout=30`** na URL do Prisma — aguarda até 30s para estabelecer conexão
2. **Cron diário** (`/api/cron/database-backup` às 3h UTC) mantém o banco ativo com acesso diário

<Warning>
  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.
</Warning>

***

## 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 |
