Instalável e pensado para offline
O app tem manifest.webmanifest e sw.js.
Cache de assets, tema próprio e lançamento pela tela inicial do
celular — sem app store, sem download, sem fricção pro operador.
PWA mobile-first para registrar, atender e analisar paradas industriais. Cobre o ciclo completo — do QR colado na máquina até o indicador no relatório — com captura de foto, vídeo e áudio direto no navegador, ditado por voz e leitura de QR sem sair do app.
Quando uma máquina para, o time precisa responder rápido: o que parou, quando, por quê, quem atende, quanto custou em tempo? Papel não sobrevive ao turno. Planilha vira ilha. Indicador chega tarde.
Este sistema centraliza o fluxo inteiro em uma interface que funciona na mão do técnico em campo — com registro offline, anexos capturados na hora e sincronização quando volta o sinal.
Do apontamento no chão de fábrica ao indicador do mês.
Técnico digita a chapa. O sistema consulta o cadastro e preenche automaticamente nome, cargo e gestor — evitando digitação redundante em campo.
Escolher o setor filtra as máquinas disponíveis. No salvar, há validação cruzada: se a máquina não pertence ao setor informado, o registro é bloqueado com mensagem clara.
Tipo de falha, causa-raiz e componente saem de listas controladas — com <datalist> de sugestões. Nada de campo livre que vira bagunça no relatório.
Chips clicáveis categorizam o que foi feito na hora e o que fica como ação preventiva. Vira dado estruturado para o Pareto, não texto solto.
Foto via câmera, vídeo curto (limite de 20 MB) e áudio de até 60 s — todos capturados no próprio navegador com MediaRecorder e enviados com barra de progresso.
Status (já encerrada ou em andamento) + tempo total em formato livre (45min, 1h30, 2h). Observação aceita ditado por voz via SpeechRecognition.
Reproduções da interface com dados fictícios. Nomes, códigos e horários foram alterados por confidencialidade.
Nota de confidencialidade. Por acordo com o cliente, nenhuma tela de produção é exibida. Os mockups acima reproduzem o comportamento real da interface com dados fictícios.
Seis pontos do sistema que mostram maturidade de produto, não só de tela.
O app tem manifest.webmanifest e sw.js.
Cache de assets, tema próprio e lançamento pela tela inicial do
celular — sem app store, sem download, sem fricção pro operador.
Com 10 dígitos, o sistema busca o técnico em state.db.tecnicos
e preenche nome, cargo e gestor automaticamente. Se a chapa
não bate com ninguém, avisa. Se bate com o currentUser,
usa o próprio usuário como fallback — sem travar o fluxo em campo.
A cascata filtra no select, mas o salvar revalida: se a máquina não pertence ao setor escolhido, o registro é bloqueado com mensagem explícita. Nada de dado inconsistente entrar no banco por causa de estado velho em memória.
Câmera via capture="environment", vídeo com limite de
20 MB, e áudio gravado com MediaRecorder — 60 s
máx, com contador ao vivo e preview. Upload feito em paralelo com
contador “enviando 2 de 5…”.
O campo de observação tem botão de microfone que usa
SpeechRecognition. Em ambiente industrial, técnico de
luva agradece: descreve a ocorrência falando, não digitando.
Toda leitura/escrita passa por data/api.js. Hoje ele
persiste em localStorage — amanhã vira Supabase ou
qualquer outro back-end sem tocar em service ou view. Zero
acoplamento com o storage.
Cada pasta com uma responsabilidade. Fácil de achar as coisas quando o sistema cresce.
Ferramentas escolhidas pelo problema, não por moda.
core/state.js + draft isolado por formuláriomanifest.webmanifest + sw.js com cache de assetsgetUserMedia + jsQRMediaRecorder + Web Audio API (alerta crítico)SpeechRecognition para ditadodata/api.js — hoje localStorage, pronto para SupabaseSistema que a operação usa de verdade não é o que tem mais recurso — é o que sobrevive ao turno. Boa parte do tempo foi ouvindo o time de manutenção pra descobrir o que era essencial no meio de uma parada e cortando o resto. Foi assim que recursos como ditado por voz e captura de áudio em 60 s entraram — o técnico de luva não vai digitar uma observação longa no meio do corredor. E foi assim que decisões técnicas como o adapter de persistência e a validação cruzada de setor × máquina vieram: não porque “é boa prática”, mas porque o problema exigia.
Conta o que trava hoje. A gente pensa junto no sistema — do registro ao indicador.
Conversar pelo WhatsApp