API CRUD de inventário construída como um roteiro prático de evolução em Engenharia de Software, com foco em fundamentos, tomada de decisão consciente e construção de confiança técnica.
O objetivo não é apenas “fazer funcionar”, mas entender o porquê das decisões arquiteturais, técnicas e de processo ao longo do ciclo de desenvolvimento.
Desenvolver uma API de Inventário de forma incremental, iniciando simples (in-memory) e evoluindo até práticas profissionais como:
- Arquitetura em camadas
- Validação estruturada
- Testes automatizados
- Integração Contínua (CI)
- Docker
- Banco de Dados real
- Deploy e CD
- Infraestrutura como Código (IaC)
O foco é amadurecimento técnico, não velocidade.
Entidade central: Inventory Item
Propriedades:
Id: GuidName: stringQuantity: intCategory: stringCreatedAt: DateTime
- Nome e Categoria são obrigatórios
- Quantidade deve ser ≥ 0
IdeCreatedAtsão gerados automaticamente
GET /inventory→ Lista itensGET /inventory/{id}→ Busca por IdPOST /inventory→ Cria itemPUT /inventory/{id}→ Atualiza itemDELETE /inventory/{id}→ Remove item
Persistência inicial: em memória (volátil).
O projeto evolui obrigatoriamente na seguinte sequência:
- Git e GitHub fundamentals 0.1 Fundamentos de execução (.NET / runtime / JIT)
- API inicial em memória 1.1 Boas práticas REST e HTTP 1.2 Arquitetura em camadas (Domain, Application, Infra) 1.3 Validação estruturada
- Testes automatizados (unit tests) 2.1 HTTP e DNS aprofundado
- CI com GitHub Actions
- Docker e containers
- Banco de dados real
- Migrações de schema
- Deploy público
- Continuous Delivery (CD)
- Infraestrutura como Código (IaC)
Cada milestone deve ser documentada de forma reflexiva.
milestone-{numero}-{descricao}-username-feature
[TECH]Implementação técnica[ME]Reflexão e mentalidade[HO]Hands-on / Provas práticas
Cada milestone deve conter:
- O que foi construído
- Como foi construído
- Perguntas e dúvidas
- Erros cometidos e correções
- Reflexões pessoais
- Aprendizados
- O que não repetir
- Diagramas arquiteturais
A documentação é parte central do aprendizado.
- .NET 7+ (Web API Minimal)
- Swagger
- NUnit + FluentAssertions
- Docker
- Banco local (SQLite ou outro)
- GitHub Actions
- Entender antes de abstrair
- Simplicidade antes de arquitetura complexa
- Testes como ferramenta de confiança
- CI/CD como cultura, não apenas ferramenta
- Evolução incremental com consciência de trade-offs
- EF Core
- Autenticação e autorização
- Observabilidade (logs e tracing)
- Deploy em nuvem
- IaC com Terraform
Este roadmap é orientado para aprendizado pessoal. Adaptações são esperadas conforme contexto e objetivos individuais.
Este projeto não é apenas uma API. É um laboratório estruturado para desenvolver julgamento técnico e consistência como engenheiro de software.