Um espaço para aprender desenvolvimento de software através da construção de sistemas reais, explorando o ciclo completo de uma aplicação.
Este projeto não foi criado com o objetivo de chegar rapidamente a uma aplicação pronta.
O objetivo é percorrer o caminho necessário para construir, entender e operar um sistema de ponta a ponta.
A ideia é transformar cada etapa do desenvolvimento em uma oportunidade de aprendizado: desde a definição do problema e das decisões arquiteturais até desenvolvimento, testes, CI/CD, deploy e manutenção.
O desenvolvimento é guiado por perguntas, decisões e experimentação.
Antes de implementar uma solução, buscamos entender:
- Qual problema estamos tentando resolver?
- Quais são as alternativas?
- Quais são os trade-offs?
- Por que essa abordagem faz sentido?
- Qual é a responsabilidade de cada parte do sistema?
- O que acontece quando algo dá errado?
- Como essa decisão afetará o sistema no futuro?
A implementação é apenas uma parte do processo.
Este projeto é desenvolvido 100% sem uso de IA para implementação do código.
Isso significa que decisões, implementação, debugging, refatorações e resolução de problemas são realizados diretamente pelos desenvolvedores.
Documentação oficial, livros, artigos, fóruns e outras fontes de conhecimento podem ser utilizados normalmente.
A restrição existe para que o aprendizado venha do processo de investigar, raciocinar, implementar, errar e corrigir.
- Como estruturar uma aplicação.
- Como dividir responsabilidades.
- Como escolher uma arquitetura.
- Quais problemas uma arquitetura resolve.
- Quais são os custos e trade-offs de cada decisão.
- Como frontend, backend e banco de dados se relacionam.
- Como uma aplicação React é estruturada.
- Como uma requisição percorre o frontend.
- Como páginas, componentes, hooks, estados e serviços se relacionam.
- Como lidar com loading, erros e estados da aplicação.
- Como autenticação funciona no frontend.
- Como organizar uma aplicação à medida que ela cresce.
- Como uma requisição chega ao servidor.
- Como handlers/controllers, serviços e repositories se relacionam.
- Onde ficam as regras de negócio.
- Como validar dados.
- Como persistir informações.
- Como tratar erros.
- Como autenticação e autorização funcionam.
- Git
- Branches
- Pull Requests
- Code Review
- Testes
- Docker
- CI/CD
- Deploy
- Logs
- Observabilidade
- Manutenção
Não queremos apenas saber como fazer.
Queremos conseguir explicar por que fazemos daquela forma.
Se uma decisão não puder ser explicada, ela ainda precisa ser investigada.
Ao terminar o projeto, o objetivo não é apenas ter um sistema de controle de estoque funcionando.
Queremos ser capazes de olhar para uma aplicação e compreender seu funcionamento como um todo:
Problema
↓
Requisitos
↓
Arquitetura
↓
Frontend
↓
API
↓
Backend
↓
Banco de dados
↓
Testes
↓
CI
↓
Deploy
↓
Monitoramento
↓
Manutenção
Mais importante do que chegar ao final é entender o caminho percorrido.