Beta interna · En desarrollo activo

PragmaCash

Motor de flujo de caja con simulación de escenarios. Registra ingresos y egresos, proyecta el saldo día a día, y prueba decisiones hipotéticas antes de tomarlas de verdad — sin tocar tus datos reales.

Este documento es el reporte técnico de la versión actual: qué hace, cómo está construida, qué riesgos conlleva usarla hoy y hacia dónde va. Es honesto sobre sus límites a propósito — es una herramienta en construcción, no un producto terminado.

Última actualización de este reporte: 25 de julio de 2026.

⚠️ Antes de usarla con datos reales

PragmaCash guarda todo en el navegador (localStorage), no en un servidor. No hay login, no hay copia en la nube y no se sincroniza entre dispositivos. Es útil hoy para finanzas personales de baja complejidad, en un solo equipo — y trae una función de respaldo manual (exportar/restaurar un archivo .json) pensada justamente para no perder nada mientras esto evoluciona. Más detalle en la sección de riesgos, más abajo.

Propósito

Visibilidad financiera,
no contabilidad.

PragmaCash no es un software contable. Es una herramienta de inteligencia financiera operativa: la pregunta que responde no es "qué pasó", sino "qué va a pasar con mi saldo si sigo así — y qué pasaría si hago este otro movimiento". Replica el núcleo del módulo "Projected Cash Flow" de Quicken Simplifi, simplificado a lo esencial, con un motor de simulación propio agregado encima.

Versión actual

Ocho módulos,
todos funcionando hoy.

Todo lo listado abajo está implementado y en uso — no es un plan, es lo que ya corre en /cash.html.

01 — Registro

Transacciones

CRUD completo de movimientos reales, categorizados y asociados a una cuenta y fecha exacta.

  • 14 categorías predefinidas (6 ingreso / 8 egreso) más categorías propias con color e ícono.
  • Archivado de cuentas y categorías sin perder el historial asociado.
  • Múltiples cuentas, cada una con su moneda (CLP / USD / EUR) y saldo inicial.
02 — Recurrencia

Motor de repetición

Una transacción recurrente se declara una sola vez y se expande sola hacia adelante.

  • Frecuencias diaria, semanal, mensual y anual, con fecha de término opcional.
  • Caso borde resuelto: una recurrencia de fin de mes se ajusta sola en meses más cortos (ej. 31 → 28/30).
  • Las ocurrencias se calculan al vuelo, nunca se duplican como registros nuevos.
03 — Motor de saldo

Proyección día a día

Saldo inicial más cada movimiento real y recurrente, acumulado fecha por fecha.

  • Vista consolidada (suma de cuentas activas) y vista de desglose (una curva por cuenta).
  • Horizonte configurable: 7D / 30D / 90D / 6M / 12M o rango de fechas a medida.
  • Exactitud aritmética verificada con casos de prueba automatizados, no solo revisión visual.
04 — Simulación

Sandbox de escenarios

Overlay de movimientos ficticios sobre la curva real, sin tocar un solo dato guardado.

  • Los ítems simulados existen solo en memoria — se descartan al recargar la página, a propósito.
  • Curva punteada superpuesta a la real, con delta calculado en el tooltip.
  • Se pueden acumular varios ítems simulados en el mismo escenario.
05 — Gráfica

Visualización interactiva

Área + línea sobre Chart.js, con la curva real y la simulada superpuestas.

  • Zoom por rango, grilla temporal y línea de referencia en saldo cero.
  • Tooltip con saldo real, saldo simulado y la diferencia entre ambos.
  • Marcadores clickeables directo sobre la curva (ver conciliación, abajo).
06 — Conciliación

Estado real vs. proyectado

Cada egreso se puede marcar como conciliado contra el extracto bancario, o queda pendiente.

  • Se concilia por ocurrencia, no por transacción: una recurrente se marca mes a mes.
  • Puntos rojo (conciliado) y amarillo (pendiente) directo en la gráfica, clickeables.
  • Desde el mismo punto se edita el movimiento o se marca sin salir del gráfico.
07 — Reportes

Ingresos vs. egresos

Resumen por categoría en cualquier rango de fechas, consolidado y por cuenta a la vez.

  • Agrupado por categoría dentro de cada tipo (ingreso / egreso), con totales y neto.
  • Incluye ocurrencias de recurrentes dentro del rango elegido, no solo transacciones sueltas.
  • Exportación a CSV compatible con Excel.
08 — Respaldo

Exportar / restaurar datos

Un archivo .json con todo lo cargado, pensado como puente hacia la siguiente versión del sistema.

  • Incluye versión de esquema, para que una futura importación sepa qué formato está leyendo.
  • Restauración con confirmación explícita antes de sobrescribir datos actuales.
  • Aviso visible de cuántos días pasaron desde el último respaldo.
Cómo está construida

Arquitectura actual,
sin adornos.

Deliberadamente simple: un solo archivo HTML, sin build, sin dependencias de servidor. Es la arquitectura correcta para esta fase — no la arquitectura final.

CapaEstado actual
FrontendHTML + CSS + JavaScript vanilla, un solo archivo (cash.html), sin framework ni paso de build
GráficaChart.js 4 + plugin de anotaciones, cargados desde CDN (jsDelivr)
PersistencialocalStorage del navegador — no hay servidor ni base de datos detrás
Backend / APINo existe todavía
AutenticaciónNo existe — el control de acceso depende de quién use ese navegador físicamente
Multi-dispositivoNo soportado — los datos no se sincronizan entre navegadores ni equipos
RespaldoManual, vía exportación e importación de un archivo .json (módulo 08)
HostingArchivo estático servido por Nginx en grupopragma.online, junto al resto del sitio
Con los ojos abiertos

Riesgos implícitos
de la versión actual.

Ninguno de estos es un secreto ni un descuido — son consecuencias directas y conocidas de elegir localStorage como persistencia en esta fase. Se listan acá para que quien use la herramienta hoy sepa exactamente qué está aceptando.

Riesgo alto
Pérdida total de datos

Todo vive en el localStorage de un navegador. Borrar la caché, desinstalar el navegador o cambiar de equipo sin haber exportado un respaldo significa perder todo sin posibilidad de recuperación.

Riesgo alto
Sin autenticación

Cualquiera con acceso físico o remoto a ese navegador puede ver y modificar los datos financieros cargados. No es apto para un equipo compartido con otras personas.

Riesgo medio
Sin sincronización

Cada navegador tiene su propia copia. Usar la app desde el celular y desde la notebook genera dos historiales distintos, no uno solo — no hay fusión automática entre ellos.

Riesgo medio
Sin validación server-side

Al no existir un backend, nada valida ni protege los datos contra un localStorage editado manualmente o corrompido desde las herramientas de desarrollador del navegador.

Riesgo bajo
Dependencia de un CDN externo

La gráfica depende de que jsDelivr esté disponible. Si el CDN falla, el resto de la app sigue funcionando, pero la curva no se dibuja hasta que vuelva.

Riesgo bajo
Concurrencia entre pestañas

Si la misma cuenta se abre en dos pestañas a la vez, gana la última que escribe — no hay fusión de cambios entre ellas.

Hacia dónde va

De prototipo de navegador
a sistema real.

El plan es explícito: no parchar este sistema hasta que se rompa, sino usarlo para acumular experiencia y datos reales, y construir la siguiente versión desde cero cuando corresponda.

Fase actual

v1.0 — Todo en el navegador

  • App funcional sin infraestructura de servidor, para uso personal de baja complejidad.
  • El respaldo manual (módulo 08) es el puente intencional hacia la fase siguiente.
Fase 2

Persistencia real

  • Backend propio + base de datos. Arranca con SQLite por simplicidad; Postgres es el camino natural si aparece multiusuario real.
  • Los archivos de respaldo generados hoy se usan como semilla de datos — nada de lo cargado se pierde en la transición.
  • Reescritura completa, no una serie de parches sobre el sistema actual — así no se arrastra deuda técnica de una versión pensada para un solo navegador.
Fase 3

Multiusuario

  • Autenticación propia y aislamiento de datos por usuario.
  • Sincronización real entre dispositivos.
En evaluación

Mejoras incrementales

  • Exportación de la gráfica a PNG/PDF.
  • Vista mobile — hoy el diseño prioriza escritorio (mínimo 1024px de ancho).
  • Notificaciones de vencimientos próximos.
  • Guardado de sets de simulación con nombre, y comparación entre escenarios guardados.
Esto no está cerrado

¿Te falta algo puntual?

Lo que ves acá es lo que existe hoy, no el techo del sistema. Cada módulo — recurrencia, simulación, conciliación, reportes — nació de un caso de uso concreto, y el siguiente probablemente también. Si tu forma de manejar el flujo de caja necesita algo distinto (otra moneda, otro tipo de reporte, una regla de recurrencia particular, una integración puntual), es exactamente el tipo de pedido que da forma a la próxima versión.

¿Lo probamos?

PragmaCash está viva,
hoy, en tu navegador.

Sin cuenta, sin instalación. Se abre y se empieza a cargar cuentas. Los datos son tuyos y quedan en tu navegador — respaldalos seguido.