projeto2026local-first
Racha
Divisor de despesas em grupo que funciona sem internet e converge quando ela volta.
o problema
Dividir despesas acontece justamente onde a internet falha: viagem, república, churrasco. Apps "offline" só guardam cache; quando dois celulares editam a mesma despesa sem rede, os saldos divergem, e com dinheiro isso não é aceitável.
meu papel
Projeto solo: arquitetura, domínio, front-end e sincronização.
destaques
- O banco local (Dexie/IndexedDB) é a fonte de verdade; o Supabase é detalhe de fundo. Um outbox envia as mudanças quando há rede, e o realtime só avisa os outros aparelhos para buscar o que mudou.
- Conflitos resolvidos por last-write-wins por unidade de campo: valor, tipo de rateio e parcelas mudam juntos, então um merge nunca mistura o valor de um aparelho com o rateio de outro. Saldos nunca são sincronizados: são sempre recalculados.
- Dinheiro em centavos inteiros e arredondamento determinístico: R$ 100 ÷ 3 vira 3334 + 3333 + 3333 em qualquer aparelho.
- Domínio com 100% de cobertura e teste de propriedade (fast-check): em milhares de combinações aleatórias, os saldos de um grupo sempre somam zero. PWA instalável e testes e2e com Playwright.
stack
- Angular
- Ionic
- Dexie
- Supabase
- fast-check
- Playwright