Este projeto faz parte do Desafio de E-commerce do Roadmap.sh Uma API REST robusta, escalável e moderna para e-commerce, construída com Spring Boot.
- Arquitetura da API
- Diagrama do Banco de Dados
- Funcionalidades
- Tecnologias Utilizadas
- Como Iniciar o Projeto
- Estrutura de Pastas
- Testes
- Seed de Dados
- Segurança
- Documentação da API
- Banco de Dados
A arquitetura do CloudCart segue o padrão Camadas (Layered Architecture), separando responsabilidades em:
- Controller → recebe e processa requisições HTTP.
- Service → concentra a lógica de negócios.
- Repository → comunicação com o banco de dados via Spring Data JPA.
- Config → configurações de segurança, autenticação JWT, integração com Stripe para pagamentos e Cloudinary para imagens.
Stripe é utilizado no fluxo de Checkout para processar pagamentos com segurança, incluindo cancelamento e confirmação. O Cloudinary gerencia o upload e hospedagem de imagens dos produtos.
📌 Diagrama da Arquitetura
O banco foi modelado para suportar usuários, produtos, pedidos, pagamentos e carrinho de compras, com integridade referencial garantida via PostgreSQL.
📌 Diagrama do Banco de Dados
- ✅ Autenticação segura com JWT
- 💳 Integração com Stripe para pagamentos online
- ☁️ Upload e gerenciamento de imagens com Cloudinary
- 🛍️ Carrinho de compras, pedidos, gerenciamento de estoque e produtos
- 🧾 Validação de entrada e tratamento centralizado de exceções
- ⚙️ Rotas administrativas exclusivas para admins
- 📦 API de Checkout com cancelamento de pagamentos
- 📈 Documentação interativa com Swagger (Admin & Public)
- Java 17 + Spring Boot 3
- PostgreSQL (via Supabase)
- Stripe API para pagamentos
- Cloudinary SDK para imagens
- JWT para autenticação
- MapStruct para mapeamento de DTOs
- Maven como gerenciador de dependências
# Clone o repositório
git clone https://github.com/LiamFer/CloudCart.git
# Acesse o diretório
cd cloudcart
# Construa o projeto
./mvnw clean install
# Execute a aplicação localmente
./mvnw spring-boot:runA aplicação estará disponível em:
http://localhost:8080
CloudCart/
├── src/
│ ├── main/
│ │ ├── java/com/liamfer/CloudCart/ # Código-fonte principal
│ │ └── resources/ # Configurações e arquivos estáticos
│ └── test/ # Testes de integração
├── pom.xml
├── README.md
├── mvnw / mvnw.cmd
└── LICENSE
Este projeto utiliza testes de integração com @SpringBootTest e MockMvc, garantindo que o comportamento real da aplicação seja validado com o contexto Spring carregado e integração com o banco de dados em memória ou de teste.
Os testes verificam:
- Fluxo CRUD completo de produtos (criação, listagem, atualização e exclusão)
- Requisições autenticadas com JWT
- Respostas JSON → estrutura, propriedades e conteúdo esperado
- Rotas protegidas e permissões de administrador
- Cenários de erro e exceções tratadas
📌 Execução dos testes
./mvnw test💡 Garanta que o banco de dados de teste esteja configurado no
application.propertiesouapplication-test.properties.
Para testes rápidos, o Seeder popula o banco automaticamente com:
- 👤 2 usuários → admin e padrão
- 📦 10 produtos de exemplo
Executando o seed:
./mvnw spring-boot:run -Dspring-boot.run.arguments=--seed
⚠️ O seed só é executado se os repositórios de usuários e produtos estiverem vazios.
| Tipo | Senha | |
|---|---|---|
| Admin | [email protected] | 123456 |
| Padrão | [email protected] | 123456 |
- Rotas protegidas exigem token JWT no header
Authorization: Bearer <token> - Admins → podem gerenciar produtos, usuários e pedidos
- Usuários padrão → só acessam seus próprios pedidos, perfil e carrinho
Acesse no navegador:
http://localhost:8080/swagger-ui/index.html
O PostgreSQL é utilizado via Supabase, garantindo escalabilidade e alta disponibilidade.
As credenciais e URL de conexão podem ser configuradas no application.properties.

