API RESTful para gestão de frotas, motoristas e utilizações. Arquitetura escalável, testes automatizados, documentação OpenAPI e pronta para produção. Foco em facilidade de manutenção, evolução e integração real.
- Visão Geral
- Diferenciais
- Demonstração Online
- Funcionalidades
- Arquitetura & Tecnologias
- Instalação
- Testes & Cobertura
- Documentação
- Exemplos de Uso
- Contribuição
- Roadmap
- Licença
- Contato
O Vehicle Control System API é uma solução robusta para gestão de frotas, motoristas e utilizações, desenvolvida com Clean Code, SOLID, testes automatizados e documentação profissional.
- Produto real: Endpoints prontos para cenários de gestão de frotas.
- Qualidade: Testes, documentação, deploy automatizado.
- Onboarding rápido: Código limpo, exemplos claros.
- Futuro-proof: Pronto para integrações, autenticação e webhooks.
- Render: https://seidor-rh.onrender.com
- Swagger UI: https://seidor-rh.onrender.com/api-docs
Feature | Descrição |
---|---|
CRUD Automóveis | Cadastro, listagem, busca, edição e remoção de automóveis. |
CRUD Motoristas | Cadastro, listagem, busca, edição e remoção de motoristas. |
Utilização de Automóveis | Início/fim de uso, histórico, paginação, regras de negócio. |
Health Check | Endpoint /health para monitoramento. |
Rate Limiting | Proteção contra abuso de requisições. |
Validação de Dados | Validação robusta via express-validator. |
Documentação OpenAPI/Swagger | Especificação completa e playground interativo. |
Testes Unitários e Integração | Cobertura total com Jest e Supertest. |
Deploy Docker e Render | Pronto para produção e cloud. |
Clean Code & SOLID | Código limpo, modular, fácil de manter. |
- Node.js 18+
- Express.js
- Jest & Supertest (testes)
- Docker (containerização)
- Render (deploy cloud)
- OpenAPI 3.0 (documentação)
- Express-validator (validação)
- Clean Code, SOLID, Modular
controle/
├── src/
│ ├── api/
│ │ ├── automoveis/
│ │ ├── health/
│ │ ├── motoristas/
│ │ └── utilizacoes/
│ ├── middlewares/
│ ├── utils/
│ ├── app.js
│ └── server.js
├── tests/
│ ├── unit/
│ └── integration/
├── openapi.yaml
├── render.yaml
├── Dockerfile
├── package.json, .env, etc.
- Node.js >= 18.x
- NPM >= 9.x
- Docker (opcional)
git clone https://github.com/FuturoDevJunior/SEIDOR_RH.git
cd SEIDOR_RH
npm install
cp .env.example .env # Ajuste as variáveis se necessário
- Desenvolvimento:
npm run dev
- Produção:
npm start
docker build -t controle-automoveis-api .
docker run -p 3000:3000 -e PORT=3000 controle-automoveis-api
Após instalar as dependências, execute:
npm test
- Testes unitários e integração:
npm test
- Cobertura de testes:
npm run coverage
(relatório local emcoverage/lcov-report/index.html
). - Frameworks: Jest, Supertest.
- Swagger UI:
https://seidor-rh.onrender.com/api-docs - Arquivo OpenAPI:
openapi.yaml
GET /health
— Health check.POST /api/automoveis
— Criar automóvel.GET /api/automoveis
— Listar automóveis.GET /api/automoveis/:id
— Buscar automóvel.PUT /api/automoveis/:id
— Atualizar automóvel.DELETE /api/automoveis/:id
— Remover automóvel.POST /api/motoristas
— Criar motorista.GET /api/motoristas
— Listar motoristas.GET /api/motoristas/:id
— Buscar motorista.PUT /api/motoristas/:id
— Atualizar motorista.DELETE /api/motoristas/:id
— Remover motorista.POST /api/utilizacoes
— Iniciar utilização.PATCH /api/utilizacoes/:id/finalizar
— Finalizar utilização.GET /api/utilizacoes
— Listar utilizações (paginação).
curl -X POST https://seidor-rh.onrender.com/api/automoveis \
-H 'Content-Type: application/json' \
-d '{"placa": "ABC-1234", "cor": "Azul", "marca": "MarcaXYZ"}'
Resposta:
{
"id": "gerado-pelo-uuid",
"placa": "ABC-1234",
"cor": "Azul",
"marca": "MarcaXYZ"
}
curl "https://seidor-rh.onrender.com/api/utilizacoes?page=1&limit=10"
Resposta:
{
"items": [
{
"id": "uuid-da-utilizacao",
"motoristaId": "uuid-do-motorista",
"automovelId": "uuid-do-automovel",
"dataInicio": "2024-07-31T12:00:00.000Z",
"dataFim": null,
"motivoUtilizacao": "Viagem a serviço",
"motorista": { "id": "uuid-do-motorista", "nome": "Nome do Motorista" },
"automovel": { "id": "uuid-do-automovel", "placa": "ABC-1234", "marca": "Marca", "cor": "Cor" }
}
],
"totalItems": 1,
"totalPages": 1,
"currentPage": 1,
"itemsPerPage": 10
}
Sinta-se à vontade para contribuir!
Siga os passos:
- Fork este repositório.
- Crie uma branch:
git checkout -b feature/NovaFeature
. - Commit suas alterações:
git commit -m 'feat: Nova feature'
. - Push para sua branch:
git push origin feature/NovaFeature
. - Abra um Pull Request.
Sugestões, dúvidas ou bugs? Abra uma issue!
Consulte o CONTRIBUTING.md para mais detalhes.
- CRUD Automóveis
- CRUD Motoristas
- Utilização de Automóveis
- Health Check
- Rate Limiting
- Documentação OpenAPI/Swagger
- Testes unitários e integração
- Deploy Docker e Render
- Autenticação JWT (futuro)
- Integração com banco de dados persistente (futuro)
- Webhooks e eventos (futuro)
Distribuído sob a licença ISC.
Veja o campo "license" do package.json
para mais informações.
Desenvolvido por Gabriel Ferreira.
Agradecimentos especiais a todos os contribuidores, à comunidade Node.js e aos mantenedores de ferramentas open source!
Este projeto é resultado de paixão por tecnologia, atenção a detalhes e compromisso com excelência. Se você busca alguém com visão de produto, foco em qualidade e espírito colaborativo, vamos conversar!
Powered by DevFerreiraG