Gestão de contratos
com fluxo automático de vigência.
API REST robusta para empresas que precisam controlar contratos, fornecedores e vencimentos sem depender de planilhas. Status dinâmico, autenticação JWT, validação de CNPJ e job diário de expiração.
Features de produção, não de tutorial.
Ciclo de vida completo
CRUD de contratos com status dinâmico (ATIVO · VENCENDO · VENCIDO · SUSPENSO) calculado em tempo de leitura conforme a vigência.
Fornecedores com CNPJ válido
Validação de CNPJ via @CNPJ customizado (algoritmo dos dígitos verificadores) + unicidade no banco. Exclusão bloqueada se houver contratos ativos.
Scheduler de vencimento
Job @Scheduled diário às 00:00 marca como VENCIDO todo contrato cuja dataFim passou. Logs estruturados de cada execução.
JWT + BCrypt
Autenticação stateless com filtro JWT customizado, senhas hasheadas com BCrypt e SecurityConfig liberando apenas endpoints públicos.
Dashboard agregado
Endpoint /dashboard com totais por status, contratos vencendo em 30 dias e valor consolidado da carteira — feito em uma única query.
Swagger UI interativo
Documentação OpenAPI 3 com exemplos, schemas e botão Authorize pra colar o JWT e testar tudo direto do navegador.
Tecnologias maduras, sem hype.
Endpoints sob /api/v1
/auth/register
Cria novo usuário
/auth/login
Retorna JWT
/fornecedores
Cadastra fornecedor
/fornecedores
Lista paginada
/fornecedores/{id}
Detalhes
/fornecedores/{id}/contratos
Contratos do fornecedor
/fornecedores/{id}
Exclui (se sem ativos)
/contratos
Cria contrato
/contratos/{id}
Detalhes + status dinâmico
/contratos/vencendo
Vencendo em 30 dias
/contratos/{id}/suspender
Marca como SUSPENSO
/dashboard
Totais e métricas
// POST /api/v1/auth/login
{
"email": "admin@nexus.com",
"senha": "admin123"
}
// ← 200 OK
{
"token": "eyJhbGciOiJIUzI1NiJ9...",
"tipo": "Bearer",
"expiraEm": 3600
}
Camadas separadas, responsabilidade clara.
Pronto pra ver o código?
Tudo open-source, com testes, Swagger e Docker. Roda local sem instalar nada além de Java.