Estoque de 6 lojas sincronizado com o Omie, com app que roda sem internet.
Next.js 16
React 19
TypeScript
Tailwind CSS
Postgres
O problema
Uma rede com 6 unidades controlava o estoque direto no Omie, sem enxergar o que estava vencendo, as notas pendentes ou os erros de sincronização. Os relatórios de compras e faturamento ficavam defasados porque o histórico nunca tinha sido puxado por inteiro.
O que eu fiz
Painel “Precisa de atenção” com produtos abaixo do mínimo, vencidos, vencendo em 7 dias, transferências abertas e notas pendentes.
Sincronização em duas camadas com o Omie (webhook em tempo real e rotina a cada 10 minutos), com disjuntor para não tomar bloqueio por excesso de chamadas.
Etiquetas e catálogo A4 com QR code, inventário com leitura pela câmera, transferências e ordens de produção.
Relatórios de faturamento por dia contra a meta, ranking de produtos e exportação em Excel, PDF e PowerPoint.
App desktop para Windows que funciona offline, com fila que sobe para o servidor quando a internet volta.
Destaques
Não trava o Omie
Limite nas novas tentativas e disjuntor: as chamadas do inventário caíram de 409 para 8 na mesma janela.
Plano B do banco
Depois de uma queda do banco gratuito, montei uma réplica num servidor próprio com 40 das 43 tabelas ao vivo.
O histórico que faltava
Importei notas e ordens desde julho de 2025: uma loja tinha 3 ordens registradas num mês em que o real era 13.135.
Ligado ao Norte Vendas
Uma venda no PDV gera ordem de produção e baixa de estoque na loja.
Em números
lojas reais integradas
6
chamadas ao Omie no inventário, onde antes eram 409
8
de 43 tabelas replicadas ao vivo no servidor reserva