尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Fianance app for couples
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Finance App - Controle de Finanças Pessoais Um aplicativo web completo para controle de finanças pessoais, desenvolvido com Next.js, Supabase e shadcn/ui. • Autenticação: Login/registro com email/senha e Google OAuth • Dashboard: Visão geral com gráficos de receitas vs despesas • Carteiras: Múltiplas contas bancárias/wallets • Transações: Registro de receitas e despesas • Categorias: Categorias customizáveis • Design Responsivo: Funciona em desktop e mobile • Frontend: Next.js 14+ (App Router) • UI: shadcn/ui + Tailwind CSS • Backend: Supabase (PostgreSQL + Auth) • Gráficos: Recharts查看完整 README ↗
Um aplicativo web completo para controle de finanças pessoais, desenvolvido com Next.js, Supabase e shadcn/ui.
cd finance-app
cp .env.example .env.local
Edite o arquivo .env.local e preencha com suas credenciais do Supabase:
NEXT_PUBLIC_SUPABASE_URL=https://seu-projeto.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=sua-chave-anon-aqui
⚠️ Importante: Nunca commite o arquivo .env.local no Git!
O schema inteiro vive em supabase/migrations/ (baseline consolidado +
migrações incrementais). Com o projeto linkado no CLI:
npx supabase link
npx supabase db push
Para desenvolvimento local: npx supabase start (constrói o banco do zero a
partir das migrações). Nunca rode SQL manual no SQL Editor para mudar schema —
ver supabase/README.md.
No Supabase Dashboard:
avatarsO schema SQL já cria as políticas necessárias para upload de avatares.
npm install
npm run dev
Abra http://localhost:3000 no seu navegador.
src/
├── app/
│ ├── (auth)/ # login, register, forgot-password, reset-password
│ ├── (app)/ # Telas autenticadas: dashboard, transactions, categories,
│ │ # bills, credit-cards, subscriptions, members, invites,
│ │ # account (sessions, activity), settings, plans
│ ├── [...slug]/ # Rota desconhecida → 404
│ ├── designsystem/ # Catálogo vivo do design system (/designsystem)
│ └── page.tsx # Redirecionamento
├── components/
│ ├── ui/ # Componentes do design system
│ ├── layout/ # Casca do app (barras, navegação)
│ └── <domínio>/ # account, bills, categories, credit-cards, dashboard,
│ # members, push, pwa, security, settings, subscriptions,
│ # transactions, workspace, icons
├── config/ # Navegação (desktop e mobile)
├── hooks/ # Custom hooks
├── lib/ # Regras de negócio, Supabase, formatadores (com *.test.ts ao lado)
├── templates/ # Templates de página
└── types/ # Tipos do banco (gerados) e de rotas
supabase/ # Migrações, Edge Functions, testes pgTAP, relatórios SQL
e2e/ # Testes Playwright
scripts/ # Scripts de build/teste (ícones PWA, docs-map do DS, pré-checagens)
docs/ # Runbooks, histórico do design system e arquivo
AGENTS.md — regras do projeto (formulários, design system, componentes). Leia antes de escrever código.docs/README.md — índice de runbooks, histórico do design system e arquivo.supabase/README.md — regras de migração, Edge Functions e docs de deploy.O app pode ser instalado na tela inicial (Safari → Compartilhar → Adicionar à Tela de Início) e funciona em modo standalone.
npm run generate:pwa-icons # gera public/icons/* e public/favicon.ico a partir de public/logo.svg
npm run build # webpack + Serwist (gera public/sw.js)
Em desenvolvimento, o service worker fica desligado por padrão. Para testar localmente:
NEXT_PUBLIC_PWA_ENABLED=true npm run build && npm start
npm run test:unit # inclui mutation-gateway offline
npx playwright test e2e/pwa.smoke.spec.ts
A migração supabase/migrations/20260517140000_offline_client_id.sql adiciona client_id para sincronização idempotente.
Notificações push usam Web Push com chaves VAPID e Edge Functions (push-subscribe, push-unsubscribe, deliverNotification nos produtores).
# Cliente (Vercel + .env.local)
NEXT_PUBLIC_VAPID_PUBLIC_KEY=<chave pública>
# Supabase secrets (nunca no repositório)
VAPID_PUBLIC_KEY=<mesma chave pública>
VAPID_PRIVATE_KEY=<chave privada>
VAPID_SUBJECT=mailto:[email protected]
Gerar par de chaves:
npx web-push generate-vapid-keys
Aplicar migração:
supabase db push
Deploy das functions (inclui push):
npm run supabase:deploy:functions
notify_push → sem push; central in-app continua se habilitada.Quando outro membro adiciona uma despesa manual em uma carteira compartilhada, os demais membros recebem notificação in-app e push (se habilitados).
Deploy: configure o Database Webhook em public.transactions (INSERT) → Edge Function notify-transaction-created. Detalhes em supabase/NOTIFICATION_DEPLOYMENT.md.
Smoke test: User B adiciona despesa na carteira compartilhada → User A vê central + push no iPhone (PWA instalada).
O projeto implementa:
# Cliente (públicas)
NEXT_PUBLIC_SUPABASE_URL=...
NEXT_PUBLIC_SUPABASE_ANON_KEY=...
# Servidor (NUNCA exponha no frontend)
SUPABASE_SERVICE_ROLE_KEY=... # Apenas para APIs server-side
O projeto usa shadcn/ui com o preset b1a1d8m2s. Para adicionar novos componentes:
npx shadcn@latest add button
Verifique se o arquivo .env.local existe e contém as variáveis corretas.
Certifique-se de que todas as migrações foram aplicadas (npx supabase db push).
Verifique se o bucket avatars foi criado no Storage e está público.
MIT