Skip to content

EduSantos20/ControlPatio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

90 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ControlPatio

Aplicação web para controle e gerenciamento de motoristas e operações em pátios logísticos.

Este repositório contém o backend em Spring Boot, a camada estática (HTML/CSS/JS) usada pela interface e arquivos de configuração para execução local e em container.

Principais funcionalidades

  • CRUD de motoristas (criar, listar, buscar por id, atualizar, deletar).
  • Endpoints públicos para verificação (por exemplo: verificar CPF) e listagens.
  • Autenticação de usuários com JWT (login e registro).
  • Front-end estático (páginas em src/main/resources/static/ e templates em src/main/resources/templates/).

Tecnologias

  • Backend: Java 21, Spring Boot, Spring Data JPA
  • Banco de dados: PostgreSQL (configurável via variáveis de ambiente)
  • Autenticação: JWT (biblioteca auth0)
  • Build: Maven (uso do wrapper ./mvnw)
  • Contêiner: Docker / docker-compose

Estrutura relevante

  • src/main/java/com/example/controlPatio/ — Código fonte (controllers, services, entities, repositories, config)
  • src/main/resources/application.yaml — Configurações da aplicação (variáveis suportadas via env vars)
  • src/main/resources/static/ — Arquivos estáticos (HTML, CSS, JS)
  • src/main/resources/templates/ — Templates Thymeleaf (ex.: login.html)
  • pom.xml, Dockerfile, docker-compose.yml — build e orquestração

Endpoints principais

Observação: a rota base de cada controller segue o mapeamento definido nas classes.

  • Autenticação:

    • POST /auth/login — autentica usuário e retorna JWT (envie JSON com username e password)
    • POST /auth/register — registra novo usuário (envie dados necessários)
  • Motoristas (base: /motoristas):

    • POST /motoristas/create — criar novo motorista
    • GET /motoristas/verificar-cpf?cpf=... — verifica existência de CPF
    • GET /motoristas/listaMotorista — listar todos os motoristas
    • GET /motoristas/{id} — buscar motorista por ID
    • DELETE /motoristas/{id} — deletar motorista
    • PUT /motoristas/{id} — atualizar motorista
    • GET /motoristas/listaPorStatus/{status} — listar por status (ex.: PENDENTE, ENTREGUE)
    • PUT /motoristas/moverParaExpedicao/{id}/{status} — atualiza status do motorista

Algumas rotas estáticas e de registro/login são permitidas sem autenticação pela configuração de segurança.

Segurança (JWT)

  • A aplicação gera tokens JWT via TokenService e os valida no SecurityFilter.
  • Token expira em 2 horas por padrão.
  • A chave usada para assinar tokens vem da propriedade api.security.token.secret — por padrão lida de JWT_SECRET (variável de ambiente) ou do valor padrão declarado em application.yaml.

Configuração (variáveis de ambiente)

A aplicação lê as configurações do application.yaml, com suporte a variáveis de ambiente. Principais variáveis a configurar:

  • DATABASE_URL — URL JDBC do PostgreSQL (ex.: jdbc:postgresql://host:5432/dbname)
  • DATABASE_USERNAME — usuário do banco
  • DATABASE_PASSWORD — senha do banco
  • JWT_SECRET — segredo usado na assinatura dos tokens JWT

Exemplo (bash):

export DATABASE_URL=jdbc:postgresql://localhost:5432/controlpatio
export DATABASE_USERNAME=postgres
export DATABASE_PASSWORD=senha
export JWT_SECRET=uma-chave-secreta
./mvnw spring-boot:run

Como executar

  • Rodando localmente (usar o wrapper do Maven):
./mvnw spring-boot:run
  • Usando Docker Compose (build + up):
docker-compose up --build

Após subir, a aplicação fica acessível em http://localhost:8080/. A página de login/template está em /login ou via static dependendo do servidor (ex.: http://localhost:8080/login.html).

Testando a API (exemplos rápidos)

  • Registrar usuário:
curl -X POST -H "Content-Type: application/json" \
   -d '{"name":"Fulano","username":"fulano","email":"fulano@ex.com","password":"senha","role":"ROLE_USER"}' \
   http://localhost:8080/auth/register
  • Login (recebe token):
curl -X POST -H "Content-Type: application/json" \
   -d '{"username":"fulano","password":"senha"}' \
   http://localhost:8080/auth/login
  • Criar motorista (exemplo — se sua rota exigir auth, envie Authorization: Bearer ):
curl -X POST -H "Content-Type: application/json" \
   -d '{"nome":"Motorista Ex","cpf":"00000000000","placa":"ABC1234"}' \
   http://localhost:8080/motoristas/create

Observações e próximos passos

  • A segurança já possui suporte a JWT; ajuste o JWT_SECRET em produção e reveja as regras de autorização em SecurityConfigurations (hoje /motoristas/** está permitido publicamente).
  • Migrations/seed do banco não estão incluídos — a aplicação usa spring.jpa.hibernate.ddl-auto=update por padrão.
  • Integrações externas (Twilio/WhatsApp) podem existir em rascunho; revise o código se for usar em produção.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published