Skip to content

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 admin@email.com 123456
Padrão user@email.com 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

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages