Sistema de gerenciamento de pedidos e produtos para e-commerce desenvolvido com Spring Boot, seguindo princípios de Clean Architecture e padrões de desenvolvimento empresarial.
- Autenticação JWT com Spring Security
- Perfis de usuário (Admin/User)
- Controle de acesso baseado em roles
- CRUD completo de produtos
- Busca avançada com Elasticsearch
- Indexação automática
- Controle de estoque com tratamento de race conditions
- Filtros por categoria, nome e faixa de preço
- Busca com tolerância a erros de digitação
- Criação de pedidos com múltiplos produtos
- Validação de estoque em tempo real
- Status automático (PENDENTE/PAGO/CANCELADO)
- Processamento de pagamentos
- Atualização assíncrona de estoque via eventos
- Top 5 usuários que mais compraram
- Ticket médio por usuário
- Faturamento total do mês atual
- Filtros por período de datas
- 8 endpoints de busca especializados
- Busca fuzzy com tolerância a erros
- Autocomplete e sugestões
- Paginação e ordenação
- Apenas produtos disponíveis em estoque
- Eventos assíncronos com Kafka
- Consumer para atualização de estoque
- Dead Letter Queue para tratamento de falhas
- Idempotência implementada
- Java 21
- Spring Boot 3.5.5
- Spring Security
- Spring Data JPA
- Maven 3.6+
- MySQL 8.0
- Flyway (migrations)
- Elasticsearch 8.0
- Spring Data Elasticsearch
- Apache Kafka
- Spring Kafka
- OpenAPI 3.0 (Swagger)
- Swagger UI
- JUnit 5
- TestContainers
- Spring Boot Test
- Docker
- Docker Compose
- Clean Architecture (Hexagonal)
- Ports and Adapters
- Domain-Driven Design (DDD)
- Use Case Pattern
- Repository Pattern
- Value Object Pattern
- Command Query Responsibility Segregation (CQRS)
- Event-Driven Architecture
- SOLID Principles
- Dependency Injection
- Inversion of Control
- Transaction Management
- Exception Handling
- Event Sourcing
- Saga Pattern
- Circuit Breaker Pattern
- Retry Pattern com Exponential Backoff
- OpenAPI UI: http://localhost:8080/ecommerce-management/swagger-ui/index.html
- API Docs: http://localhost:8080/ecommerce-management/v3/api-docs
- JDK 21
- Maven 3.6+
- Docker
Instalação do JDK, Maven e Docker:
- Instruções para instalação do JDK
- Instruções para instalação do Maven
- Instruções para instalação do Docker
Copie as variáveis utilizadas
cp example.env .envExecute o comando abaixo:
docker-compose up -dApós a inicialização da aplicação, é necessário criar um perfil de administrador e obter o token de autenticação para fazer as requisições aos endpoints protegidos.
- Criar usuário admin: Use o endpoint
/auth/registerpara criar um usuário com perfil ADMIN (já retorna o token) - Obter token: Use o endpoint
/auth/loginpara obter o token JWT - Usar token: Adicione o token no header
Authorization: Bearer {token}em todas as requisições
Para suporte ou feedback:
- Nome: Luan Fernandes
- Email: contact@luanfernandes.dev
- Website: https://luanfernandes.dev
- LinkedIn: https://linkedin.com/in/souluanf