Esta aplicação é projetada para fornecer um serviço de Wishlist para uma plataforma de e-commerce. Ela permite que os clientes adicionem, removam e visualizem produtos em sua Wishlist. Este serviço é construído para ser parte de uma arquitetura de microsserviços e foca exclusivamente na gestão da funcionalidade de Wishlist.
- Tecnologias
- Links Úteis
- Features
- Demo
- Rodar Local
- Rodar Testes
- Arquitetura
- Sugestões de Melhorias
- License
- Java 17
- Spring Boot
- Jacoco
- Gradle
- MongoDB (Banco de Dados Principal)
- Redis (Cache)
- Docker
- Nginx
- Aws EC2
- Github Actions (CI/CD)
- Sonar Cloud (Quality Gateway)
-
Adicionar Produto à Wishlist: Clientes podem adicionar seus produtos preferidos à sua Wishlist.
- O Cliente pode adicionar no máximo 20 Wishlists.
-
Remover Produto da Wishlist: Clientes podem remover produtos da sua Wishlist.
-
Visualizar Wishlist: Clientes podem visualizar todos os produtos em sua Wishlist.
-
Verificar Produto na Wishlist: Clientes podem verificar se um produto específico está em sua Wishlist.
Essa aplicação está rodando em um EC2 na AWS. Clique aqui para acessar o swagger
Pré-Requisito: Docker e Docker Compose
Faça um clone do Projeto
git clone https://github.com/leoferreiralima/wishlist.git
Vá para a pasta do projeto
cd wishlist
Suba os containers do docker
docker-compose up -d
E pronto! Agora você pode acessar os recursos abaixo:
-
Swagger - Para realizar as chamadas na aplicação
-
Mongo Express - Para visualizar as collections do Mongo
-
Redis Commander - Para visualizar os registros do Redis
Pré-Requisito: Docker e Java 17
Para rodar os testes basta executar o comando abaixo
.\gradlew build
Após o comando finalizar o report do Jacoco será gerado na pasta /build/reports/jacoco/index.html
O projeto já possui uma excelente estrutura, mas sempre há espaço para melhorias. A seguir, estão listadas algumas sugestões para aperfeiçoamentos futuros:
- Logs (ELK, Sentry)
- Monitoramento e Observabilidade (Datadog, ELK, Dynatrace)
- Load Balancer e Auto Scaling (Aws)
- Integração entre os serviços de Produto e Usuário
- Autenticação (Token JWT)