Uma loja virtual especializada em produtos para desenvolvedores, como camisetas, canecas, adesivos e jaquetas. Projeto desenvolvido com Java 17 (Azul Zulu), Project Loom e Quasar, com recursos para concorrência e alta performance.
- 🛍️ Catálogo de Produtos: Listagem, filtros e buscas avançadas
- 🛒 Carrinho de Compras: Adição, remoção e atualização de itens
- 👤 Autenticação e Autorização: Registro, login e controle de acesso
- 💳 Checkout: Finalização de compras com seleção de frete e pagamento
- 💰 Pagamento: Integração com Asaas para PIX e boleto
- 📦 Gestão de Pedidos: Acompanhamento de status e histórico
- 🚚 Cálculo de Frete: Integração com Correios, Jadlog e Braspress
- 🔐 Área do Usuário: Gerenciamento de perfil, endereços e pedidos
- ☕ Java 17 (Azul Zulu): Implementação do JDK com suporte LTS
- 🧵 Project Loom: Uso de Virtual Threads para alta concorrência
- 🌟 Quasar: Programação orientada a fibras para processos assíncronos
- 🍃 Spring Boot 3: Framework para desenvolvimento rápido de aplicações
- 🔒 Spring Security: Autenticação e autorização com JWT
- 🗃️ Spring Data JPA: Persistência de dados simplificada
- 🐘 PostgreSQL: Banco de dados relacional
- ⚡ Redis: Cache distribuído
- 🔑 BouncyCastle: Biblioteca para criptografia avançada
- 🔄 Flyway: Migrations e versionamento do banco de dados
- 💸 Asaas: Gateway de pagamentos (PIX e boleto)
- 📮 Correios: Cálculo de frete e rastreamento
- 🚛 Jadlog: Opção adicional de transportadora
- 🚚 Braspress: Opção adicional de transportadora
- 🐋 Docker & Docker Compose: Containerização da aplicação
- 📊 Prometheus & Grafana: Monitoramento e métricas
- 🔄 Nginx: Proxy reverso e balanceamento de carga
O sistema utiliza uma arquitetura de microserviços com os seguintes componentes:
- 🌐 API RESTful: Interface para comunicação com o frontend
- ⚡ Serviços Assíncronos: Processamento de pedidos e pagamentos usando Virtual Threads
- 🚀 Cache Distribuído: Otimização de performance e redução de carga no banco de dados
- 🔐 Segurança: Implementação de JWT com BouncyCastle para criptografia avançada
- ☕ Java 17 (preferencialmente Azul Zulu)
- 🔨 Maven 3.8+
- 🐋 Docker e Docker Compose
- 🐘 PostgreSQL 13+
- ⚡ Redis 6+
Configure as seguintes variáveis de ambiente ou ajuste o arquivo application.yml
:
# Banco de Dados
DB_HOST=localhost
DB_PORT=5432
DB_NAME=clubedojava
DB_USERNAME=postgres
DB_PASSWORD=postgres
# Redis
REDIS_HOST=localhost
REDIS_PORT=6379
# JWT
JWT_SECRET=your_jwt_secret_key
# Asaas (Gateway de Pagamentos)
ASAAS_API_URL=https://sandbox.asaas.com/api/v3
ASAAS_API_KEY=your_asaas_api_key
ASAAS_WEBHOOK_SECRET=your_webhook_secret
# Transportadoras
ORIGIN_ZIPCODE=01001000
ORIGIN_CITY=São Paulo
ORIGIN_STATE=SP
CORREIOS_API_URL=https://api.correios.com.br
CORREIOS_API_KEY=your_correios_api_key
JADLOG_API_URL=https://api.jadlog.com.br
JADLOG_API_KEY=your_jadlog_api_key
BRASPRESS_API_URL=https://api.braspress.com
BRASPRESS_API_KEY=your_braspress_api_key
# Compilar o projeto
mvn clean install
# Executar a aplicação
mvn spring-boot:run
# Iniciar todos os serviços
docker-compose up -d
# Verificar os logs
docker-compose logs -f app
# Parar todos os serviços
docker-compose down
POST /api/auth/register
- Registro de novo usuárioPOST /api/auth/login
- Login do usuárioGET /api/users/me
- Informações do usuário atualPUT /api/users/{id}
- Atualizar dados do usuárioGET /api/users/{id}/addresses
- Listar endereços do usuárioPOST /api/users/{id}/addresses
- Adicionar novo endereçoPUT /api/users/{userId}/addresses/{addressId}
- Atualizar endereçoDELETE /api/users/{userId}/addresses/{addressId}
- Remover endereço
GET /api/products
- Listar produtosGET /api/products/{id}
- Detalhes do produtoGET /api/products/featured
- Produtos em destaqueGET /api/products/category/{categoryId}
- Produtos por categoriaGET /api/categories
- Listar categorias
GET /api/cart
- Recuperar carrinho atualPOST /api/cart/items
- Adicionar item ao carrinhoPUT /api/cart/items/{itemId}
- Atualizar quantidade do itemDELETE /api/cart/items/{itemId}
- Remover item do carrinhoDELETE /api/cart
- Limpar carrinho
GET /api/orders
- Listar pedidos do usuárioGET /api/orders/{id}
- Detalhes do pedidoPOST /api/orders
- Criar novo pedidoPATCH /api/orders/{id}/cancel
- Cancelar pedidoGET /api/orders/tracking/{trackingNumber}
- Rastrear pedido
POST /api/shipping/calculate
- Calcular opções de freteGET /api/shipping/tracking/{trackingNumber}
- Rastrear entrega
A aplicação faz uso intensivo de Virtual Threads (Project Loom) e Quasar Fibers para alta concorrência:
- 🚀 Processamento assíncrono de pedidos
- ⚡ Cálculo paralelo de fretes de múltiplas transportadoras
- 💸 Verificação de pagamentos em background
- 🔄 Comunicação assíncrona com integrações externas
Esses recursos permitem que a aplicação escale facilmente para lidar com milhares de requisições simultâneas com baixo consumo de recursos.
A aplicação implementa diversas medidas de segurança:
- 🔐 Autenticação JWT com BouncyCastle para criptografia avançada
- 🔑 Senhas armazenadas com BCrypt
- 🛡️ Proteção contra ataques CSRF e XSS
- ✅ Validação de entrada em todos os endpoints
- 🔒 HTTPS obrigatório em produção
- 🔐 Comunicação segura com APIs de pagamento
O projeto incluí uma configuração pronta para monitoramento com:
- 📈 Prometheus para coleta de métricas
- 📊 Grafana para visualização e dashboards
- ✅ Health checks para todos os serviços
- 📝 Logs estruturados para fácil análise
- 🍴 Fork o repositório
- 🔄 Crie uma branch para sua feature (
git checkout -b feature/nome-da-feature
) - ✅ Commit suas mudanças (
git commit -m 'Adiciona nova feature'
) - ⬆️ Push para a branch (
git push origin feature/nome-da-feature
) - 🔍 Abra um Pull Request
Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE para detalhes.
Para questões ou sugestões, entre em contato através do email: contato@clubedojava.com.br
Feito com ☕ e 💙 pelo clube do Java para a comunidade Java!