← Voltar ao índice

💸 Gastos App

App de finanças pessoais com conexão bancária real via Pluggy (Open Finance), monorepo Turbo com web (Next.js 14) + mobile (Expo), banco Supabase e módulo de Planejamento financeiro.

URL: gastos-app-eight-bice.vercel.app
Frontend: Next.js 14
Banco: Supabase (PostgreSQL + RLS)
Repo: vituulm/claudinho
Status: ✅ Produção — Vercel
Next.js 14 Expo (React Native) Supabase Pluggy Open Finance Turbo Monorepo Tailwind CSS TypeScript Edge Functions

Especificação do Produto

Missão

App de finanças pessoais que conecta contas bancárias reais via Pluggy (Open Finance), importa transações automaticamente, categoriza gastos, aplica orçamentos mensais e oferece um módulo de Planejamento em 3 camadas: Comprometido, Poupança e Livre.

Usuários-alvo

Pessoas físicas que querem controle financeiro real com dados bancários automáticos, sem planilha manual

Monorepo

apps/web — Next.js 14 (Vercel) • apps/mobile — Expo 52 • packages/shared — cliente Supabase compartilhado

Módulos implementados
Tabelas Supabase (RLS habilitado)

profiles, bank_connections, accounts, categories, transactions, budgets, income_sources, fixed_expenses, variable_expenses, debts

Rotas Next.js API (/api/*)

Auth — /api/auth

POST/api/auth/signout
Encerra sessão — invalida cookie Supabase SSR e redireciona para login.

Pluggy — /api/pluggy

POST/api/pluggy/connect-token Requer sessão
Gera connect token temporário do Pluggy para abrir o widget My Money Connect no frontend.
POST/api/pluggy/save-connection Requer sessão
Persiste Item Pluggy após widget: salva bank_connections e accounts no Supabase. Body: { itemId }
POST/api/pluggy/webhook
Recebe eventos do Pluggy (ITEM_UPDATED, etc.) e dispara sincronização de transações.

Supabase Edge Functions

POSTfunctions/sync-transactions
Busca transações novas do Pluggy para cada bank_connection do usuário e upserta na tabela transactions. Chamada pelo webhook ou manualmente.

Páginas (App Router)

Dashboard — /(dashboard)

/

Dashboard principal — resumo de saldo, gastos do mês e atalhos.

/transactions

Listagem e categorização de transações importadas do Pluggy.

/budgets

Gestão de orçamentos mensais por categoria.

/connect-bank

Fluxo de conexão bancária — abre widget Pluggy My Money Connect.

/planejamento

Módulo de Planejamento Financeiro em 3 camadas: Comprometido (fixas + dívidas), Poupança e Livre. Gerencia fontes de renda, despesas fixas, variáveis planejadas e dívidas parceladas.

Auth — /(auth)

/login

Página de login/registro via Supabase Auth.

Arquitetura de Deploy

Vercel (produção: gastos-app-eight-bice.vercel.app)
  └─ apps/web — Next.js 14 (App Router, SSR + API Routes)
       └─ middleware.ts — proteção de rotas via @supabase/ssr

Supabase (Cloud)
  ├─ PostgreSQL + Row Level Security (10 tabelas)
  ├─ Auth — sessões SSR com cookies HttpOnly
  └─ Edge Functions — sync-transactions (Deno)

Pluggy (Open Finance)
  ├─ Connect Token → Widget My Money Connect (frontend)
  ├─ save-connection → persiste Item + Accounts
  └─ Webhook → dispara sync-transactions

apps/mobile — Expo 52 (React Native, build separado)
  └─ @gastos/shared — cliente Supabase compartilhado (packages/shared)

Variáveis de Ambiente

NEXT_PUBLIC_SUPABASE_URL
URL do projeto Supabase
NEXT_PUBLIC_SUPABASE_ANON_KEY
Chave anon pública do Supabase
PLUGGY_CLIENT_ID
Client ID da aplicação Pluggy
PLUGGY_CLIENT_SECRET
Secret para geração de connect tokens e chamadas à API Pluggy
SUPABASE_SERVICE_ROLE_KEY
Chave service role para Edge Functions (bypass RLS)

Gerado automaticamente — BlackCat Corp • Voltar ao índice