Este repositório documenta minha jornada de 125 dias para me tornar um especialista em desenvolvimento backend. Aqui, você encontrará códigos, notas, projetos e desafios realizados ao longo do meu aprendizado, abrangendo desde fundamentos de programação orientada a objetos em Java até conceitos avançados de arquitetura de microserviços e aplicativos nativos da nuvem.
O repositório está organizado por semanas, cada uma focando em diferentes aspectos e tecnologias essenciais para o desenvolvimento backend. Dentro de cada diretório semanal, você encontrará subpastas para cada dia, contendo exercícios, anotações e projetos relevantes.
- Dominar os conceitos de Programação Orientada a Objetos em Java.
- Compreender e implementar estruturas de dados avançadas e multithreading em Java.
- Desenvolver habilidades em frameworks modernos como Spring e Angular.
- Criar aplicações Full Stack integrando backend Java com frontend Angular.
- Implementar práticas de DevOps usando Docker, Kubernetes e serviços de nuvem.
- Aprimorar conhecimentos em testes unitários, integração, CI/CD, microserviços e segurança.
- Dia 1-3: Classes e Objetos
- Dia 1: Revisão dos conceitos básicos de Java [x]
- Dia 2: Exercícios práticos de fixação [x]
- Dia 3: Criação de classes e instâncias de objetos
- Dia 4-6: Herança e Composição
- Dia 4: Introdução à herança em Java
- Dia 5: Composição de classes
- Dia 6: Exercícios práticos com herança e composição
- Dia 7-9: Polimorfismo
- Dia 7: Entendendo polimorfismo em Java
- Dia 8: Métodos de sobrecarga e sobreposição
- Dia 9: Exercícios práticos de polimorfismo
- Dia 10-12: Interfaces e Classes Abstratas
- Dia 10: Uso de interfaces
- Dia 11: Trabalhando com classes abstratas
- Dia 12: Exercícios e projetos práticos
- Dia 13-14: Consolidação da POO
- Desenvolvimento de pequenos projetos para consolidar o aprendizado em POO
- Dia 15-17: Coleções e Genéricos
- Dia 15: Introdução às coleções em Java
- Dia 16: Uso de genéricos
- Dia 17: Exercícios práticos com coleções e genéricos
- Dia 18-20: Log4j e Técnicas Avançadas
- Dia 18: Configuração e uso do Log4j
- Dia 19-20: Aprofundamento em técnicas avançadas de Java
- Dia 21-24: Multithreading e Concorrência
- Dia 21-22: Fundamentos de multithreading e concorrência
- Dia 23-24: Exercícios e práticas em multithreading
- Dia 25-27: Introdução ao Spring Framework
- Dia 25: Inversão de Controle e Injeção de Dependência
- Dia 26-27: Práticas básicas com Spring
- Dia 28-30: Spring MVC e REST APIs
- Dia 28: Fundamentos do Spring MVC
- Dia 29: Construção de APIs REST com Spring
- Dia 30: Exercícios práticos com Spring MVC e REST
- Dia 31-34: Segurança com Spring e SQL Avançado
- Dia 31-32: Implementação de segurança com Spring
- Dia 33-34: SQL avançado, JPA e Hibernate
- Dia 39-41: JavaScript ES6+ e TypeScript
- Dia 39: JavaScript ES6+ fundamentos
- Dia 40: Introdução ao TypeScript
- Dia 41: Exercícios práticos com JavaScript e TypeScript
- Dia 42-45: Fundamentos do Angular
- Dia 42-43: Componentes, Diretivas e Serviços em Angular
- Dia 44-45: Exercícios e práticas em Angular
- Dia 46-48: RxJS e Observáveis
- Dia 46: Introdução ao RxJS
- Dia 47-48: Uso de Observáveis em Angular
- Dia 49-52: Angular Material e Design Responsivo
- Dia 49-50: Introdução ao Angular Material
- Dia 51-52: Práticas em design responsivo com Angular
- Dia 53-55: Planejamento e Design de Aplicações
- Dia 53-55: Planejamento, design e estruturação da aplicação full stack
- Dia 56-59: Desenvolvimento do Back-end com Spring Boot
- Dia 56-58: Construção do back-end com Spring Boot
- Dia 59: Revisão e teste do back-end
- Dia 60-62: Desenvolvimento Front-end com Angular
- Dia 60-61: Construção do front-end com Angular
- Dia 62: Integração front-end e back-end
- Dia 63-66: Integração e Autenticação
- Dia 63-65: Implementação de JWT e OAuth2
- Dia 66: Testes de integração e autenticação
- Dia 67-69: Testes Unitários e de Integração
- Dia 67-68: Testes com JUnit e Mockito
- Dia 69: Práticas de teste em Java
- Dia 70-73: CI/CD e Docker
- Dia 70-71: Introdução ao CI/CD
- Dia 72-73: Práticas com Docker
- Dia 74-76: Kubernetes e Microserviços com Spring Cloud
- Dia 74-75: Kubernetes para gerenciamento de contêineres
- Dia 76: Microserviços com Spring Cloud
- Dia 77-80: Padrões de Design e Práticas Avançadas
- Dia 77-78: Padrões de design em Java e Angular
- Dia 79-80: Práticas avançadas de desenvolvimento
- Dia 81-83: Arquitetura SOLID e Limpa em Java
- Dia 81-82: Princípios SOLID em Java
- Dia 83: Arquitetura limpa e boas práticas
- Dia 84-86: Arquitetura Avançada de Microserviços
- Dia 84-85: Estudo aprofundado de microserviços
- Dia 86: Práticas avançadas em microserviços
- Dia 87-89: Desempenho e Otimização em Aplicações Spring
- Dia 87-88: Técnicas de otimização de
desempenho
- Dia 89: Práticas de otimização em aplicações Spring
- Dia 90-92: Segurança Avançada e OAuth2 com JWT
- Dia 90-91: Segurança avançada em aplicações
- Dia 92: Aprofundamento em OAuth2 e JWT
- Dia 93-95: Angular Avançado
- Dia 93-94: Gerenciamento de estado com NGRX
- Dia 95: Otimização e carregamento preguiçoso em Angular
- Dia 96-98: WebSockets e Comunicação em Tempo Real
- Dia 96-97: Implementação de WebSockets com Spring e Angular
- Dia 98: Práticas em comunicação em tempo real
- Dia 99-100: Aplicações Cloud Native
- Dia 99: Introdução às aplicações cloud native
- Dia 100: Práticas com AWS/GCP/Azure em Spring Boot e Angular
- Dia 101-110: Projeto Final Integrado
- Dia 101-105: Desenvolvimento do projeto focando em Microserviços, Cloud e Full Stack
- Dia 106-110: Continuação do desenvolvimento e revisão do projeto
- Dia 111-115: Implementação de DevOps no Projeto
- Dia 111-113: Integração de CI/CD, Docker e Kubernetes no projeto
- Dia 114-115: Revisão e ajustes finais em DevOps
- Dia 116-119: Otimização, Segurança e Testes de Carga
- Dia 116-117: Otimização de desempenho e segurança
- Dia 118-119: Execução de testes de carga e ajustes finais
- Dia 120-124: Revisão e Ajustes Finais
- Dia 120-123: Revisão geral e ajustes finais no projeto
- Dia 124: Preparação para a apresentação
- Dia 125: Apresentação do Projeto Final
Sinta-se à vontade para explorar o código, aprender com ele e contribuir com sugestões ou melhorias. Qualquer feedback é bem-vindo!
- Email: [ghenriquecoelhosantos@gmail.com]
- LinkedIn: [https://www.linkedin.com/in/ghenriquec/]
Este projeto está sob a licença MIT. Veja o arquivo LICENSE
para mais detalhes.