Oracle3
Oracle3: 예측시장 거래 엔진·MCP 서버
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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.