DuoFund
App de finanças para casais. Cada um vê o próprio dinheiro, os dois veem o dinheiro do casal, e uma coisa não se mistura com a outra.
- Papel
- Autor
- Onde
- Projeto pessoal
- Período
- 01/2026 – 08/2026
- Stack
- Laravel 12 · Livewire Volt · Tailwind CSS 4 · MySQL 8
Desafio
App de finanças para casal costuma cair num de dois extremos. Ou tudo é compartilhado e você perde a privacidade do seu dinheiro, ou nada é, e a conta conjunta vira uma planilha à parte.
- Cada um precisa ver o próprio dinheiro sem expor ao outro.
- Os dois precisam ver o dinheiro do casal, com o nome de quem lançou.
- Um lançamento não pode vazar de uma visão para a outra.
Abordagem
Resolvi com escopo. Toda transação, categoria, meta, cartão e desejo nasce em “Meu dinheiro” ou em “Nosso dinheiro”, e o filtro mora num lugar só: o trait ScopedToView.
- Receita compartilhada cria sozinha a despesa espelho “Transferido para conta conjunta” na conta pessoal.
- Servidor MCP com 14 ferramentas: dá para perguntar ao Claude quanto gastei com mercado no mês.
- A API do MCP usa bearer token e limite de 60 requisições por minuto.
- Nenhuma página faz requisição para fora: fontes, ícones e JS saem do próprio domínio.
Resultado
O app está no ar, é mobile-first e instala como PWA. Tem orçamento por categoria, metas, cartões, lista de desejos e relatório mensal com export CSV e PDF.
- 143 testes com Pest e PHPStan nível 5.
- Um teste renderiza todas as páginas com dados, nos dois escopos, para pegar N+1.
- Cada push na master testa, monta o vendor no PHP 8.2 do servidor e confere se o site respondeu 200.
docker compose exec laravel.test composer check