Skip to content
@inventory-control-project

inventory-control-project

Sistema de Controle de Inventário

Um espaço para aprender desenvolvimento de software através da construção de sistemas reais, explorando o ciclo completo de uma aplicação.

Propósito

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.

Como aprendemos

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.

Sem IA

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.

O que queremos aprender

Arquitetura

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

Frontend

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

Backend

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

Engenharia de software

  • Git
  • Branches
  • Pull Requests
  • Code Review
  • Testes
  • Docker
  • CI/CD
  • Deploy
  • Logs
  • Observabilidade
  • Manutenção

A regra principal

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.

O objetivo final

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.

Popular repositories Loading

  1. frontend frontend Public

  2. backend-go backend-go Public

  3. backend-python backend-python Public

  4. docs docs Public

  5. .github .github Public

Repositories

Showing 5 of 5 repositories

Top languages

Loading…

Most used topics

Loading…