尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證App Controle Financeiro Familiar
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Copiloto financeiro familiar com bot de WhatsApp, IA, módulos especiais (Obra, Viagem, Carro Novo, Presente, Educação) e suporte a módulos personalizáveis. Stack: Next.js 14 (App Router) · TypeScript · Tailwind + shadcn/ui · Supabase (Postgres + RLS + Auth + Storage) · WhatsApp Cloud API · Anthropic Claude · Vercel · PWA. Pré-requisitos • Node.js 20+ • pnpm 9+ (npm i -g pnpm) • Conta Supabase (free) • Conta Vercel (free) • App WhatsApp Business no Meta for Developers • API Key do Anthropic (Claude)檢視完整 README ↗
Copiloto financeiro familiar com bot de WhatsApp, IA, módulos especiais (Obra, Viagem, Carro Novo, Presente, Educação) e suporte a módulos personalizáveis.
Stack: Next.js 14 (App Router) · TypeScript · Tailwind + shadcn/ui · Supabase (Postgres + RLS + Auth + Storage) · WhatsApp Cloud API · Anthropic Claude · Vercel · PWA.
npm i -g pnpm)# 1) instalar deps
pnpm install
# 2) configurar variáveis
cp .env.local.example .env.local
# preencha conforme seção "Variáveis de ambiente" abaixo
# 3) Supabase
supabase login
supabase link --project-ref <project-ref>
supabase db push # aplica migrations
pnpm db:types # gera src/types/database.ts
# 4) rodar
pnpm dev # http://localhost:3000
pnpm typecheck # tsc --noEmit
pnpm lint
pnpm test # vitest unit
pnpm test:e2e # playwright e2e
pnpm format
Veja .env.local.example. Todas validadas com Zod em src/lib/env.ts — se faltar alguma, o boot falha.
| Variável | Descrição |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | URL do projeto Supabase |
NEXT_PUBLIC_SUPABASE_ANON_KEY | anon key (público) |
SUPABASE_SERVICE_ROLE_KEY | service role (server-only, ⚠️ NUNCA expor no client) |
NEXT_PUBLIC_APP_URL | URL pública do app |
WHATSAPP_PHONE_NUMBER_ID | Phone Number ID (Meta) |
WHATSAPP_BUSINESS_ACCOUNT_ID | WABA ID |
WHATSAPP_ACCESS_TOKEN | Token permanente (System User) |
WHATSAPP_VERIFY_TOKEN | string aleatória para handshake do webhook |
WHATSAPP_APP_SECRET | App Secret (para validar HMAC) |
ANTHROPIC_API_KEY | sk-ant-... |
ANTHROPIC_MODEL | default claude-haiku-4-5-20251001 |
CRON_SECRET | string aleatória para autenticar o Vercel Cron |
As migrations vivem em supabase/migrations:
0001_init.sql — households, members, invites, categorias, métodos, transações, alertas, audit log, rate limit.0002_rls.sql — Row Level Security em todas as tabelas + helpers is_member_of, has_role_in, module_household.0003_modules.sql — modules + tabelas por kind (obra_phases/workers/gallery/messages, travel_items, car_options, gift_items, education_items, custom_items).0004_seed.sql — trigger que ao criar household popula categorias padrão, métodos padrão e adiciona o criador como owner. Cria buckets de storage receipts e obra-gallery com policies por household.Para zerar localmente: supabase db reset.
https://<seu-dominio>/api/whatsapp/webhook.WHATSAPP_VERIFY_TOKEN.messages.WHATSAPP_APP_SECRET.Validação do payload usa HMAC SHA-256 (header x-hub-signature-256) com crypto.timingSafeEqual.
Comandos /... (parser determinístico, grátis):
| Comando | Descrição |
|---|---|
/despesa <valor> <desc> [#cat] [@método] [data] | Cria despesa |
/receita <valor> <desc> [#cat] | Cria receita |
/saldo | Resumo do mês |
/categorias | Lista categorias |
/metodos | Lista métodos |
/obra <valor> <desc> | Atalho para obra ativa |
/viagem <valor> <desc> | Atalho para viagem ativa |
/cancelar | Desfaz última transação (5 min) |
/ajuda | Menu |
Texto livre vai para o parseFreeText (Claude haiku-4.5) que devolve JSON estruturado validado por Zod (src/lib/ai/parser.ts).
Mensagens de baixa confiança (< 0.7) viram pergunta no WhatsApp pedindo confirmação SIM / NÃO (estado em whatsapp_sessions.state.pending).
Rate limit: 60 msgs/min por telefone (tabela whatsapp_rate_limit).
Configurado em vercel.json:
{ "path": "/api/cron/alerts?secret=$CRON_SECRET", "schedule": "0 11 * * *" }
Roda diariamente às 08:00 BRT (11:00 UTC). Avalia budget_exceeded, invoice_closing, goal_progress, recurring_due, custom. Alertas large_expense disparam em tempo real dentro do handleIncoming quando uma despesa é registrada.
| Kind | Rota | Funcionalidades |
|---|---|---|
obra | /modules/obra/[id] | Fases (kanban), Equipe (WhatsApp), Galeria (Storage), Despesas, % orçamento |
travel | /modules/travel/[id] | Itens (voo/hotel/transporte/comida/tour), planejado vs realizado |
car | /modules/car/[id] | Comparativo de modelos, simulador PRICE, "já poupei" |
gift | /modules/gift/[id] | Lista de presentes, ocasiões, marcado como comprado |
education | /modules/education/[id] | Cursos, mensalidades, projeção anual |
custom | /modules/custom/[id] | Campos definidos pelo usuário (texto/número/data) |
src/
├─ app/
│ ├─ (auth)/login, (auth)/callback
│ ├─ (app)/overview, transactions, categories, payment-methods, family, alerts, settings, onboarding, modules
│ ├─ api/whatsapp/{webhook,send}, ai/parse, cron/alerts, invite/accept
│ └─ invite/[token]
├─ components/
│ ├─ ui/ # shadcn-style (button, input, card, dialog, select, tabs, money, ...)
│ ├─ charts/ # daily-bars, category-donut (recharts)
│ ├─ transactions/
│ ├─ modules/ # obra-, travel-, car-, gift-, education-, custom- dashboards
│ ├─ auth/ # login-form, onboarding-wizard, invite-accept
│ └─ common/ # app-shell, household-switcher, user-menu, family-manager, alert-manager, settings-panel, query-provider
├─ lib/
│ ├─ supabase/ # server, client, admin (service role)
│ ├─ whatsapp/ # client, templates, handle (lógica de processamento)
│ ├─ ai/ # parser (Claude), prompts
│ ├─ env.ts # Zod validation
│ ├─ household.ts, money.ts, dates.ts, utils.ts
├─ hooks/
├─ types/database.ts
└─ middleware.ts # refresh sessão + guards
"gastei 50 mercado ontem pix" cria transação + confirmação./despesa 230 cimento vinculado ao módulo Obra ativo.budget_exceeded dispara WhatsApp pelo cron..env.local).vercel.json.supabase link --project-ref <ref> localmente.pnpm db:push (aplica migrations).https://<dominio>/auth/callback.whatsapp_business_messaging + whatsapp_business_management, token permanente.pnpm dev # dev
pnpm typecheck # tsc strict
pnpm lint && pnpm format # padrão de código
pnpm test && pnpm test:e2e # testes
supabase db push # aplica migrations
supabase gen types typescript --linked > src/types/database.ts
Privado. Todos os direitos reservados.