← Voltar aos projetos
online · 2026

Painel de Cadastro de Produtos

Verificador de inventário e padronizador de nomenclatura para acabar com produtos duplicados no cadastro

Next.js 15TypeScriptTailwind v4ExcelJSfastest-levenshtein

Nasceu de uma dor real: trabalhando no estoque de uma oficina mecânica, o mesmo produto físico aparecia cadastrado de três formas diferentes no sistema (ex: 'ELEMENTO FILTRANTE H100' e 'FILTRO DE OLEO H100'). O projeto reúne duas ferramentas — verificação de inventário e padronização de nomenclatura — construídas de forma genérica o suficiente para servir qualquer catálogo, não só peças automotivas.

Papel no projeto

Desenvolvedor único — reescrita em TypeScript/Next.js de um app anterior em Python/Streamlit.

O problema

  • •Mesmo produto cadastrado com nomes diferentes, gerando duplicidade e estoque contado errado
  • •Conferência manual do inventário físico contra o sistema, sujeita a erro
  • •Vocabulário técnico do setor (marca + viscosidade + certificação) difícil de padronizar 'no olho'

Objetivos

  • •Comparar a base cadastrada contra a contagem física com pipeline de matching confiável
  • •Padronizar nomenclatura via dicionário de equivalências configurável pelo usuário
  • •Exportar relatórios formatados prontos para uso
  • •Manter tudo funcionando sem backend, com backup/restore em JSON

Solução

Arquitetura

Next.js 15 (App Router) rodando inteiramente no navegador — leitura de planilha (SheetJS/PapaParse), matching e persistência (localStorage), sem servidor. Pipeline de matching em 5 etapas: exato → substring alfanumérico → partial ratio → substring espaçado → fuzzy (fastest-levenshtein) como último recurso.

Experiência de uso

Cada item mostra até 5 candidatos encontrados (não só o melhor), com confirmação manual direto na tela. Exportação em Excel com abas de resultado completo, pendências e resumo, cores por status e auto-filtro.

Decisões técnicas

  • •Fuzzy matching como última etapa, não a única: match exato/substring é mais confiável e mais rápido
  • •Camadas de correção no fuzzy (viscosidade como quase-ID do produto, stopwords técnicas ignoradas) pra reduzir falso positivo
  • •Dicionário de equivalências configurável pelo usuário em vez de regras fixas — o que torna o motor genérico pra qualquer setor
  • •Sem banco de dados: localStorage + backup/restore em JSON mantém o projeto sem custo de infraestrutura

Desafios

  • •Desenhar um pipeline de matching em etapas que equilibrasse velocidade e precisão sem virar uma caixa-preta
  • •Auditar candidatos (não só mostrar o melhor score) para permitir correção manual confiável
  • •Manter o motor de matching genérico, sem nada 'hardcoded' de óleo automotivo no código