Skip to content

A robust and scalable E-commerce REST API built with Spring Boot. Features secure authentication with JWT, Stripe integration for payments, and Cloudinary for image uploads.

License

Notifications You must be signed in to change notification settings

LiamFer/CloudCart

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

93 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛒 CloudCart - E-commerce REST API

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.


📜 Sumário

  1. Arquitetura da API
  2. Diagrama do Banco de Dados
  3. Funcionalidades
  4. Tecnologias Utilizadas
  5. Como Iniciar o Projeto
  6. Estrutura de Pastas
  7. Testes
  8. Seed de Dados
  9. Segurança
  10. Documentação da API
  11. Banco de Dados

🏛 Arquitetura da API

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

Arquitetura da API


🗄 Diagrama do Banco de Dados

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

Diagrama do Banco de Dados


✨ Funcionalidades

  • ✅ 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)

📚 Tecnologias Utilizadas

  • 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

🚀 Como Iniciar o Projeto

# 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:run

A aplicação estará disponível em:

http://localhost:8080

📂 Estrutura de Pastas

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

🧪 Testes

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.properties ou application-test.properties.


🌱 Seed de Dados

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.

👥 Usuários criados automaticamente

Tipo Email Senha
Admin [email protected] 123456
Padrão [email protected] 123456

🔐 Segurança

  • 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

📘 Documentação da API

Acesse no navegador:

http://localhost:8080/swagger-ui/index.html

📦 Banco de Dados

O PostgreSQL é utilizado via Supabase, garantindo escalabilidade e alta disponibilidade. As credenciais e URL de conexão podem ser configuradas no application.properties.

About

A robust and scalable E-commerce REST API built with Spring Boot. Features secure authentication with JWT, Stripe integration for payments, and Cloudinary for image uploads.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages