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.
Controlá tus gastos, tus fijos del mes y la lista del súper.
Translation pending
FinanceTypeScript · CSSGitHub @MugmaskOnlineOwner 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
PWA personal para gastos, presupuesto y lista de compras
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
App personal de finanzas: gastos, ingresos, gastos fijos (compartidos, en dólares, con vencimiento), tarjeta con cuotas, análisis del mes y lista de compras con recetas. Es una PWA offline-first: se instala en el celular y anda sin conexión. • Producción: https://cashlist-app.vercel.app (rama main) • Staging: https://cashlist-staging.vercel.app (rama develop, detrás del login de Vercel) Requisitos: Node 24 (.nvmrc) y pnpm 11 (packageManager en package.json; con corepack enable se usa la versión correcta). Docker solo hace falta para el Supabase local.Read the full README ↗
App personal de finanzas: gastos, ingresos, gastos fijos (compartidos, en dólares, con vencimiento), tarjeta con cuotas, análisis del mes y lista de compras con recetas. Es una PWA offline-first: se instala en el celular y anda sin conexión.
main)develop, detrás del login de Vercel)Requisitos: Node 24 (.nvmrc) y pnpm 11 (packageManager en package.json; con
corepack enable se usa la versión correcta). Docker solo hace falta para el Supabase local.
pnpm install
pnpm dev
Listo: pnpm dev corre en modo local, sin cuenta ni sync y con datos de ejemplo. No hace falta
configurar nada, y desarrollar nunca escribe en producción.
| Dónde | Datos | Para qué |
|---|---|---|
pnpm dev | Modo local, datos de ejemplo en el navegador | Desarrollar el día a día |
pnpm dev:sync | Supabase local en Docker (pnpm db:start antes) | Trabajar en login, sync o migraciones |
pnpm dev:prod | Supabase de producción (.env.local) | Solo a propósito, cuando hace falta |
| Preview de Vercel por PR | Modo local, datos de ejemplo | Ver un cambio en el celular antes de mergear |
Staging (develop) | Modo local, datos de ejemplo | Probar lo integrado antes de producción |
Producción (main) | Supabase de producción | La app real |
VITE_SUPABASE_URL / VITE_SUPABASE_ANON_KEY la app arranca sin login ni
sync, y un navegador vacío se llena con tres meses de datos de ejemplo relativos a hoy. El
perfil tiene "Volver a los datos de ejemplo". Cada navegador tiene su copia: no se comparte
entre dispositivos.pnpm dev:sync crea la primera vez el usuario [email protected] / cashlist-dev en el
Supabase local y se niega a correr contra otra cosa que no sea local.pnpm dev:prod necesita .env.local con las claves del proyecto (copiá .env.example,
valores en Supabase → Project Settings → API). Lo que hagas ahí es real.vite.config.ts).vite-plugin-pwa (Workbox); cuando hay
versión nueva, la app ofrece recargar.src/lib/db/). Un motor de sync
propio (src/lib/sync/) los sube y baja de Supabase: last write wins por updatedAt, borrados
lógicos (deleted) y cambios pendientes marcados con pending. Sincroniza al abrir, al volver
la conexión o la app al frente, cada minuto, y cuando Realtime avisa que otro dispositivo
cambió algo.src/ui/<Componente>/, con CSS
Modules. Mobile-first.src/
app/ layout (barra inferior con notch, header), router, pantallas de error, recarga
features/ un dominio por carpeta: analysis, auth, card, expenses, fixed, home, incomes,
month, profile, shopping
lib/ db (Dexie + migraciones), sync, supabase, demo (datos de ejemplo), cotización del dólar
ui/ componentes compartidos
utils/ fechas, moneda, texto, errores
supabase/
migrations/ schema de Postgres (RLS por usuario)
scripts/ size.mjs (tamaño del bundle), dev-sync.mjs (pnpm dev:sync)
Los datos existen en dos lados y tienen que cambiar juntos:
pnpm db:new <nombre> y escribirla en supabase/migrations/. Tiene que
aplicar sobre una base vacía (el CI lo verifica).src/lib/db/index.ts, con su test de migración.src/lib/sync/tables.ts.pnpm db:reset (o pnpm db:start) + pnpm dev:sync.main: pnpm db:push:check muestra qué
se aplicaría, y pnpm db:push la aplica. Las dos necesitan el proyecto linkeado una vez:
pnpm exec supabase link --project-ref juxvyttkoubunlqzadlz (pide la contraseña de la base).La migración más vieja es 20261005000024_baseline.sql: todo el schema hasta esa fecha, unificado
desde las migraciones anteriores y verificado igual a producción. No se edita: los cambios van en
migraciones nuevas. Nunca aplicar SQL a mano en producción (SQL Editor, MCP): el historial de
migraciones dejaría de coincidir con los archivos y db push volvería a ser peligroso.
develop: feature/<descripcion>.develop. Corre Preflight y Vercel arma un preview.develop se ve en staging.develop a main, mergeado con merge commit (no squash, así
las dos ramas no divergen).main y develop están protegidas: solo entran PRs, con verify y migrations en verde.
.github/workflows/preflight.yml): verify (formato, lint, typecheck, tests,
build) y migrations (todas las migraciones desde cero en un Postgres local + supabase db lint).develop; las majors se hacen a mano.
Las alertas de seguridad abren PR enseguida, majors incluidas.feat: shared fixed expenses).| Comando | Qué hace |
|---|---|
pnpm dev | Dev server en modo local (ver Ambientes) |
pnpm dev:sync | Dev server contra el Supabase local |
pnpm dev:prod | Dev server contra producción |
pnpm check | Lo mismo que verify en el CI: typecheck, lint, formato, tests |
pnpm test | Tests (Vitest; test:watch en modo watch) |
pnpm lint:fix | oxlint con autofix |
pnpm format | Prettier sobre todo el repo |
pnpm build | Build de producción |
pnpm size | Build + tamaño gzip del JS que carga al arrancar (informativo) |
pnpm db:start | Supabase local en Docker, con todas las migraciones |
pnpm db:stop | Lo apaga |
pnpm db:reset | Recrea la base local desde las migraciones |
pnpm db:new | Migración nueva vacía |
pnpm db:lint | Lint del schema de la base local |
pnpm db:push:check | Qué migraciones se aplicarían en producción (dry run) |
pnpm db:push | Aplica las migraciones pendientes en producción |
Los tests van junto al código (*.test.ts); IndexedDB se simula con fake-indexeddb.