O AutoGrid é um sistema de gerenciamento de catálogo veicular projetado com arquitetura orientada a eventos. O foco do projeto é demonstrar a implementação de notificações em tempo real e segurança robusta em um ambiente distribuído.
Diferente de um CRUD tradicional, este projeto desacopla o registro do veículo da notificação ao usuário utilizando Apache Kafka, garantindo que o sistema de cadastro permaneça responsivo mesmo sob alta carga.
O sistema segue uma arquitetura em camadas, utilizando mensageria para comunicação assíncrona entre o módulo de administração e a interface pública.
graph TD
User((Usuário)) -->|HTTP/WebSocket| Front[Thymeleaf Frontend]
Admin((Admin)) -->|HTTP Secure| Controller[Spring Controller]
subgraph "Backend Services"
Controller -->|Grava| DB[(H2/MySQL)]
Controller -->|Publica Evento| Kafka[Apache Kafka]
Consumer[Kafka Consumer Service] -->|Lê Tópico| Kafka
end
Consumer -->|Push Notification| Socket[WebSocket Handler]
Socket -->|Update| Front
subgraph "External Integrations"
Controller -.->|Consulta| IBGE[API IBGE Public Data]
end
- Java 21 & Spring Boot 3: Utilizados pela robustez e ecossistema maduro.
- Apache Kafka: Escolhido para desacoplar o processo de "Cadastro" do processo de "Notificação". Isso permite que, no futuro, novos microsserviços (ex: envio de emails de marketing) consumam o mesmo evento sem alterar o código do cadastro.
- WebSockets (STOMP): Permite que o cliente receba notificações em tempo real.
- Spring Security: Implementação de autenticação Stateful (Session-based) para proteger as rotas administrativas
/admin/**.
- Docker & Docker Compose: O Kafka é orquestrado via contêiner para garantir que o ambiente de desenvolvimento seja idêntico em qualquer máquina, eliminando o problema de "funciona na minha máquina".
Ao cadastrar um veículo, o sistema não apenas salva no banco:
- O veículo é persistido no banco de dados.
- Um evento
SendMessageCarroé publicado no tópicoadded-new-cardo Kafka. - Um listener assíncrono consome este evento e dispara um alerta via WebSocket para todos os clientes conectados. Resultado: O usuário final vê a notificação do novo carro aparecer na tela em milissegundos.
Para garantir a integridade dos dados de localização, o sistema consome a API de dados públicos do IBGE durante o cadastro, evitando erros de digitação em estados e cidades.
- Acesso restrito via Spring Security.
- CRUD completo com validações de Bean Validation.
- Java JDK 21
- Docker & Docker Compose
- Clone o repositório:
git clone https://github.com/agsjohn/AutoGrid_WebSite.git
cd AutoGrid_WebSite
- Suba a infraestrutura (Kafka):
docker-compose up -d
Aguarde alguns segundos para o Kafka estabilizar. 3. Execute a aplicação:
./gradlew bootRun
- Acesse:
- Vitrine:
http://localhost:8080 - Admin:
http://localhost:8080/painel(User:admin/ Pass:admin123)
João Vitor M.