API REST Principal
Backend principal da plataforma UTRBUS.
Informações Gerais
| Item | Detalhe |
|---|---|
| Versão | 1.6.0 |
| Runtime | Node.js 14.17.0 |
| Framework | Express 4 |
| Banco | MongoDB via Mongoose 6 |
| Auth | JWT + Passport.js (passport-jwt) |
| Porta | 4589 |
| Docs | Swagger UI em /api-docs |
Arquitetura
A API segue uma estrutura modular por domínio. Cada módulo é composto por um model (Mongoose), um service (registro de rotas REST via node-restful) e, quando necessário, lógica de negócio separada.
utrbus_api/
├── loader.js # Entrypoint: carrega server, banco e rotas
├── server.js # Configuração Express (middlewares, helmet, cors, passport)
├── app.js # Instância do servidor Express
├── config/
│ ├── database.js # Conexão MongoDB com auto-discovery
│ ├── passport.js # Estratégia JWT
│ ├── routes.js # Registro central de todas as rotas
│ └── environments.js # Variáveis de ambiente
├── user/ # Autenticação e gestão de usuários
├── cliente/ # Cadastro de clientes
├── colaborador/ # Cadastro e gestão de colaboradores
├── motorista/ # Cadastro de motoristas
├── veiculo/ # Frota de veículos
├── rota/ # Definição e gestão de rotas
├── roteiro/ # Roteirização
├── translado/ # Translados
├── fretamento/ # Fretamentos
├── boarding/ # Registro de embarques (check-in/check-out)
├── integracao/ # Integração com rastreadores externos (XML/RFID)
│ └── integracaoReprocessamentoService.js
├── jornada/ # Jornada do motorista
├── poi/ # Pontos de interesse (POI)
├── permission/ # Controle de permissões por usuário
├── feature-flag/ # Feature flags dinâmicas
├── helpers/ # Utilitários (email, sender)
├── documentation/ # swagger.json gerado
└── __tests__/ # Testes automatizados (Jest)Rotas da API
Todas as rotas estão registradas sob o prefixo /api:
| Rota | Módulo | Descrição |
|---|---|---|
/api/user | user | Autenticação e usuários |
/api/cliente | cliente | CRUD de clientes |
/api/colaborador | colaborador | CRUD de colaboradores |
/api/motorista | motorista | CRUD de motoristas |
/api/veiculo | veiculo | CRUD de veículos |
/api/rota | rota | CRUD de rotas |
/api/roteiro | roteiro | CRUD de roteiros |
/api/translado | translado | CRUD de translados |
/api/fretamento | fretamento | CRUD de fretamentos |
/api/boarding | boarding | Registro de embarques |
/api/integracao | integracao | Integrações com rastreadores |
/api/jornada | jornada | Jornada do motorista |
/api/poi | poi | Pontos de interesse |
/api/permission | permission | Permissões de usuário |
/api-docs | swagger | Documentação interativa |
Setup
bash
cd utrbus_api
npm install
cp .env.example .envEdite o .env com as configurações do ambiente:
dotenv
SECRET= # Segredo JWT
TOKEN= # Token de integração
KEY= # Chave de API externa
SESSION={ session : false }
MONGODB_URI= # URI MongoDB
MONGODB_URI_TEST= # URI MongoDB (testes)
PORT=4589
NODE_ENV=developmentbash
# Desenvolvimento (com nodemon)
npm run dev
# Produção
npm start
# Testes
npm test
# Testes com cobertura
npm run test:coverageAutenticação
A autenticação é feita via JWT (JSON Web Tokens) usando passport-jwt. O token deve ser enviado no header Authorization como Bearer <token>.
Veja mais detalhes em Autenticação JWT.