SaaS Operacional·2026
Fresh Cleaning 4U
Ponto com geofence · faturamento GST automatizado

- Papel
- Engenheiro único: modelagem de domínio, implementação, testes e deploy
- Período
- 2026 · MVP entregue em sprints
Resumo
Software operacional para uma empresa australiana de limpeza residencial: clientes, jobs recorrentes, calendário de despacho, funcionários batendo ponto em campo, faturas com GST e folha de pagamento. O interessante não é o CRUD. É a engine de recorrência e o dinheiro.
Arquitetura e decisões
- Dinheiro nunca é float. Todos os valores são Decimal de ponta a ponta, e o GST (10%) é derivado na emissão em vez de armazenado, então mudar a alíquota não reescreve o histórico silenciosamente.
- Timestamps são gravados em UTC e exibidos em AEST. A regra é aplicada na fronteira, então a engine de recorrência nunca raciocina em hora local e o horário de verão não distorce a agenda.
- A engine de jobs recorrentes materializa ocorrências a partir de uma regra (ex.: a cada 3 semanas) em vez de clonar linhas, então editar a regra não órfã o futuro.
- O app do funcionário é um PWA offline-first: o profissional num subsolo sem sinal ainda bate o ponto, e o evento sincroniza quando a rede volta.
- O ponto tem geofence (raio de 200 m contra o endereço do job). A verificação é no servidor, já que localização reportada pelo cliente é sugestão, não prova.
- Faturas são renderizadas em PDF no servidor (@react-pdf/renderer), então o documento é idêntico independente do aparelho que pediu.
Desafios
Problema: O celular do profissional perde sinal no meio do turno. O ponto não pode se perder.
Solução: O PWA enfileira o evento de ponto localmente com as coordenadas capturadas e o reenvia ao reconectar. O geofence é avaliado no servidor, no reenvio, contra as coordenadas e o timestamp gravados. Estar offline nunca vira um jeito de furar a checagem.
Resultados
- Engine de jobs recorrentes, ponto com geofence e faturamento com GST entregues
- PWA offline-first do funcionário com eventos de ponto enfileirados
- Lembretes por SMS (Twilio) e cálculo de folha a partir das horas registradas
- CI obrigatoriamente verde antes do merge; suítes Vitest + Playwright
Stack
Núcleo
Next.js 15React 19TypeScript strict
Dados
PostgreSQL 16Prisma 6Decimal money
Campo
PWA offline-firstGeolocationGeofence 200m
Integrações
Twilio SMSResend@react-pdf/renderer
Qualidade
VitestPlaywrightSentryDocker
Tecnologias
Next.js 15TypeScriptPrismaTwilioPlaywright