DSCommerci
E-commerce full stack com Next.js, React e TypeScript integrado à API Java com Spring Boot e PostgreSQL. Reúne catálogo, carrinho, autenticação, pedidos e administração de produtos, com Docker, CI no GitHub Actions e deploy contínuo do backend no Railway. Front-end publicado na Netlify.
Funcionalidades & decisões técnicas
- Catálogo com busca, ordenação, paginação e detalhes dos produtos.
- Carrinho persistente, ajuste de quantidades e criação e consulta de pedidos.
- OAuth2 e JWT com permissões para clientes e administradores.
- Integração pelo servidor Next.js e sessão em cookie HttpOnly.
- Painel administrativo com cadastro, edição e exclusão de produtos.
- API em camadas com JPA/Hibernate, DTOs, validação e tratamento de erros.
Arquitetura, dados & segurança
- API REST em Java 21 e Spring Boot, organizada em controllers, services, repositories, entidades e DTOs.
- Spring Data JPA e Hibernate para modelar produtos, categorias, usuários, perfis, pedidos, itens e registros de pagamento.
- Busca de produtos com JPQL, paginação e ordenação; transações com @Transactional na criação e consulta de pedidos.
- Spring Security e OAuth2 Authorization Server com JWT, perfis de cliente e administrador e consulta de pedido restrita ao titular ou administrador.
- Validação de entrada e tratamento global de exceções, com respostas para erros de validação, acesso e recursos não encontrados.
- Next.js como intermediário entre navegador e API: credenciais OAuth no servidor e token em cookie HttpOnly, Secure em produção e SameSite=Lax.
Docker & ambientes
- Dockerfile com build em duas etapas: compilação com Maven e Java 21, seguida de imagem de execução com Eclipse Temurin JRE 21.
- Container final com apenas o JAR, execução com usuário sem privilégios de root e porta configurável pela variável PORT do Railway.
- Docker Compose para PostgreSQL 14 e pgAdmin, com volumes persistentes e rede compartilhada no ambiente local.
- Perfis test, dev e prod: H2 em memória para testes e PostgreSQL para desenvolvimento e produção.
- Conexão de produção configurada por variáveis de ambiente, com URL, usuário e senha do banco separados do código.
CI/CD, testes & publicação
- CI do backend com GitHub Actions: Maven Wrapper e Java 21 para compilar, executar testes e empacotar a aplicação com mvnw verify.
- Verificação automatizada do padrão dos títulos de pull requests, com testes do validador de mensagens.
- Workflow do backend acionado por pull requests, pushes em main/master, fila de merge e execução manual.
- Deploy contínuo do backend no Railway, com aplicação Java em container e persistência em PostgreSQL.
- CI do front-end com GitHub Actions: instalação das dependências, build do Next.js e testes de ponta a ponta com Playwright e Chrome.
- Cenários de interface para catálogo, carrinho, autenticação, pedidos e administração, usando backend de teste isolado.
- Front-end publicado na Netlify com suporte às rotas de servidor do Next.js e integração com a API no Railway.



