Continuous learning focused on scalable systems, clean architecture, and production-ready backend solutions.
Scalable Backend Systems • REST APIs • Clean Architecture • Security • Testing • DevOps
Este repositório documenta minha jornada prática e contínua de estudos em desenvolvimento backend com Java e Spring Boot, utilizando como referência formações da DevSuperior e conteúdos avançados do ecossistema Java.
A proposta deste projeto é consolidar fundamentos técnicos, aplicar boas práticas de mercado e evoluir progressivamente por meio de capítulos organizados em branches, partindo de operações CRUD até tópicos como segurança, testes, Docker, deploy e arquitetura escalável.
Transformar estudo estruturado em experiência prática, consolidando competências relevantes para o desenvolvimento backend moderno e alinhado às exigências do mercado.
- Fortalecer fundamentos sólidos em Java e Spring Boot
- Aplicar boas práticas de arquitetura e design de software
- Simular cenários reais de mercado
- Desenvolver projetos completos e evolutivos
- Construir um portfólio técnico consistente e profissional
- Documentar aprendizados com clareza e organização
Ao longo desta jornada, os projetos exploram competências relevantes para o mercado:
- Desenvolvimento de APIs RESTful
- Arquitetura em camadas
- Clean Code e organização de projeto
- Spring Boot e ecossistema Spring
- Persistência com JPA / Hibernate
- Segurança com Spring Security, OAuth2 e JWT
- Testes unitários e integração
- Versionamento de banco com Flyway
- Containerização com Docker
- Deploy e CI/CD
- Boas práticas corporativas de backend
A stack utilizada nesta jornada foi selecionada com foco em desenvolvimento backend moderno, escalável e alinhado às práticas adotadas no mercado. O ecossistema contempla construção de APIs REST, persistência de dados, autenticação segura, testes automatizados, observabilidade, documentação e preparação para deploy.
| Categoria | Tecnologias | Finalidade |
|---|---|---|
| ☕ Linguagem | Java 17+ | Base principal do desenvolvimento utilizando recursos modernos da linguagem e versão LTS amplamente adotada no mercado. |
| 🌱 Framework Principal | Spring Boot | Criação rápida e robusta de aplicações backend com configuração simplificada e alta produtividade. |
| 🌐 APIs REST | Spring Web | Construção de endpoints RESTful, controllers, serialização JSON e comunicação HTTP. |
| 🗄️ Persistência | Spring Data JPA | Abstração de acesso a dados utilizando repositories e integração com bancos relacionais. |
| 🧩 ORM | Hibernate ORM | Mapeamento objeto-relacional (Entity ↔ Tabelas), gerenciamento de contexto e consultas SQL. |
| ✅ Validação | Jakarta Bean Validation | Validação declarativa de DTOs e regras de entrada utilizando annotations integradas ao Spring Boot. |
| 🔐 Segurança | Spring Security | Controle de autenticação, autorização e proteção de rotas da aplicação. |
| 🎫 Auth Tokens | OAuth2 / JWT | Implementação de autenticação segura baseada em tokens e controle de acesso. |
| 🐘 Banco Principal | PostgreSQL | Banco relacional robusto utilizado em ambiente de desenvolvimento e cenários reais. |
| ⚡ Banco de Testes | H2 Database | Banco em memória para execução de testes rápidos, isolados e reproduzíveis. |
| 🔄 Migrations | Flyway | Versionamento e controle evolutivo do schema do banco de dados. |
| 🧪 Testes Unitários | JUnit 5 | Criação de testes automatizados para regras de negócio e componentes isolados. |
| 🎭 Mocking | Mockito | Simulação de dependências para testes desacoplados e isolados. |
| 🔍 Assertions | AssertJ | Assertions fluentes e legíveis para validação de cenários de teste. |
| 🔬 Testes Spring | Spring Boot Test | Testes integrados utilizando contexto completo do ecossistema Spring. |
| 🌍 Testes de API | MockMvc / Postman | Validação de endpoints REST, contratos HTTP e comportamento da aplicação. |
| 📦 Build Tool | Maven | Gerenciamento de dependências, empacotamento e ciclo de build do projeto. |
| 🐳 Containerização | Docker | Padronização de ambiente e preparação da aplicação para deploy. |
| 🚀 Entrega Contínua | CI/CD (conceitos) | Automação de build, testes e processos de integração contínua. |
| 📄 Documentação API | Swagger / OpenAPI | Documentação interativa e explorável dos endpoints REST. |
| 📘 Documentação Técnica | JavaDoc | Documentação técnica de classes, métodos e contratos da aplicação. |
| 📊 Observabilidade | SLF4J / Logback | Logs estruturados para rastreabilidade, monitoramento e debugging. |
| 💻 IDE Principal | IntelliJ IDEA | Ambiente principal de desenvolvimento para aplicações Java. |
| 📝 Editor Auxiliar | VS Code | Apoio para documentação, frontend e edições rápidas. |
| 🧰 Banco / Queries | pgAdmin | Administração, inspeção e gerenciamento do PostgreSQL. |
| 🌍 Versionamento | Git / GitHub | Controle de versão, gerenciamento de branches e portfólio técnico. |
Durante os capítulos, são utilizadas práticas comuns em ambientes profissionais:
- 🔹 Configuração por perfis (
dev,test,prod) - 🔹 Banco em memória para testes rápidos
- 🔹 Integração com PostgreSQL
- 🔹 Migrations com Flyway
- 🔹 Logging estruturado com Logback
- 🔹 Externalização via variáveis de ambiente
- 🔹 Documentação de API com Swagger / OpenAPI
- 🔹 Tratamento global de exceções
- 🔹 Padronização de respostas REST
- 🔹 Organização modular do projeto
Cada capítulo está isolado em uma branch específica, representando a evolução incremental do projeto.
| Capítulo | Tema | Descrição | Acesso |
|---|---|---|---|
| 01 | CRUD | Operações básicas e estrutura inicial da API | Acessar |
| 02 | Testes | Testes automatizados (unitários e integração) | Acessar |
| 03 | Segurança | Validação, autenticação e autorização | Acessar |
| 04 | Domínio | Modelagem de domínio e ORM | Acessar |
| 05 | Consultas | Queries complexas e performance | Acessar |
| 06 | Docker & Deploy | Containerização, deploy e CI/CD | Acessar |
| Projeto | Descrição | Status |
|---|---|---|
| ASJ Catalog | API de catálogo de produtos | 🔄 Em evolução |
Mais importante do que apenas gerar código rapidamente é compreender profundamente o que está sendo construído.
Por isso, este repositório prioriza:
- Estrutura sólida
- Separação de responsabilidades
- Código limpo
- Evolução sustentável
- Escalabilidade
- Manutenibilidade
- Fundamentos consistentes
Ferramentas aceleram produtividade. Conhecimento sólido gera valor real.
- A branch
mainfunciona como hub central de navegação. - Cada branch representa uma etapa real da evolução técnica.
- O conteúdo é atualizado continuamente.
- Todo material foi organizado pensando em clareza, progressão e profissionalismo.
Este repositório também tem como objetivo incentivar aprendizado contínuo, troca de conhecimento e evolução colaborativa no ecossistema Java e Spring Boot.
Sugestões, melhorias, correções e discussões técnicas são bem-vindas.
Antes de contribuir, consulte:
- https://docs.spring.io/spring-boot/docs/current/reference/html/
- https://spring.io/projects/spring-boot
Albert Silva de Jesus
Backend Developer • Java • Spring Boot • REST APIs