API REST para gerenciamento de fazenda com cadastro de usuarios, funcionarios e animais.
- Cadastro de usuarios
- CRUD de funcionarios
- CRUD de animais
- Validacao de entrada com Joi
- Logs em JSON com nivel dinamico
- Documentacao com Swagger UI e OpenAPI JSON
- Banco MongoDB em memoria automaticamente em ambiente de desenvolvimento
- Node.js + Express
- TypeScript
- Mongoose
- Joi
- Swagger UI + Swagger JSDoc
- Node.js 18+
- npm 9+
npm installCrie um arquivo .env na raiz usando .env.example como base.
Exemplo:
PORT=3000
NODE_ENV=development
MONGODB_URI=mongodb://localhost:27017/farm-api
LOG_LEVEL=infoObservacoes:
- Em desenvolvimento (NODE_ENV diferente de production), a API sobe MongoDB em memoria automaticamente.
- Em producao (NODE_ENV=production), MONGODB_URI e obrigatorio.
npm run dev # desenvolvimento com nodemon + ts-node
npm run build # compila TypeScript para dist
npm start # executa codigo compiladonpm run devServidor padrao:
- Swagger UI: http://localhost:3000/api-docs
- OpenAPI JSON: http://localhost:3000/api-docs.json
- POST /api/users
Payload exemplo:
{
"name": "Joao Silva",
"email": "joao@farm.com",
"password": "123456"
}- POST /api/employees
- GET /api/employees
- GET /api/employees/:id
- PUT /api/employees/:id
- DELETE /api/employees/:id
Payload exemplo:
{
"name": "Maria Souza",
"role": "Veterinaria",
"cpf": "12345678901",
"phone": "11999998888",
"salary": 3500,
"hireDate": "2026-01-10T00:00:00.000Z",
"isActive": true
}- POST /api/animals
- GET /api/animals
- GET /api/animals/:id
- PUT /api/animals/:id
- DELETE /api/animals/:id
Payload exemplo:
{
"tagId": "BR-0001",
"name": "Estrela",
"species": "bovino",
"sex": "F",
"birthDate": "2024-09-01T00:00:00.000Z",
"weightKg": 210.5,
"status": "ativo",
"pasture": "Pasto Norte",
"notes": "Vacinada em dia."
}src/
docs/
middleware/
model/
routes/
utils/
validators/
A API usa logger JSON configurado por LOG_LEVEL. Niveis aceitos: fatal, error, warn, info, debug, trace, none.