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 comopenssl rand -base64 32NEXTAUTH_URL:http://localhost:3000em devINTERNAL_API_SECRET: qualquer string, só é usado para chamar rotas/api/internal/*manualmenteREDIS_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 startnã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 headerx-internal-secret: ver Agente WhatsApp.