Agentic Trading Lab
Talk to agents, and test trading ideas. Try AI trading agents on real market data with no code required.
AI translation
Registre gastos e recebimentos conversando no WhatsApp e acompanhe tudo em um painel simples.
Translation pending
FinanceTypeScript · CSSGitHub @gabrielvinisantos4OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Assistente financeiro pessoal pelo WhatsApp, vendido por assinatura. O cliente escreve “gastei 50 no posto” e o sistema registra, categoriza, responde consultas, corrige e exclui lançamentos — com isolamento total de dados entre clientes.
| Parte | Onde | Estado |
|---|---|---|
| Motor financeiro (centavos, cartão, fatura, parcelas, estornos, transferências, recorrências, histórico) | src/server/finance | Pronto e testado |
| Agente (IA + contingência por regras, confirmações, ambiguidade, idempotência) | src/server/agent | Pronto e testado com IA simulada; falta testar com chave real da OpenAI |
| WhatsApp Cloud API (webhook assinado, dedupe, fila, worker, botões, vínculo de número) | src/server/whatsapp, scripts/worker.ts | Pronto e testado de ponta a ponta em modo simulado; falta número/credenciais da Meta |
| Assinaturas Asaas (checkout, webhooks, inadimplência, tolerância, cancelamento) | src/server/billing | Pronto e testado com Asaas simulado; falta chave sandbox/produção |
| Painel do cliente e área administrativa | src/app/app, src/app/admin | Pronto |
| Página de vendas, cadastro e onboarding | src/app/page.tsx, src/app/(auth) | Pronto |
| Segurança e LGPD (RLS, sessões, rate limit, retenção, exportação, exclusão) | vários | Pronto; textos legais são minuta |
Detalhes do que está pronto e do que depende de terceiros: docs/STATUS.md.
WhatsApp (Meta) ──webhook──▶ Next.js /api/whatsapp/webhook ──▶ Postgres (inbound_messages, chave única)
│ │
└── fila BullMQ (Redis) ──▶ worker ─┤
├─ entitlement / limites do plano
├─ agente: IA interpreta → Zod valida → backend executa
├─ motor financeiro (SQL, centavos, RLS por cliente)
└─ resposta salva → enviada pela Cloud API
Asaas ──webhook──▶ /api/billing/asaas/webhook ──▶ reconsulta o pagamento na API ──▶ assinatura
Navegador ──▶ Next.js (landing, painel, admin) ──▶ mesmas regras do motor
drizzle/), Redis + BullMQ, OpenAI (Structured Outputs), Asaas, Vitest.withUser(userId), que ativa uma política de Row Level Security forçada no PostgreSQL. Mesmo uma consulta que esqueça o filtro por usuário não vê dados de outro cliente. Chaves estrangeiras compostas impedem um lançamento de apontar para conta/categoria de outro cliente.Requisitos: Node 20+, PostgreSQL 16, Redis 7 (ou Docker).
cp .env.example .env # preencha APP_SECRET e DATABASE_URL; deixe WHATSAPP_DRY_RUN=true
npm install
npm run db:migrate
npm run db:seed -- --activate # planos-modelo ativos + proprietário (OWNER_EMAIL/OWNER_PASSWORD)
npm run dev # site em http://localhost:3000
npm run worker # em outro terminal: fila do WhatsApp e rotinas
Com Docker: docker compose up -d --build (sobe Postgres, Redis, migrações, site e worker).
O banco da aplicação não pode usar um usuário superusuário do PostgreSQL: superusuários ignoram RLS.
createdb financezap_test # banco separado; o nome precisa conter "_test"
npm test # 60 testes: motor, isolamento, agente, WhatsApp+fila, Asaas, admin, LGPD
npm run smoke # com o servidor rodando: rotas protegidas e webhooks
Os testes usam apenas dados fictícios, em banco e Redis (db 15) próprios.