Skip to content

0xCsr/ecommerce-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

E-Commerce API

API REST de e-commerce desenvolvida com Spring Boot, projetada para simular um ambiente real de loja virtual com foco em:

  • Arquitetura em camadas
  • Segurança baseada em JWT
  • Separação clara de responsabilidades
  • Preparação para ambiente distribuído
  • Boas práticas de backend

O projeto busca refletir padrões utilizados em aplicações reais de mercado.


Tecnologias

Backend

  • Java 21
  • Spring Boot
  • Spring Security
  • Spring Web
  • Spring Data JPA
  • OAuth2 Resource Server
  • Bean Validation
  • Maven

Banco de dados

  • PostgreSQL
  • H2

Infraestrutura

  • Docker & docker-compose
  • Redis
  • Amazon S3
  • Deploy

Arquitetura

O projeto segue arquitetura tradicional em camadas:

Client -> Controller -> Service -> Repository -> Database

Responsibilidades por camadas

Controller

  • Recebe requisição HTTP
  • Valida entrada de dados
  • Retorna respostas padronizadas

Service

  • Aplica regra de negócio
  • Controla fluxo da aplicação
  • Garante consistência de dados

Repository

  • Comunicação com o banco de dados via JPA

Security

  • Configuração do Spring Security
  • Controle de acesso baseado em roles

Infrastructure

  • Integrações externas (Redis, S3)

Segurança

A API utiliza Spring Security com OAuth2 Resource Server.

Estratégia adotada:

  • Autenticação stateless baseada em JWT
  • Token contém claims de roles
  • Conversão de roles para GrantedAuthority
  • Controle de acesso via autorização por role
  • Rotas públicas e protegidas configuradas explicitamente

Fluxo de autenticação

  • Usuário realiza login em /auth/login
  • API gera token JWT
  • Cliente envia token no header Authorization: Bearer ${JWT}
  • Token é validado pelo Resource Server
  • Acesso é concedido conforme role

Roles disponíveis

  • CUSTOMER
  • SELLER
  • ADMIN

Funcionalidades

Auth

  • Registro de usuário
  • Login com geração de JWT

Usuário

  • Visualização de perfil
  • Atualização de dados
  • Exclusão de contas

Produtos

  • CRUD completo
  • Controle de estoque
  • Upload de imagem (planejado para S3)

Carrinho

  • Associado ao usuário autenticado
  • Armazenamento temporário com Redis

Pedido

  • Conversão do carrinho em pedido
  • Cálculo automático do total
  • Atualização transacional de estoque

Exemplos de Requisições

Registro

POST /auth/register

Request:

{
    "username": "username",
    "password": "password",
    "firstName": "firstName",
    "lastName": "lastName"
}

Login

POST /auth/login

Request:

{
    "username": "username",
    "password": "password"
}

Response:

{
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." 
}

Acesso autenticado

Authorization: Bearer {token}

Testes

O projeto possui testes unitários utilizando:

  • JUnit 5
  • Mockito

Os testes cobrem:

  • Regras de negócio da camada Service
  • Validação de fluxos críticos
  • Comportamentos esperados em cenários de sucesso e erro

Tratamento de Erros

  • Uso de Exception Handler Global
  • Respostas padronizadas
  • Códigos HTTP adequados
  • Validação com Bean Validation

Documentação da API

A API é documentada utilizando Swagger, permitindo visualizar e testar os endpoints de forma interativa.

Acessos disponíveis

  • Swagger UI
http://localhost:8080/swagger-ui.html
  • Especificação OpenAPI
http://localhost:8080/v3/api-docs

Recursos disponíveis na documentação

  • Descrição detalhada de endpoints
  • Estrutura de request e response
  • Códigos HTTP possíveis

Como rodar o projeto

Pré-requisitos

  • Java 21+
  • Maven
  • Docker & docker-compose

Passos

[ TEMPORÁRIO ]

git clone https://github.com/0xCsr/ecommerce-backend.git
cd ecommerce-backend
mvn spring-boot:run

A aplicação iniciará em:

http://localhost:8080

Roadmap Técnico

  • Implementar domínio completo
  • Finalizar autenticação JWT stateless
  • Implementar controle de estoque transacional
  • Integrar PostgreSQL para ambiente de produção
  • Containerizar aplicação
  • Implementar cache com Redis
  • Adicionar testes unitários e de integração
  • Documentar API com Swagger/OpenAPI
  • Deploy em ambiente cloud (AWS ou Railway)

Objetivo do Projeto

Esse projeto foi desenvolvido como parte do meu processo de evolução como desenvolvedor backend Java, com foco em:

  • Arquitetura limpa
  • Segurança
  • Boas práticas de mercado
  • Preparação para sistemas escaláveis

Autor

César Missias

GitHub: https://github.com/0xCsr

Linkedin: https://www.linkedin.com/in/csrjr/

About

API RESTful de e-commerce desenvolvida com Spring Boot, incluindo gerenciamento de usuários, produtos, carrinho em Redis, pedidos e envio, seguindo boas práticas de arquitetura e segurança.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages