Oracle3
Oracle3: 예측시장 거래 엔진·MCP 서버
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Marketplace de factoring de fletes fluviales y de camiones en la hidrovía Paraguay-Paraná. Conecta operadores de flete (que necesitan cobrar antes) con fondeadores — financieras, bancos, fondos, inversores — que quieren financiar esas facturas.
Este proyecto reemplaza los dos Artifacts de Claude (ViaFactoring y
ViaFactoring — Interno) por una aplicación real: self-serve, con cuentas
propias para operadores y fondeadores, sin que vos tengas que operar cada
paso a mano.
Next.js 16 (App Router) + TypeScript + Tailwind CSS 4 + Supabase (Postgres, Auth, Storage). Pensado para deployar en Vercel.
supabase/migrations/0001_init.sql. Esto crea las tablas, las funciones,
los triggers, las políticas de RLS y el bucket de Storage facturas.Project URL, la
anon public key y la service_role key que necesitás para el paso 3.cp .env.example .env.local
Completá .env.local con los tres valores del paso anterior. La
SUPABASE_SERVICE_ROLE_KEY nunca se expone al cliente — solo se usa
server-side (en src/lib/supabase/server.ts) para generar signed URLs de
los documentos de factura cuando un fondeador ya pagó por verlos.
npm install
npm run dev
Abrí http://localhost:3000.
No hay alta de admin por signup (por seguridad). Registrate una vez como operador o fondeador (da igual cuál) y después, en el SQL Editor de Supabase, corré:
update public.profiles set role = 'admin' where id = 'TU-USER-ID';
Tu id lo ves en Authentication → Users en el dashboard de Supabase, o
corriendo select id, email from auth.users;. Con role = 'admin' entrás a
/admin con el panel de pagos, fondeadores, facturas, packs de crédito y
matches.
git remote add origin ... y git push)..env.local en el
proyecto de Vercel (Production, Preview y Development).main redeploya automáticamente.invoice_teasers es una vista de Postgres que le muestra a cualquier
fondeador autenticado solo rangos (monto_banda, plazo_banda,
riesgo, rubro) — nunca el monto exacto, el deudor ni el operador. La
tabla invoices en sí tiene RLS que bloquea a los fondeadores de leerla
directo.reveal_invoice(invoice_id) (RPC de Postgres, SECURITY DEFINER). Esa función, de forma atómica: chequea que tenga al menos 1
crédito, descuenta 1, deja registro en credit_transactions y en
reveals, y devuelve la fila completa de invoices. Si ya la había
revelado antes, es idempotente — no vuelve a cobrar.facturas). Un fondeador nunca accede al bucket directo: solo recibe
una signed URL de 10 minutos, generada server-side (getDocumentoUrlAction
en src/app/fondeador/actions.ts) y solo después de confirmar que existe
un reveal real para esa factura y ese fondeador.Hoy: el fondeador pide un pack desde /fondeador/creditos → se crea un
payment_requests en estado pendiente → vos (admin) le pasás un link de
pago externo (MercadoPago, transferencia, lo que sea) desde
/admin/pagos → cuando confirmás que llegó la plata, apretás "Confirmar
pago y acreditar", que llama a la función confirm_payment_request() y
acredita los créditos del pack de forma atómica.
Para automatizarlo con MercadoPago o Stripe más adelante, no hace falta
tocar el modelo de datos: armás un route handler (src/app/api/webhooks/ mercadopago/route.ts, por ejemplo) que reciba la notificación de pago
confirmado, y ahí adentro llamás a la misma función confirm_payment_request
usando el cliente de service role (createServiceRoleClient() en
src/lib/supabase/server.ts) pasándole el external_reference que le
hayas puesto al pago al crearlo. El campo metodo y external_reference
en payment_requests ya están pensados para esto.
src/
app/
(auth)/ login, signup, y las server actions de auth
auth/confirmar/ pantalla de "confirmá tu email"
operador/ layout + páginas del rol operador (cargar/ver facturas)
fondeador/ layout + páginas del rol fondeador (marketplace, créditos)
admin/ layout + páginas del rol admin (pagos, fondeadores, facturas, packs, matches)
components/ UI compartida (botones, cards, nav)
lib/
supabase/ clientes de Supabase (browser, server, proxy/middleware)
database.types.ts tipos a mano — reemplazar con `supabase gen types` cuando el proyecto esté vivo
session.ts helper para leer el usuario + perfil actual
format.ts formateo de moneda/fecha/labels
supabase/
migrations/0001_init.sql todo el schema: tablas, RLS, funciones, triggers, storage
https://claude.ai/artifact/32MMQd34Hu8AacddG5bUw6 y en
viafactoring.netlify.app — podés seguir usándola para juntar leads
mientras señalás a la gente hacia /signup de esta app, o reemplazarla
del todo con la página de inicio de acá (src/app/page.tsx).