Voltar aos projetos
Tela inicial do projeto Stockly

Fullstack · Estoque

Stockly

Controle de estoque construído sobre um razão de movimentações imutável: cada entrada, saída e ajuste é um lançamento append-only que atualiza o saldo na mesma transação. Daí saem saldo confiável, alerta de ruptura, curva ABC e rastreabilidade.

Stack

Django 6Tailwind v4EChartsJavaScript puroPostgreSQLCeleryRedisWhiteNoiseDockerNginxGitHub Actions

Telas

Clique em uma tela para ampliar e ler o conteúdo.

Dashboard: capital imobilizado, itens abaixo do mínimo e entradas × saídas por dia
Catálogo de produtos com SKU, custo, mínimo e máximo
Lista filtrada pelos itens abaixo do estoque mínimo
Ficha do produto com saldo, histórico e valorização
O razão: entradas, saídas e ajustes como lançamentos que não se editam
Registro de movimentação: saída acima do saldo é recusada na hora
Relatórios: capital imobilizado, curva ABC e itens sem saída
Categorias: cadastro de apoio com o vínculo explicado na tela
Fornecedores, com os produtos vinculados a cada um
Formulário de produto: SKU, unidade, custo, mínimo e máximo

O problema

  • Estoque controlado em planilha: o saldo é digitado, então ninguém sabe se o número está errado por venda não lançada, por perda ou por erro de digitação.
  • Sem histórico confiável, a correção é sobrescrever a célula — e a razão do ajuste desaparece junto.
  • Falta de item só aparece quando o cliente pede e não tem, porque nada avisa que o produto passou do mínimo.

O que eu construí

  • Razão de movimentações append-only: entrada, saída e ajuste são lançamentos que não se editam nem se apagam — corrige-se com um novo lançamento, e o histórico continua explicando cada número.
  • Saldo atualizado na mesma transação do lançamento, e saída acima do saldo é recusada: o estoque nunca fica negativo.
  • Dashboard com capital imobilizado, itens abaixo do mínimo (com link para a lista já filtrada), entradas × saídas por dia e reposição sugerida.
  • Relatórios de top 10 por capital imobilizado, curva ABC por valor acumulado e itens parados sem saída no período.
  • Tarefa Celery de conciliação recalcula o saldo a partir do razão e registra qualquer divergência — o razão é a fonte da verdade, não o campo de saldo.
  • Exclusão de registro com vínculo é explicada na tela, não estourada como erro de banco.