Virureko
Finanzas personales multiusuario en guaraníes: cuentas, presupuestos, gastos recurrentes, metas de ahorro y reportes. En producción en virureko.com, construida con agentes de IA bajo mi arquitectura y revisión.
Ver en vivo: virureko.com ↗ (se abre en otra pestaña)- Rol
- Producto, arquitectura y despliegue
- Año
- 2026
- Plataforma
- Next.js 16 · PostgreSQL 16
- Código
- Privado
Panel · móvilPanel con barra inferior y botón para cargar. (se abre en otra pestaña)
PanelPanel: saldo total, mes contra el anterior y alertas de presupuesto. (se abre en otra pestaña)
Presupuestos · móvilPresupuestos con edición rápida. (se abre en otra pestaña)
MovimientosMovimientos: filtros, etiquetas y exportación a CSV. (se abre en otra pestaña)
CuentasCuentas: saldo real por billetera y transferencias entre cuentas propias. (se abre en otra pestaña)
PresupuestosPresupuestos: tope por categoría y aviso cuando te pasas. (se abre en otra pestaña)
MetasMetas: progreso y ritmo sugerido para llegar a la fecha. (se abre en otra pestaña)
RecurrentesRecurrentes: se confirman u omiten; nada se registra solo. (se abre en otra pestaña)
ReportesReportes: balance, tasa de ahorro y gasto por categoría. (se abre en otra pestaña)
ComparativaComparativa: en qué gastaste más que el mes pasado. (se abre en otra pestaña)
Problema
Las apps de finanzas personales no piensan en guaraníes ni en cómo se maneja la plata acá, y mezclan transferencias entre cuentas propias con gastos, así que los números nunca cuadran con el banco.
Solución
Cuentas con saldo real, presupuestos por categoría, pagos recurrentes que se confirman (nada se registra solo), metas de ahorro y reportes comparativos. Pensada primero para el teléfono, instalable como app (PWA) y con exportación a CSV y PDF.
Decisiones técnicas
- 01
Aislamiento estricto entre usuarios
Cada consulta del servidor se filtra por el usuario de la sesión, nunca por un id que mande el navegador, y una suite de tests prueba que nadie puede ver ni tocar datos ajenos. Contraseñas con argon2id y rechazo de contraseñas filtradas; email verificado con código de un solo uso y límite de intentos.
- 02
El dinero como enteros, nunca como decimales
Los montos se guardan como enteros (BigInt) en PostgreSQL y los saldos se calculan a partir de los movimientos. Las transferencias entre cuentas propias no cuentan como ingreso ni gasto, y las metas no mueven plata: nada se cuenta dos veces.
- 03
Despliegue simple y endurecido
VPS propio con Docker Compose: la app, PostgreSQL sin puerto expuesto y Caddy con HTTPS automático. SSH solo con clave, firewall, fail2ban y CI con GitHub Actions. Gráficos en SVG desde el servidor y PDF desde una página imprimible, sin librerías pesadas.