Skip to content

Benevanio/farm-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Farm API

API REST para gerenciamento de fazenda com cadastro de usuarios, funcionarios e animais.

Funcionalidades

  • 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

Stack

  • Node.js + Express
  • TypeScript
  • Mongoose
  • Joi
  • Swagger UI + Swagger JSDoc

Requisitos

  • Node.js 18+
  • npm 9+

Instalacao

npm install

Configuracao de ambiente

Crie 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=info

Observacoes:

  • Em desenvolvimento (NODE_ENV diferente de production), a API sobe MongoDB em memoria automaticamente.
  • Em producao (NODE_ENV=production), MONGODB_URI e obrigatorio.

Scripts

npm run dev      # desenvolvimento com nodemon + ts-node
npm run build    # compila TypeScript para dist
npm start        # executa codigo compilado

Executando a API

npm run dev

Servidor padrao:

Documentacao da API

Endpoints

Users

  • POST /api/users

Payload exemplo:

{
  "name": "Joao Silva",
  "email": "joao@farm.com",
  "password": "123456"
}

Employees

  • 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
}

Animals

  • 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."
}

Estrutura do projeto

src/
  docs/
  middleware/
  model/
  routes/
  utils/
  validators/

Logs

A API usa logger JSON configurado por LOG_LEVEL. Niveis aceitos: fatal, error, warn, info, debug, trace, none.

Contributors