Oracle3
Open-source trading engine and MCP server for prediction markets. Fee-aware no-arbitrage trading across related contracts, live on Kalshi, Polymarket and Solana or on paper.
Sistema de Gestão Financeira
Translation pending
FinanceTypeScript · CSSGitHub @Sav-CoelhoOnlineOwner 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
Prism - Mais Vidas Verticais
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Sistema financeiro da Brave Educação para importação de extratos OFX, classificação de lançamentos e geração de DRE por unidade/mês. Desenvolvido em Next.js 14 + Prisma + PostgreSQL (Neon), hospedado na Vercel com deploy automático via GitHub. • Next.js 14 (App Router, full-stack — páginas e APIs no mesmo projeto) • Prisma ORM + PostgreSQL (Neon free tier, sa-east-1) • Recharts para gráficos • TypeScript strict • Vercel para deploy (build: prisma generate && prisma db push && next build)Read the full README ↗
Sistema financeiro da Brave Educação para importação de extratos OFX, classificação de lançamentos e geração de DRE por unidade/mês. Desenvolvido em Next.js 14 + Prisma + PostgreSQL (Neon), hospedado na Vercel com deploy automático via GitHub.
sa-east-1)prisma generate && prisma db push && next build)DATABASE_URL= # Neon connection pooling URL
DIRECT_URL= # Neon direct URL (para migrations)
ANTHROPIC_API_KEY= # Claude API (assistente IA na página AI)
financeiro/
├── prisma/
│ └── schema.prisma # Modelos do banco
├── src/
│ ├── app/
│ │ ├── layout.tsx # Title: "Prism DRE System", favicon losango amarelo
│ │ ├── page.tsx # Redirect para /dashboard
│ │ ├── dashboard/ # Visão geral com métricas e gráfico DRE
│ │ ├── dre/ # DRE detalhada por mês/unidade
│ │ ├── lancamentos/ # Importação OFX + classificação (página principal)
│ │ ├── plano-de-contas/ # CRUD do plano de contas
│ │ ├── saldo/ # Evolução do saldo bancário
│ │ ├── unidades/ # Cadastro de unidades e contas bancárias
│ │ └── api/
│ │ ├── accounts/ # CRUD contas do plano (GET, POST, PUT, DELETE)
│ │ ├── classify/
│ │ │ └── suggest/ # POST — sugestões do classificador inteligente
│ │ ├── dre/ # GET — cálculo DRE agregado
│ │ ├── ofx/
│ │ │ ├── route.ts # POST — salva lançamentos OFX em lote
│ │ │ └── parse/ # POST — parseia arquivo OFX (preview)
│ │ ├── saldo/ # GET — snapshots de saldo por conta bancária
│ │ ├── transactions/ # GET lista, PUT classifica, DELETE remove
│ │ └── units/ # GET unidades com bankAccounts aninhados
│ ├── components/
│ │ ├── Shell.tsx # Layout (topbar "Prism" + sidebar com nav)
│ │ ├── AccountCombobox.tsx# Combobox buscável para seleção de conta do plano
│ │ └── AIAssistant.tsx # Assistente IA (Claude API)
│ └── lib/
│ ├── prisma.ts # PrismaClient singleton + seed de unidades/bancos/conta neutra
│ ├── ofx-parser.ts # Parser OFX (transações, saldo, banco)
│ ├── dre.ts # Cálculo do DRE (calcDRE, MONTH_NAMES)
│ └── classifier.ts # tokenize() + jaccardSimilarity() para sugestões
└── src/app/icon.svg # Favicon: losango amarelo (#eaca2d)
Unit — Unidades do negócio (MATRIZ, CICERO, CIPO, NOVA SOURE, FERNANDA)
id, name (unique)bankAccounts[], transactions[]BankAccount — Contas bancárias vinculadas a uma unidade
id, name, unitId, initialBalance (Float, default 0)ofxBankId String? — identificador OFX (BANKID ou ORG do <FI>)ofxAcctId String? — número da conta OFX (ACCTID)Account — Plano de contas
id, code (unique, ex: "3.1.1"), name, type, dreGroup, activeRECEITA, DESPESA, ATIVO, PASSIVO, NEUTROdreGroup controla onde aparece no DRE9.9.01 — Transferência entre Contas (type=NEUTRO) — ao classificar, exibe seletores de unidade/conta destino e cria contrapartida automaticamente; aparece na DRE como seção informativa sem contabilizarTransaction — Lançamentos financeiros
id, date, description, amount, memo?, fitid? (unique — previne duplicatas OFX)accountId? — conta do plano (null = não classificado, não entra no DRE)unitId?, bankAccountId?transferToUnitId?, transferToBankAccountId? — preenchidos quando é saída de transferência; a contrapartida de entrada é criada automaticamente com fitid + '_entrada'month, year — índices para filtroBalanceSnapshot — Saldos capturados via OFX
id, bankAccountId, date, balance@@unique([bankAccountId, date]) — um snapshot por conta por diaisBalance do OFX + bloco <LEDGERBAL>Ao iniciar, seedUnits() cria as 5 unidades e seus bancos se não existirem. seedTransferAccount() garante a conta 9.9.01.
Unidades e bancos pré-configurados:
MATRIZ: ITAU MATRIZ, BRADESCO MATRIZ, BNB MATRIZ, BB MATRIZ
CICERO: ITAU CICERO, BRADESCO CICERO
CIPO: ITAU CIPO, BRADESCO CIPO
NOVA SOURE: ITAU NOVA SOURE, CAIXA NOVA SOURE
FERNANDA: ITAU FERNANDA, BRADESCO FERNANDA, BNB FERNANDA
/lancamentos)Fluxo:
.OFXPOST /api/ofx/parse parseia o arquivo:
fitid escopadas à mesma conta — evita falsos positivos entre bancos diferentes<FI><ORG> e <BANKACCTFROM> para identificar o banco<LEDGERBAL> (saldo final)<STMTTRN> — marca isBalance=true se TRNTYPE=BALANCE ou memo começa com "SALDO"isBalance aparecem travadas (sem combobox)POST /api/classify/suggest) e abre painel flutuante com sugestõesPOST /api/ofx salva em lote:
createMany({ skipDuplicates: true }) — uma query para todas as transaçõesisBalance como BalanceSnapshot diáriosLEDGERBAL como BalanceSnapshotofxBankId/ofxAcctId na conta bancária (primeira vez)Parser OFX (ofx-parser.ts):
<ORG> do bloco <FI> (aparece sem tag de fechamento em alguns bancos)YYYYMMDD[HHMMSS[+offset]]isBalance: TRNTYPE=BALANCE ou memo começa com /^saldo\b/i/api/classify/suggest)Algoritmo baseado em similaridade Jaccard sem dependências externas:
tokenize(memo): lowercase → remove números → remove não-letras → split → filtra tokens > 2 chars
jaccardSimilarity(A, B): |A∩B| / |A∪B|
Fluxo:
confidence (0-100%)Propagação em tempo real: quando analista classifica uma linha manualmente, aplica a mesma conta nas linhas com similaridade ≥ 0.25 ainda não classificadas.
Painel flutuante: aparece centralizado, arrastável pelo header, minimizável. Botões ✓/✕ por linha. "Aceitar todas" / "Negar todas".
AccountCombobox.tsx)Combobox buscável por nome ou código. Contas NEUTRO aparecem no topo com separador visual. Botão ✕ para limpar.
/saldo)Exibe evolução do saldo usando apenas os BalanceSnapshot registrados. Gráfico de linha com Recharts. Um ponto por importação OFX (cada linha isBalance + LEDGERBAL = pontos diários).
/dre)Cálculo em lib/dre.ts. Agrupa transações por dreGroup da conta do plano. Filtra por mês/ano/unidade. Transferências entre contas aparecem ao final numa seção informativa (tipo 'transfer') que não contabiliza nos totais financeiros.
TypeScript no Vercel: o compilador alvo não suporta for...of em Map/Set nem spread [...set]. Sempre usar Array.from():
// ❌ falha no build
for (const [k, v] of map) { ... }
const arr = [...set]
// ✅ correto
Array.from(map.entries()).forEach(([k, v]) => { ... })
const arr = Array.from(set)
Neon PostgreSQL: banco em sa-east-1 (São Paulo). Free tier: 0.5 GB storage, 5h compute/mês. Com ~530 transações/mês × 12 contas ≈ 6.360 tx/mês ≈ 12.7 MB/mês → ~3 anos de capacidade.
Performance de import: usar createMany em vez de loop await create individual — reduz 530 round-trips para 1 query SQL.
Conta neutra: 9.9.01 — Transferência entre Contas (type=NEUTRO) não entra no DRE (excluída em calcDRE + no classify/suggest). Aparece no topo do combobox destacada.
Repositório: github.com/Sav-Coelho/prism-financeiro (branch main)
Vercel auto-deploya a cada push.
Build script (package.json):
prisma generate && prisma db push && next build
prisma db push sincroniza o schema sem migrations versionadas.
--font-sub)#eaca2d (--brave-yellow)var(--brave-dark)src/app/globals.css.card, .btn, .metric-card, .form-select, .badge-neutro, etc.)src/app/icon.svg — losango amarelo simples