← todos os projetos

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

  1. 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.
  2. 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.
  3. Dinheiro em centavos inteiros e arredondamento determinístico: R$ 100 ÷ 3 vira 3334 + 3333 + 3333 em qualquer aparelho.
  4. 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