Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Duofund

FreeNot checked

Finanças a dois, sem complicação. App de finanças para casais com escopo pessoal e compartilhado — Laravel 12 + Livewire Volt.

GitHubEmbed

About

Finanças a dois, sem complicação. App de finanças para casais com escopo pessoal e compartilhado — Laravel 12 + Livewire Volt.

README

DuoFund

Finanças a dois, sem complicação.

Um app de finanças pessoais para casais, onde cada um enxerga o próprio dinheiro e os dois enxergam o dinheiro do casal — sem misturar as duas coisas.

CI Laravel 12 PHP 8.2+ Livewire Volt 143 testes PHPStan nível 5

Página inicial do DuoFund

O problema

App de finanças para casal costuma escolher um dos dois extremos: ou tudo é compartilhado — e você perde a privacidade do seu dinheiro — ou nada é, e a conta conjunta vira uma planilha à parte.

O DuoFund resolve com escopo. Toda transação, categoria, meta, cartão e desejo nasce em uma de duas visões:

Meu dinheiro (personal) Só você vê
Nosso dinheiro (shared) Os dois veem, com o nome de quem lançou

A visão ativa persiste entre as páginas, e um mesmo modelo nunca vaza de uma para a outra. Quando você registra uma receita compartilhada, o app cria automaticamente a despesa espelho "Transferido para conta conjunta" na sua conta pessoal — porque aquele dinheiro saiu de você e entrou no bolo comum.

Telas

Painel
Painel — resumo do mês, orçamento por categoria e alerta de estouro
Transações
Transações — entradas e saídas agrupadas por data
Orçamento
Orçamento — limite por categoria com progresso
Relatório
Relatório — comparativo com o mês anterior, export CSV e PDF
Metas
Metas — progresso, ritmo de poupança e previsão
Desejos
Desejos — lista com prioridade e simulador de compra
No celular (o app é mobile-first)

Painel no celular Transações no celular Orçamento no celular Metas no celular

O que faz

  • Transações com receita, despesa e reserva; recorrentes e parceladas
  • Orçamento por categoria, com aviso no painel a partir de 80% do limite
  • Metas com plano por valor mensal ou por data-alvo, e previsão de conclusão comparada ao ritmo real
  • Cartões e agrupamento de parcelas futuras
  • Lista de desejos com prioridade e simulador de "cabe no meu mês?"
  • Relatório mensal com comparativo contra o mês anterior, export CSV (abre certo no Excel pt-BR) e PDF
  • Convite do parceiro por link assinado
  • PWA instalável, com 2FA opcional

Converse com suas finanças pelo Claude

O projeto inclui um servidor MCP que expõe a conta para assistentes de IA. Na prática, dá para perguntar "quanto gastei com mercado esse mês?" ou dizer "lança 80 reais de farmácia" direto no Claude.

São 14 ferramentas cobrindo resumo, categorias, metas, transações e desejos — todas respeitando o mesmo escopo personal/shared do app.

// .claude/mcp.json
{
  "mcpServers": {
    "duofund": {
      "command": "node",
      "args": ["./mcp/server.js"],
      "env": {
        "DUOFUND_URL": "https://seu-dominio",
        "DUOFUND_TOKEN": "seu-token"
      }
    }
  }
}

A API por trás fica em /api/mcp/*, autenticada por bearer token com hash_equals e limitada a 60 requisições por minuto.

Stack

Backend PHP 8.2+, Laravel 12, Livewire Volt, Fortify
Frontend Tailwind CSS 4, Alpine.js, Lucide (SVG server-side)
Build Vite 7
Banco MySQL 8
Testes Pest 4 · PHPStan/Larastan nível 5

Nenhuma página faz requisição para fora: fontes, ícones e JS são todos servidos pelo próprio domínio.

Rodando localmente

git clone [email protected]:jeffersonrucu/duofund.git
cd duofund

cp .env.example .env
docker compose up -d
docker compose exec laravel.test composer install
docker compose exec laravel.test php artisan key:generate
docker compose exec laravel.test php artisan migrate --seed
docker compose exec laravel.test npm ci && npm run build

Acesse http://localhost:8080.

Para ver o app com dados de demonstração (é o que aparece nas telas acima):

docker compose exec laravel.test php artisan db:seed --class=TestDataSeeder

Entre com [email protected] / password.

Testes e qualidade

docker compose exec laravel.test php artisan test      # 143 testes
docker compose exec laravel.test composer analyse      # PHPStan nível 5
docker compose exec laravel.test composer check        # os dois

Alguns testes existem por motivos específicos que valem menção:

  • NoLazyLoadingTest renderiza todas as páginas com dados nos dois escopos. Model::preventLazyLoading() só arma o guard em resultado com mais de uma linha, então página vazia não acusa N+1 nenhum.
  • PageSmokeTest renderiza as 16 páginas que servem HTML. Como os ícones são SVG resolvidos em tempo de render, um nome errado vira exceção — não um espaço em branco silencioso.
  • MonthNavigationTest ataca a URL com valores inválidos: view e currentMonth são estado exposto na query string.

Deploy

git push na master dispara a esteira em .github/workflows/ci.yml:

  1. Testes e PHPStan no PHP 8.3 (o Pest 4 exige ^8.3)
  2. composer install --no-dev no PHP 8.2, a versão do servidor — se alguma dependência de produção exigir mais que isso, o build falha aqui em vez de derrubar o site
  3. rsync da aplicação e do vendor, migrations e recache
  4. Verificação de que o site respondeu 200

O vendor de produção é construído sem dependências de desenvolvimento de propósito: o Pest exige PHP ^8.3 e elevaria o piso de versão do servidor mesmo sem nunca rodar lá.

Backup do banco roda por cron (scripts/backup-db.sh), em shell puro — em hospedagem compartilhada o proc_open costuma vir bloqueado, o que inviabiliza as soluções que chamam o mysqldump pelo PHP.

Estrutura

app/
├── Enums/PaymentMethod.php          # pix, cartão, boleto — rótulo e ícone juntos
├── Livewire/Concerns/               # navegação de mês e alternância de escopo
├── Models/Concerns/ScopedToView.php # o filtro personal/shared, em um lugar só
├── Services/
│   ├── TransactionMirrorService.php # a despesa espelho da receita compartilhada
│   └── MonthlySummaryService.php    # fonte única dos totais do mês
└── Support/Money.php                # entrada em pt-BR → decimal

resources/views/livewire/pages/      # as telas, em Livewire Volt
mcp/server.js                        # servidor MCP

Licença

Ainda não definida — sem uma licença explícita, todos os direitos são reservados.

from github.com/jeffersonrucu/duofund

Installing Duofund

This server has no published package — it is built from source. Open the repository and follow its README.

▸ github.com/jeffersonrucu/duofund

FAQ

Is Duofund MCP free?

Yes, Duofund MCP is free — one-click install via Unyly at no cost.

Does Duofund need an API key?

No, Duofund runs without API keys or environment variables.

Is Duofund hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install Duofund in Claude Desktop, Claude Code or Cursor?

Open Duofund on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

$5

Stripe

Payments, customers, subscriptions

Stripeby Stripe

malamutemayhem/unclick-agent-native-endpoints

110+ tools for AI agents spanning social media, finance, gaming, music, AU-specific services, and utilities. Zero-config local tools plus platform connectors. n

malamutemayhemby malamutemayhem

whiteknightonhorse/APIbase

Unified API hub for AI agents with 56+ tools across travel (Amadeus, Sabre), prediction markets (Polymarket), crypto, and weather. Pay-per-call via x402 micropa

whiteknightonhorseby whiteknightonhorse

trackerfitness729-jpg/sitelauncher-mcp-server

Deploy live HTTPS websites in seconds. Instant subdomains ($1 USDC) or custom .xyz domains ($10 USDC) on Base chain. Templates for crypto tokens and AI agent pr

trackerfitness729-jpgby trackerfitness729-jpg

embeddedlayers/mcp-analytics

Statistical analysis, forecasting, and ML for business data (Shopify, Stripe, WooCommerce, eBay, GA4, Search Console). Upload a CSV or connect live data sources

embeddedlayersby embeddedlayers

carrierone/verilexdata-mcp

20 structured datasets (NPI healthcare, SEC filings, OFAC sanctions, crypto whales, Polymarket signals, patents, economic indicators) via x402 pay-per-query wit

carrieroneby carrierone

tipdotmd/tip-md-x402-mcp-server

MCP server for cryptocurrency tipping through AI interfaces using x402 payment protocol and CDP Wallet.

tipdotmdby tipdotmd

laundromatic/shopgraph

Structured product data from the open web — Schema.org + AI extraction for e-commerce enrichment. Pay per call via Stripe. [shopgraph.dev](https://shopgraph.dev

laundromaticby laundromatic

mrslbt/xendit-mcp

Xendit payment gateway for Southeast Asia. Invoices, disbursements, balance checks, and bank transfers across Indonesia, Philippines, Thailand, Vietnam, and Mal

mrslbtby mrslbt

@arbitova/mcp-server

Non-custodial on-chain escrow + AI dispute arbitration for agent-to-agent USDC payments on Base. Seven tools covering the full EscrowV1 contract surface: create

jiayuanliang0716-maxby jiayuanliang0716-max

Compare Duofund with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All finance MCPs