Skip to content

About

💻 Java & Spring Boot backend projects with REST APIs, security, testing and clean architecture.

Topics

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

32 Commits

Folders and files

Repository files navigation

📦 ASJCatalog — Backend Engineering Journey | Java & Spring Boot

An open source product catalog API built chapter by chapter: layered architecture, automated tests, OAuth2 security, domain modeling and data access with Java and Spring Boot.

O ASJCatalog é a API de um catálogo de produtos construída em Java e Spring Boot. O nome vem das iniciais de Albert Silva de Jesus: o projeto nasceu da base do DSCatalog, do curso DevSuperior, e evoluiu de forma independente até se tornar praticamente outro projeto.

É um projeto open source e sem fins comerciais: um laboratório de aprendizado, uma fonte de consulta para o futuro e um material para ajudar desenvolvedores júnior. A evolução é contada em capítulos, um por branch, cada um publicado no LinkedIn.

📖 Documentação técnica · 🚀 Primeiros Passos · 🗂️ Issues · 🎯 Pronto para produção · 🤝 Contribuir · 📊 Relatório JaCoCo


✨ Destaques técnicos

  • Listagem de produtos sem N+1: paginação numa consulta nativa e carregamento das categorias numa segunda consulta com JOIN FETCH. → DATA-ACCESS
  • OAuth2 com JWT: Authorization Server e Resource Server na mesma aplicação, com access token JWT, refresh token com rotação e controle de acesso por roles. → AUTHENTICATION
  • Fluxos de conta com e-mail: cadastro, ativação, recuperação e redefinição de senha, com e-mails HTML gerados pelo Thymeleaf. → ACCOUNT-FLOWS
  • Internacionalização: mensagens da API em português do Brasil, inglês e espanhol, escolhidas pelo cabeçalho Accept-Language. → INTERNATIONALIZATION
  • Suíte de testes em duas fases: testes de unidade no Surefire e testes de integração (*IT) no Failsafe, todos executados com ./mvnw verify. → TESTING
  • Cobertura medida e exigida no build: o JaCoCo gera relatórios dos testes de unidade, de integração e dos dois juntos; o consolidado cobre 96% das linhas e 92% dos branches, e o build falha se a cobertura cair abaixo do limite mínimo. → TESTING · Relatório publicado
  • Decisões técnicas registradas: contexto, motivo, alternativas e consequências das principais escolhas do projeto. → DESIGN-DECISIONS

📚 Capítulos

Cada capítulo fica em uma branch própria, com um README que apresenta o que foi construído naquela etapa.

Nº Tema Branch Resumo
01 Operações CRUD com Spring Boot chapter-01-crud CRUD de produtos e categorias em arquitetura em camadas, com DTOs (records), mappers, paginação e tratamento global de exceções.
02 Testes automatizados no back-end chapter-02-tests Testes de unidade, de repositório e da camada web com JUnit 5, Mockito e MockMvc, usando factories e foco em testabilidade.
03 Validação e segurança (OAuth2 | JWT) chapter-03-validation-security Spring Security 6 com Authorization Server e Resource Server, JWT, controle de acesso por roles e Bean Validation.
04 Domínio, ORM, casos de uso e acesso a dados chapter-04-domain-orm Ciclo de vida completo da conta com e-mails transacionais, JPQL e SQL nativo, solução do N+1 e domínio em módulos inspirados em DDD.
05 Cobertura de testes com JaCoCo chapter-05-jacoco Cobertura dos testes de unidade e de integração com JaCoCo, limite mínimo de cobertura no build e revisão da qualidade de toda a suíte de testes.

🌿 Onde está o código

Branch O que contém
develop O projeto completo e atualizado (capítulo 05), com a documentação técnica em docs/. É nela que o trabalho acontece e para ela que vão os Pull Requests.
main Esta página de entrada. Recebe o código do projeto apenas no deploy final; a pasta backend/ daqui é, por enquanto, só o esqueleto inicial.
chapter-* O registro de cada capítulo, como foi publicado.

📖 Documentação técnica

Os guias do backend (primeiros passos, configuração, arquitetura, domínio, acesso a dados, endpoints, autenticação, testes, convenções e decisões técnicas), o contrato de segurança e o histórico de auditorias estão reunidos no Índice da Documentação, na branch develop.


🖥️ Frontend

O frontend do ASJCatalog é independente e fica em outro repositório: asjcatalog-frontend.


🧭 Próximos passos

  • Falta um capítulo para encerrar a evolução do projeto: Docker e CI/CD. Ele será publicado em uma nova branch.
  • As melhorias pendentes estão registradas como issues. As necessárias para colocar a API em produção estão no milestone Pronto para produção.

🤝 Como contribuir

Qualquer pessoa pode contribuir, inclusive quem está começando. Escolha uma issue (as marcadas com good first issue são um bom ponto de partida), crie sua branch a partir da develop e abra o Pull Request para a develop.

O passo a passo completo está no CONTRIBUTING.md. Ao participar, siga o Código de Conduta.


📄 Licença

Distribuído sob a licença MIT. Veja o arquivo LICENSE.


👨‍💻 Autor

Albert Silva de Jesus
Desenvolvedor Backend Java | Spring Boot


📎 Contato

LinkedIn Gmail

About

💻 Java & Spring Boot backend projects with REST APIs, security, testing and clean architecture.

Topics

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages