/125DaysOfCodeAndLanguage

Documenting my 125-days journey of coding and language learning. Join me as I code and improve my language skills daily. 🚀🌍💻📚

Primary LanguageJavaMIT LicenseMIT

125 Days of Code - Full Stack Development

Sobre este Repositório

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.


Estrutura do Repositório

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.


Objetivos de Aprendizado

  • 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.

Progresso Semanal

Semana 1-2: Programação Orientada a Objetos em Java

  • 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

Semana 3-4: Programação Avançada em Java

  • 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

Semana 5-6: Spring Framework e Banco de Dados

  • 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

Semana 7-8: Frontend com Angular

  • 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

Semana 9-10: Desenvolvimento de Aplicação Full Stack

  • 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

Semana 11-12: Testes, DevOps e Tópicos Avançados

  • 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

Semana 13-14: Tópicos Especializados e Avançados

  • 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

Semana 15-16: Projetos Avançados e Preparação Final

  • 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

Contribuições e Feedback

Sinta-se à vontade para explorar o código, aprender com ele e contribuir com sugestões ou melhorias. Qualquer feedback é bem-vindo!


Contato


Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.