ObraCalc: calculadoras de obra que funcionam offline no canteiro




Aplicativo desenvolvido e publicado pela ALB Seven na Google Play, sob o identificador com.albseven.obracalc, e disponível também como PWA instalável pelo navegador.
O problema
A conta de material em obra é feita no lugar mais improvável: em pé, no canteiro, com o celular sujo de cimento e sem sinal. Errar para menos custa uma viagem a mais até o depósito, errar para mais custa material parado. E o padrão do mercado, uma calculadora online num site cheio de anúncio, quebra exatamente onde ela seria usada, porque depende de conexão.
As decisões de projeto
- O site é o app. Uma única base de código entrega o PWA instalável e o pacote Android. Quem chega pela busca usa no navegador, quem quer o ícone na tela inicial instala, e o comportamento é o mesmo nos dois.
- Offline de verdade. O service worker guarda a aplicação inteira e o histórico fica no aparelho. Uma vez aberto, o app funciona no meio do lote sem nenhuma barra de sinal.
- Vinte e quatro calculadoras, uma por serviço. Cada uma pede só o que aquele serviço precisa e usa o coeficiente daquele material, em vez de um formulário único que serviria mal a todos. A lista completa está abaixo.
- Fórmula fora do React. Cada calculadora é uma função pura em
src/lib, separada da interface e coberta por testes automatizados: são 20 módulos de cálculo e 30 arquivos de teste. Numa ferramenta em que um coeficiente errado vira material comprado a mais, essa é a parte que não pode falhar em silêncio. - Sem login no caminho. No modelo atual não há cadastro nem servidor, os cálculos ficam no navegador. Uma conta só faz sentido quando existir algo a não perder, e nunca como pedágio para usar a ferramenta.
As calculadoras
São 24, organizadas por serviço e não por material solto, porque é assim que a obra acontece. Todas funcionam no aplicativo Android publicado na Google Play e no PWA instalável pelo navegador, com o mesmo resultado nos dois.
- Tinta: litros por demão, descontando portas e janelas do cálculo.
- Selador: litros pelo rendimento da embalagem, antes da pintura.
- Massa corrida: consumo conforme o quanto a parede está irregular.
- Textura: consumo conforme a granulação escolhida.
- Piso: peças pela área do ambiente e pelo tamanho da peça.
- Argamassa colante: quilos por m², conforme o tamanho do revestimento.
- Rejunte: consumo a partir da espessura da peça e da largura da junta.
- Rodapé: metragem pelo perímetro, descontando os vãos de porta.
- Tijolos: blocos por m² de parede, pela dimensão do bloco.
- Argamassa de assentamento: quilos por m² de alvenaria levantada.
- Concreto: cimento, areia, brita e água pelo traço escolhido.
- Contrapiso: cimento e areia pelo traço, sem brita.
- Laje: volume pela espessura e o consumo de cimento correspondente.
- Telhado: telhas pela área real, corrigida pela inclinação.
- Telhas metálicas: chapas pela largura útil, já com a sobreposição.
- Drywall: placa, perfil, massa, fita e parafuso por m².
- Gesso: quilos por m² de superfície, convertidos em sacos.
- Forro de PVC: réguas pela largura útil e perfis pelo perímetro.
- Impermeabilizante: litros por demão, pelo rendimento do produto.
- Tubulação: barras de tubo pelo comprimento da instalação.
- Portas e janelas: área somada dos vãos do ambiente.
- Perfis metálicos: barras e peso a partir da metragem linear.
- Tubos metálicos: barras e peso pela barra comercial.
- Estruturas leves: metragem do quadro, somando perímetros e colunas.
Stack
React 19, TypeScript, Vite e Tailwind CSS, com vite-plugin-pwa cuidando do service worker e do manifesto, testes em Vitest e empacotamento nativo por Capacitor, incluindo compartilhamento, exportação de arquivo e pedido de avaliação na loja.
O que isso demonstra
Como levar a mesma base de código para a busca do Google e para a Google Play sem manter dois produtos, e por que cálculo de engenharia merece função pura testada em vez de lógica espalhada por componente de tela.