Lavvo — lavanderia de tênis em lockers inteligentes.
Serviço premium de limpeza de tênis operado por lockers autônomos instalados em academias e clubes. O cliente deposita pelo app, a operação coleta por cluster geográfico e o par volta em 48 horas para a mesma porta.
- Cliente
- Lavvo
- Período
- 2026
- Papel
- Arquiteto e desenvolvedor principal
Domain models
27
Application code
~18k LOC
User roles
4
Turnaround
48h
O problema
Uma lavanderia de tênis só escala quando coleta e entrega deixam de depender de alguém presente. A aposta foram lockers autônomos em locais parceiros — o que transforma um negócio de serviço em um problema de hardware distribuído: portas que precisam abrir no segundo certo para a pessoa certa, uma rota de coleta que precisa saber o que há atrás de cada porta, e um parceiro que precisa confiar no rateio da receita.
Por cima disso vem a obrigação fiscal: cada ciclo de limpeza é uma nota de serviço, e NFS-e não é opcional.
A solução
Um sistema cobrindo os quatro lados da operação, cada um com interface e permissões próprias: o app do cliente (depósito, acompanhamento, retirada), a fila do operador (coleta por cluster e reagendamentos), o painel do parceiro (movimento e repasse) e o back office administrativo (lockers, portas, pedidos, cupons, anúncios, notas).
- O depósito é guiado — o app conduz o cliente a fotografar o par em quatro ângulos antes de a porta fechar, o que resolve divergência de estado antes de ela existir.
- O pagamento é Pix via Asaas, com um caminho de pagamento simulado que mantém o fluxo inteiro demonstrável sem tocar num gateway real.
- As notificações saem pela WhatsApp Cloud API em réguas programadas, porque é onde o cliente já está.
Arquitetura
Uma única aplicação Next.js sobre Server Actions e RSC — sem serviço de API separado para manter sincronizado — com Prisma sobre PostgreSQL e uma fronteira estrita de RBAC entre os quatro papéis.
- Hardware dos lockers. A API do fabricante espera requisições assinadas por HTTP puro a partir de um IP fixo, então fica atrás de um proxy HTTPS dedicado. A assinatura tem teste unitário, e os eventos das portas voltam por webhook.
- NFS-e Nacional. Implementação completa, não um wrapper de terceiro: geração do XML da DPS, certificado A1 e-CNPJ guardado cifrado em repouso com AES-256-GCM e assinatura XML-DSig.
- Trabalho agendado. Rotas de cron conduzem as réguas de notificação e expurgam as fotos do cliente quando a janela de retenção fecha.
Resultados
O ciclo completo roda sem atendente: o cliente nunca encontra um funcionário e o local parceiro não faz nada além de hospedar o locker. A emissão de nota acontece sem humano no meio, e o seed de demonstração reproduz a operação inteira localmente — foi o que permitiu escrever este case sem expor um único registro real de cliente.
Stack completa