# Local development

## Objetivo

Rodar o `CHEGOOU` localmente sem depender do PostgreSQL externo do cPanel.

## Estado validado em 30/05/2026

Foi validado com sucesso:

- API em `http://localhost:3001`
- admin em `http://localhost:3002`
- restaurante em `http://localhost:3003`
- login do admin com seed
- login do restaurante com seed
- catalogo publico de lojas retornando dados

Credenciais seed validadas:

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

## SQL interno do projeto

Enquanto o banco externo nao estiver liberado, use este schema SQL como base interna do projeto:

- `docs/remote-schema-ready.sql`

Apesar do nome, esse arquivo tambem serve para bootstrap local porque contem:

- `DROP TABLE IF EXISTS ... CASCADE`
- `DROP TYPE IF EXISTS ... CASCADE`
- `CREATE TYPE ...`
- `CREATE TABLE ...`
- indices e relacionamentos prontos

## Banco local recomendado

Suba um PostgreSQL local e um Redis local.

Se o Docker estiver disponivel:

```bash
docker compose --profile local-db up -d postgres redis
```

## Variaveis locais

Use estas URLs para desenvolvimento local:

```env
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/chegoou?schema=public
DIRECT_URL=postgresql://postgres:postgres@localhost:5432/chegoou?schema=public
REDIS_URL=redis://localhost:6379
```

## Aplicar schema local

Com o PostgreSQL local ativo:

```bash
corepack pnpm --filter @chego/api exec prisma db execute --file docs/remote-schema-ready.sql --schema apps/api/prisma/schema.prisma
```

## Seed local

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

## Painel web local

- Admin: `http://127.0.0.1:3002`
- Loja: `http://127.0.0.1:3003`
- Loja publica: `http://127.0.0.1:3003/public-order`

## Escopo atual para teste local

Ja estao navegaveis em modo local:

- cadastro de clientes no admin
- cadastro de entregadores no admin
- cadastro de restaurantes no admin
- cadastro operacional da loja no painel do parceiro
- onboarding mobile de cliente
- onboarding mobile de entregador

## Persistencia interna de desenvolvimento

Como o PostgreSQL local nao esta disponivel nesta sessao, o projeto agora tambem possui uma persistencia interna de desenvolvimento no arquivo:

- `storage/local-dev-db.json`

Essa base permite testar `create`, `edit` e `delete` sem depender do banco externo.

### Endpoints locais do admin

Base:

- `http://127.0.0.1:3002/api/dev-db/:entity`

Entidades disponiveis:

- `customers`
- `drivers`
- `restaurants`
- `delivery-settings`
- `pricing-rules`
- `subscriptions`
- `ads-campaigns`
- `reports`

### Operacoes

- `GET /api/dev-db/:entity`
- `POST /api/dev-db/:entity`
- `GET /api/dev-db/:entity/:id`
- `PUT /api/dev-db/:entity/:id`
- `DELETE /api/dev-db/:entity/:id`

### Exemplo rapido

```bash
curl -X POST http://127.0.0.1:3002/api/dev-db/customers ^
  -H "Content-Type: application/json" ^
  -d "{\"fullName\":\"Teste Local\",\"email\":\"teste@chegoou.app\",\"status\":\"ACTIVE\"}"
```
