Setup local

Como rodar o Tibé na sua máquina, do zero.

Pré-requisitos

  • Node.js 20+ e npm
  • Docker (para um Postgres local: ou uma connection string de um Postgres 17 já rodando)
  • Uma instância Redis acessível (ex: Redis Cloud, free tier): só necessária para os fluxos de alertas/billing

1. Clonar e instalar

git clone https://github.com/tibegestaoagro/tibe-agrogestao.git
cd tibe-agrogestao
npm install

O postinstall já roda prisma generate automaticamente.

2. Banco de dados local

Suba um Postgres 17 via Docker (qualquer nome/porta funciona, ajuste a connection string de acordo):

docker run --name tibe-pg -e POSTGRES_USER=tibe -e POSTGRES_PASSWORD=tibe \
  -e POSTGRES_DB=tibe_dev -p 55432:5432 -d postgres:17

Connection string resultante:

postgresql://tibe:tibe@localhost:55432/tibe_dev?schema=public

3. Variáveis de ambiente

Copie .env.example para .env e preencha:

  • DATABASE_URL: a connection string do passo anterior (ou de um Neon próprio)
  • NEXTAUTH_SECRET: gere com openssl rand -base64 32
  • NEXTAUTH_URL: http://localhost:3000 em dev
  • INTERNAL_API_SECRET: qualquer string, só é usado para chamar rotas /api/internal/* manualmente
  • REDIS_URL: opcional para desenvolvimento do dia a dia; necessário para testar o job de alertas

As demais variáveis (META_WHATSAPP_*, ASAAS_API_KEY, N8N_*) só são necessárias para testar esses fluxos integrados de ponta a ponta: o app funciona sem elas (as chamadas correspondentes falham de forma controlada, sem quebrar o resto do sistema).

CLOUDFLARE_R2_* existe no .env.example por herança do PRD original, mas não é usado por nenhum código atual: os PDFs são gerados sob demanda, sem storage (ver Arquitetura). Pode deixar em branco.

4. Migrar e popular o banco

npm run db:deploy   # aplica as migrações já versionadas em prisma/migrations
npm run db:seed      # cria o tenant de exemplo, owner e catálogo de vacinas

Login de exemplo criado pelo seed: owner@damata.com.br / tibe123.

Alterando o schema

prisma migrate dev é interativo e não funciona bem em shells não-interativos. O fluxo usado neste projeto:

npx prisma migrate diff --from-config-datasource --to-schema prisma/schema.prisma --script
# salve o SQL gerado em prisma/migrations/<timestamp>_nome/migration.sql
npm run db:deploy

5. Rodar

npm run dev

Abra http://localhost:3000.

6. Testes

Os testes de isolamento chamam os route handlers diretamente (via tsx), sem precisar de um servidor rodando:

npm run test:isolation   # isolamento multi-tenant genérico
npm run test:m1          # Rebanho e Lavoura
npm run test:m2          # Prestador de Serviço
npm run test:m3          # Agente WhatsApp
npm run test:m4          # Financeiro e Alertas

Notas úteis

  • Páginas autenticadas do dashboard só são bem testadas em um navegador real (dev server ou produção): um cookie jar automatizado contra next start não é reconhecido de forma confiável pelo Edge Middleware neste setup. Rotas /api/v1/* (Node runtime) não têm esse problema.
  • Sem N8N/Meta configurados, o agente WhatsApp pode ser testado chamando /api/internal/whatsapp/* diretamente com o header x-internal-secret: ver Agente WhatsApp.