API REST completa e moderna para gerenciamento inteligente de rebanhos bufalinos.
Sistema abrangente desenvolvido com NestJS e Supabase que oferece controle integral desde o cadastro genealógico até o manejo produtivo, reprodutivo, sanitário e nutricional dos animais. Voltado especialmente para produtores de búfalos leiteiros e de corte, com sistema de alertas inteligentes potencializado por IA.
- Funcionalidades Principais
- Arquitetura
- Tecnologias
- Pré-requisitos
- Instalação e Configuração
- Documentação da API
- Segurança
- Monitoramento
- Testes
- Deploy
- Módulos e Endpoints
- Cadastro completo de fazendas e propriedades rurais
- Sistema de endereçamento detalhado
- Divisão em lotes/piquetes com georreferenciamento
- Controle de movimentação de animais entre lotes
- Registro individual de búfalos com genealogia completa
- Cadastro de raças e características específicas
- Agrupamento por categorias (bezerros, novilhas, vacas, touros)
- Sistema de identificação por brincos e microchips
- Controle de categoria ABCB automático
- Controle detalhado de lactação e ciclos produtivos
- Registro de coletas diárias de leite
- Gestão de estoque e qualidade do leite
- Integração com indústrias e cooperativas
- Relatórios de produtividade por animal
- Controle de coberturas e inseminação artificial
- Gestão de material genético e touros reprodutores
- Árvore genealógica completa com múltiplas gerações
- Simulações de cruzamentos
- Acompanhamento de prenhez e partos
- Cadastro de medicamentos e protocolos sanitários
- Histórico completo de vacinações
- Dados zootécnicos (peso, altura, escore corporal)
- Controle de tratamentos e medicações
- Alertas automáticos de saúde com IA
- Definição de tipos de alimentação e rações
- Registro detalhado de fornecimento nutricional
- Controle de consumo por animal ou grupo
- Planejamento nutricional
- Alertas automáticos para saúde, reprodução e manejo
- Classificação de prioridade com inteligência artificial
- Notificações personalizadas por tipo de evento
- Sistema de rastreamento de alertas visualizados
- Sistema robusto de autenticação JWT via Supabase
- Controle de acesso por usuário
- Políticas de segurança a nível de linha (RLS)
- Auditoria completa de operações
| Categoria | Tecnologia | Versão |
|---|---|---|
| Framework | NestJS | 11.x |
| Linguagem | TypeScript | 5.x |
| Runtime | Node.js | 18+ |
| Banco de Dados | Supabase (PostgreSQL) | Latest |
| Autenticação | Supabase Auth + JWT + Passport | Latest |
| Documentação | Swagger/OpenAPI | 7.x |
| Validação | class-validator & class-transformer | Latest |
| IA | Google Gemini | 1.5 Flash |
| Cache | Cache Manager | 5.x |
| Segurança | Helmet | Latest |
| CORS | @nestjs/common | Built-in |
| Logs | Winston | Latest |
| Agendamento | @nestjs/schedule | Latest |
| HTTP Client | Axios | Latest |
O projeto segue uma arquitetura modular e escalável, organizada por domínios de negócio:
src/
├── core/ # Módulos compartilhados
│ ├── cache/ # Sistema de cache
│ ├── decorators/ # Decoradores customizados
│ ├── gemini/ # Integração com IA
│ ├── logger/ # Sistema de logs
│ ├── supabase/ # Cliente Supabase
│ └── utils/ # Utilitários compartilhados
│
├── modules/ # Módulos de domínio
│ ├── alerta/ # Sistema de alertas inteligentes
│ ├── alimentacao/ # Controle nutricional
│ ├── auth/ # Autenticação e autorização
│ ├── dashboard/ # Métricas e indicadores
│ ├── gestao-propriedade/ # Fazendas, lotes e endereços
│ ├── producao/ # Gestão de produção leiteira
│ ├── rebanho/ # Gestão de animais
│ ├── reproducao/ # Controle reprodutivo
│ ├── saude-zootecnia/ # Saúde e dados zootécnicos
│ └── usuario/ # Gestão de usuários
│
├── health/ # Health checks
└── app.module.ts # Módulo raiz
- Domain-Driven Design (DDD): Organização por domínios de negócio
- Module Pattern: Cada funcionalidade é um módulo independente e reutilizável
- Repository Pattern: Abstração da camada de dados via Supabase
- Guard Pattern: Proteção de rotas com autenticação JWT
- DTO Pattern: Validação e transformação de dados com class-validator
- Dependency Injection: Inversão de controle via NestJS
- Service Layer: Lógica de negócio isolada dos controllers
- Strategy Pattern: Implementações específicas para cada domínio
Antes de começar, certifique-se de ter instalado:
- Node.js versão 18 ou superior
- npm ou yarn
- Git
- Conta no Supabase (gratuita)
- Chave de API do Google Gemini (opcional, para classificação inteligente de alertas)
# Clone o repositório
git clone https://github.com/AgroCore-co/dsm5-buffs-api.git
cd dsm5-buffs-api
# Instale as dependências
npm installCopie o arquivo de exemplo e configure suas credenciais:
cp env.example .envEdite o arquivo .env com suas credenciais:
# Supabase Configuration
SUPABASE_URL=https://seu-projeto.supabase.co
SUPABASE_KEY=sua_chave_anon_do_supabase
SUPABASE_SERVICE_ROLE_KEY=sua_chave_service_role_do_supabase
SUPABASE_JWT_SECRET=sua_jwt_secret_do_supabase
# Google Gemini AI (opcional - para classificação inteligente de alertas)
GEMINI_API_KEY=sua_chave_api_gemini
# Application Configuration
NODE_ENV=development
PORT=3001
# CORS Configuration (adicione os domínios do seu frontend)
CORS_ORIGIN=http://localhost:3000,http://localhost:3001
# Logging Configuration
LOG_LEVEL=debug💡 Dica: Veja o arquivo
env.examplepara mais detalhes sobre cada variável.
- Acesse o Supabase Dashboard
- Crie um novo projeto (se ainda não tiver)
- Execute os scripts SQL necessários para criar as tabelas (consulte a documentação do banco)
- Configure as políticas RLS (Row Level Security) para proteger seus dados
- Copie as credenciais (URL, Anon Key, Service Role Key e JWT Secret) para o arquivo
.env
# Desenvolvimento (com hot-reload)
npm run start:dev
# Build para produção
npm run build
# Produção
npm run start:prodA API estará disponível em http://localhost:3001
Após iniciar o servidor, acesse:
| Endpoint | Descrição |
|---|---|
| http://localhost:3001/api | Swagger UI - Documentação interativa completa |
| http://localhost:3001/health | Health check básico |
| http://localhost:3001/health/detailed | Health check detalhado |
Todas as rotas (exceto /health e /api) são protegidas por JWT. Para acessar os endpoints:
- Registre/Faça login via Supabase Auth no frontend
- Obtenha o JWT token retornado pelo Supabase
- Inclua o token no header das requisições:
Authorization: Bearer <seu-token-jwt>Exemplo com cURL:
curl -X GET http://localhost:3001/rebanho/bufalo \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."- X-Content-Type-Options: Previne MIME sniffing
- X-Frame-Options: Proteção contra clickjacking
- X-XSS-Protection: Proteção contra XSS
- Strict-Transport-Security: Força uso de HTTPS (produção)
- Content-Security-Policy: Controla recursos carregados
- Origens permitidas configuráveis via ambiente
- Suporte a credenciais
- Headers específicos permitidos
- Métodos HTTP controlados
- Whitelist de propriedades permitidas
- Rejeição de propriedades não permitidas
- Transformação automática de tipos
- Mensagens de erro estruturadas e detalhadas
- Políticas de segurança a nível de linha no Supabase
- Isolamento automático de dados por propriedade
- Controle de acesso granular
GET /health{
"status": "ok",
"timestamp": "2025-11-13T10:30:00.000Z",
"environment": "development",
"version": "1.0.0",
"port": 3001
}GET /health/detailed{
"status": "ok",
"timestamp": "2025-11-13T10:30:00.000Z",
"services": {
"database": {
"status": "ok",
"responseTime": "45ms"
},
"gemini": {
"status": "configured"
}
},
"system": {
"uptime": 3600,
"memory": {
"rss": 52428800,
"heapTotal": 29360128,
"heapUsed": 20000000
},
"nodeVersion": "v18.19.0"
}
}# Testes unitários
npm run test
# Testes com watch mode
npm run test:watch
# Testes end-to-end
npm run test:e2e
# Cobertura de testes
npm run test:cov
# Testar health checks manualmente
curl http://localhost:3001/health
curl http://localhost:3001/health/detailedTestes Implementados:
- Testes E2E para todos os módulos principais
- Validação de autenticação e autorização
- Testes de integração com Supabase
- Validação de DTOs e regras de negócio
- Testes de health checks e monitoramento
- Testes de segurança (CORS, Headers, etc.)
| Script | Descrição |
|---|---|
npm run start |
Inicia a aplicação |
npm run start:dev |
Desenvolvimento com hot-reload |
npm run start:debug |
Desenvolvimento com debug |
npm run start:prod |
Execução em produção |
npm run build |
Build para produção |
npm run lint |
Análise estática do código (ESLint) |
npm run format |
Formatação automática (Prettier) |
npm run test |
Execução dos testes unitários |
npm run test:watch |
Testes em modo watch |
npm run test:cov |
Relatório de cobertura de testes |
npm run test:debug |
Testes em modo debug |
npm run test:e2e |
Testes end-to-end |
Antes de fazer deploy, verifique:
- Todas as variáveis de ambiente configuradas
- Testes passando (
npm run test:e2e) - Build funcionando (
npm run build) - Health checks respondendo corretamente
- Logs configurados para produção
2. Variáveis de Ambiente no AWS Console:
SUPABASE_URL=https://seu-projeto.supabase.co
SUPABASE_KEY=eyJhbGci...
SUPABASE_SERVICE_ROLE_KEY=eyJhbGci...
SUPABASE_JWT_SECRET=seu-jwt-secret
GEMINI_API_KEY=AIzaSy...
NODE_ENV=production
PORT=3001
CORS_ORIGIN=https://app.seudominio.com
LOG_LEVEL=error3. Otimizações para Free Tier (opcional):
NODE_OPTIONS=--max-old-space-size=1024
UV_THREADPOOL_SIZE=4- Health check básico respondendo (
/health) - Health check detalhado respondendo (
/health/detailed) - Swagger acessível e funcional (
/api) - CORS funcionando (teste do frontend)
- Autenticação JWT funcionando
- Conexão com Supabase estabelecida
- Logs sendo gerados corretamente
- Alertas inteligentes funcionando (se Gemini configurado)
Para configuração detalhada e troubleshooting, consulte:
docs/ENVIRONMENT_SETUP.md
| Módulo | Descrição | Endpoints Base |
|---|---|---|
| Gestão de Propriedades | Fazendas, lotes e endereços | /gestao-propriedade/* |
| Rebanho | Búfalos, grupos, raças | /rebanho/* |
| Produção | Controle leiteiro, ciclos, coletas | /producao/* |
| Reprodução | Coberturas, genealogia, simulações | /reproducao/* |
| Saúde e Zootecnia | Dados sanitários, medicamentos, vacinação | /saude-zootecnia/* |
| Alimentação | Definições e registros nutricionais | /alimentacao/* |
| Alertas | Sistema inteligente de alertas | /alerta/* |
| Dashboard | Métricas e indicadores | /dashboard/* |
| Usuários | Gestão de usuários e funcionários | /usuario/* |
| Autenticação | Login, registro, refresh token | /auth/* |
Para visualizar todos os endpoints disponíveis, acesse a documentação interativa no Swagger:
A documentação inclui:
- Todos os endpoints organizados por módulos
- Exemplos de requisições e respostas
- Esquemas de validação detalhados
- Interface para testar os endpoints
- Modelos de dados com descrições
- Códigos de status HTTP
- Requisitos de autenticação
- Email: [email protected]
- Issues: GitHub Issues
- Documentação: Swagger API Docs
Desenvolvido por AgroCore