Roda 100% offlineRuns 100% offline

Tudo num servidor Node local, dentro da fábrica: sem internet, sem nuvem, sem SaaS e sem banco de dados. Os dados nunca saem da máquina — a única fonte é uma pasta de PDFs no disco. Everything on a local Node server, inside the factory: no internet, no cloud, no SaaS and no database. Data never leaves the machine — the single source is a folder of PDFs on disk.

O Problema — o documento de entrada The Problem — the input document

A Indústria de Forjados São Romão (Dom Silvério/MG), fabricante de ferramentas forjadas, gerava seus relatórios de produção em PDF (modelo "Mapa de Produção por Data"). O que chegava ao gestor todo mês era um despejo monocromático de texto: três colunas secas — código, produto, produção — repetidas por 132 itens ao longo de 4 páginas. Sem um total sequer, sem gráfico, sem análise. Um documento feito para imprimir, não para entender.

The Indústria de Forjados São Romão (Dom Silvério/MG), a forged-tools manufacturer, produced its production reports as PDFs ("Production Map by Date" template). What reached the manager every month was a monochrome text dump: three dry columns — code, product, output — repeated across 132 items over 4 pages. Not a single total, no chart, no analysis. A document made to print, not to understand.

Para apresentar ou entender qualquer coisa a partir disso, o gestor tinha que:

To present or understand anything from it, the manager had to:

  • Somar e cruzar tudo na mão (ou digitar no Excel) — lento e sujeito a erro a cada fechamento. Sum and cross-reference everything by hand (or retype into Excel) — slow and error-prone every month.
  • Descobrir quem produziu o quê: o PDF não tem supervisor nenhum, só códigos de produto. Figure out who produced what: the PDF has no supervisor at all, only product codes.
  • Comparar meses e enxergar tendência abrindo vários PDFs lado a lado, manualmente. Compare months and spot trends by opening several PDFs side by side, manually.
  • E fazer tudo isso sem internet: a fábrica opera offline, então nada de nuvem ou SaaS. And do all of it with no internet: the factory runs offline, so no cloud or SaaS.

A Solução The Solution

Um app que usa uma pasta de PDFs como fonte de dados: ao abrir, o servidor lê a pasta, faz o parsing de cada PDF (Node + pdf.js) e entrega tudo pronto para a interface. Sem banco de dados, sem nuvem — só arquivos locais.

An app that uses a folder of PDFs as its data source: on launch, the server reads the folder, parses each PDF (Node + pdf.js) and serves everything ready to the interface. No database, no cloud — just local files.

  • Leitura sem margem de erro: Error-free reading: Cada PDF passa por conferências automáticas, incluindo um checksum do total (a soma dos produtos precisa bater com o "total produzido no período" impresso no rodapé) — prova matemática de que o parsing está correto. Each PDF goes through automatic checks, including a total checksum (the sum of products must match the "total produced in the period" printed in the footer) — mathematical proof that parsing is correct.
  • Mapa produto → supervisor: Product → supervisor map: Cada produto é associado a um supervisor, com a configuração salva em arquivo no disco (não em localStorage) — não se perde ao trocar de navegador. Each product is tied to a supervisor, with the configuration saved to a file on disk (not localStorage) — it survives switching browsers.
  • Análises consolidadas: Consolidated analytics: Relatórios por supervisor, por produto e consolidado de vários meses, a partir dos PDFs presentes na pasta. Reports by supervisor, by product and consolidated across several months, from the PDFs present in the folder.
  • Modo apresentação: Presentation mode: Uma visão pensada para o gerente apresentar os números em reunião, direto do app. A view designed for the manager to present the numbers in meetings, straight from the app.
  • Gestão de arquivos: File management: Enviar, baixar e remover PDFs pela própria interface — mas a pasta continua sendo a única "verdade". Upload, download and remove PDFs from the interface itself — yet the folder remains the single source of truth.
Interface do app de relatórios
A interface do app: seletor de período, exportação em PDF/CSV e destaques automáticos — tudo rodando local. The app interface: period selector, PDF/CSV export and automatic highlights — all running locally.

Antes → Depois Before → After

O mesmo dado, dois mundos. À esquerda, o PDF cru que chegava ao gestor; à direita, a mesma informação virando uma apresentação executiva pronta para a reunião.

Same data, two worlds. On the left, the raw PDF the manager received; on the right, the same information turned into a boardroom-ready executive presentation.

Antes · PDF cruBefore · raw PDF
MAPA DE PRODUÇÃO POR DATA
De: 01/05/2026 - Até: 31/05/2026
CODPRODUTOPROD
5100FLANGE SOBREPOSTA 1/2"3493
5101FLANGE SOBREPOSTA 3/4"3102
5102FLANGE SOBREPOSTA 1"4171
5103FLANGE ROSCADA 1/2"2431
5104FLANGE ROSCADA 1"2736
5105FLANGE CEGA 2"1676
5106FLANGE CEGA 3"1250
5107FLANGE DE PESCOCO 2"2076
5108FLANGE DE PESCOCO 4"1440
5200EIXO ARVORE 20MM4437
5205PINO GUIA 8MM6360
5207PINO ELASTICO 6MM7698
+ 132 itens · 4 páginas
Depois · apresentaçãoAfter · presentation
Depois: apresentação executiva

Modo Apresentação Presentation Mode

Um deck executivo em tela cheia, gerado automaticamente a partir dos PDFs. Média móvel, tendência, projeção, diagnóstico analítico e participação por supervisor — tudo pronto para projetar na reunião.

A full-screen executive deck, generated automatically from the PDFs. Moving average, trend, forecast, analytical diagnosis and per-supervisor share — all ready to project in the meeting.

Slide de evolução: barras, média móvel, tendência e projeção
Evolução e tendência — barras de produção, média móvel, linha de tendência, banda de controle e projeção do próximo período. Evolution and trend — production bars, moving average, trend line, control band and next-period forecast.

Destaques Highlights

100% Offline (sem internet) Offline (no internet)
0 Bancos de dados Databases
132 Produtos por relatório Products per report

Stack

Next.js rodando como servidor Node local, com o parsing de PDF acontecendo no servidor (fora do bundle do webpack) para garantir precisão e performance.

Next.js running as a local Node server, with PDF parsing happening on the server (outside the webpack bundle) to ensure accuracy and performance.

Next.js 14 React 18 TypeScript Tailwind CSS pdfjs-dist Node.js Offline / Local