# Deploy no cPanel

## Escopo

Este monorepo possui tres apps principais para subir no cPanel:

- `apps/api`: backend NestJS
- `apps/web-admin`: painel administrativo Next.js
- `apps/web-restaurant`: painel do restaurante Next.js

Os apps mobile nao entram no deploy do cPanel.

## Estado validado localmente

Em 30/05/2026, estes pontos foram validados em ambiente local:

- API respondendo em `http://localhost:3001/api/health`
- admin respondendo em `http://localhost:3002/login`
- restaurante respondendo em `http://localhost:3003/login`
- vitrine publica respondendo em `http://localhost:3003/public-order`
- login real do admin funcionando
- login real do restaurante funcionando
- `pnpm build:cpanel` concluindo com sucesso

## Requisitos

- Node.js 20 ou superior no cPanel
- acesso ao `Application Manager` ou `Setup Node.js App`
- PostgreSQL remoto acessivel
- Redis opcional

## Variaveis de ambiente

Configure no cPanel as mesmas variaveis usadas no `.env` raiz e no `apps/api/.env`.

Minimas:

- `NODE_ENV=production`
- `APP_NAME=Chegoou`
- `APP_URL=https://seudominio.com`
- `API_PORT`
- `DATABASE_URL`
- `DIRECT_URL`
- `REDIS_URL`
- `ENABLE_QUEUES=false`
- `JWT_ACCESS_SECRET`
- `JWT_REFRESH_SECRET`
- `JWT_ACCESS_EXPIRES_IN=15m`
- `JWT_REFRESH_EXPIRES_IN=30d`
- `MERCADO_PAGO_ACCESS_TOKEN`
- `MERCADO_PAGO_PUBLIC_KEY`
- `MERCADO_PAGO_WEBHOOK_SECRET`
- `NEXT_PUBLIC_API_URL=https://api.seudominio.com/api`
- `NEXT_PUBLIC_WS_URL=https://api.seudominio.com`

## Build

Na raiz do projeto:

```bash
corepack enable
pnpm install --frozen-lockfile
pnpm build:cpanel
```

Esse comando gera:

- `apps/api/dist`
- `apps/web-admin/.next`
- `apps/web-restaurant/.next`

Os frontends podem ser executados no cPanel com `next start`, desde que o monorepo esteja instalado com `pnpm install`.

## Observacao importante sobre Next.js

Neste projeto, o caminho mais confiavel para o cPanel e:

- `next build`
- `next start`

Nao use `output: "standalone"` como estrategia principal neste repositorio sem validar antes no servidor final. O build local validado foi feito no modelo padrao do Next.js, mantendo `.next` e executando cada app com `start`.

## Estrategia recomendada

### API

Subdominio sugerido:

- `api.seudominio.com`

Startup file:

- `apps/api/dist/main.js`

Comando de start:

```bash
node apps/api/dist/main.js
```

Healthcheck esperado:

```bash
curl https://api.seudominio.com/api/health
```

### Admin

Subdominio sugerido:

- `admin.seudominio.com`

Comando de start:

```bash
corepack pnpm --filter @chego/web-admin start
```

URL esperada:

- `https://admin.seudominio.com/login`

### Restaurante

Subdominio sugerido:

- `app.seudominio.com`

Comando de start:

```bash
corepack pnpm --filter @chego/web-restaurant start
```

URLs esperadas:

- `https://app.seudominio.com/login`
- `https://app.seudominio.com/public-order`

## Arquivos que precisam acompanhar os frontends

Ao publicar cada frontend, mantenha junto:

- `.next`
- `public`
- `package.json`
- `node_modules` do monorepo instalado no servidor

## Prisma

Gerar client:

```bash
corepack pnpm --filter @chego/api prisma:generate
```

Se for aplicar mudancas no schema:

```bash
corepack pnpm --filter @chego/api prisma:migrate
```

Se precisar popular dados:

```bash
corepack pnpm --filter @chego/api prisma:seed
```

## Teste pos-deploy

Validar:

- `https://api.seudominio.com/api/health`
- login no admin
- login do restaurante
- listagem publica de lojas
- criacao de pedido publico
- webhook Mercado Pago em `https://api.seudominio.com/api/payments/webhooks/mercado-pago`
- webhook Wascript em `https://api.seudominio.com/api/messaging/webhooks/wascript`

## Checklist de producao para hoje

- configurar no admin os campos de `Mercado Pago` e `Wascript`
- preencher `Base dos webhooks` com `https://api.seudominio.com/api/payments/webhooks`
- preencher `Wascript callback URL` com `https://api.seudominio.com/api/messaging/webhooks/wascript`
- cadastrar no Mercado Pago o callback `/api/payments/webhooks/mercado-pago`
- cadastrar na Wascript o callback `/api/messaging/webhooks/wascript`
- publicar `NEXT_PUBLIC_API_URL` e `EXPO_PUBLIC_API_URL` apontando para a API real
- testar um pedido PIX real ate o status sair de `WAITING_PAYMENT`

Valores prontos para copiar:

- ver [production-go-live.md](/C:/Users/BRUNO/OneDrive/Documentos%20Clientes/Bruno/BDGSISTEMAS/CHEGOOU/docs/production-go-live.md)

## Credenciais seed para homologacao

Se o banco publicado estiver com os seeds aplicados:

- admin: `admin@chego.app` / `Admin@123`
- restaurante: `loja@chego.app` / `Admin@123`

## Observacoes

- Se Redis nao estiver disponivel no cPanel, mantenha `ENABLE_QUEUES=false`.
- Se o cPanel usar proxy reverso interno, respeite a `PORT` injetada pela plataforma.
- Para assets e uploads locais, garanta persistencia da pasta usada por `UPLOAD_DIR`.
