Pagos
App instalable de finanzas personales para Perú: registra pagos, ingresos y gastos en dos toques, avisa antes de cada vencimiento y funciona sin conexión.
- Cliente
- IA Systems & Data
- Año
- 2026
- Servicio
- Aplicativos y software
- Rol
- Dirección técnica full-stack
- Formato
- Aplicación web
- Estado
- En producción

Llevar las finanzas del hogar sin olvidar un vencimiento.
Queríamos que registrar los pagos, ingresos y gastos del hogar tomara dos toques, que ningún vencimiento pasara desapercibido y que se viera con claridad a dónde va el dinero, también sin conexión.
Una app instalable que trabaja primero en el dispositivo.
Construimos el frontend en Next.js 16 con Dexie (IndexedDB): la app siempre lee y escribe sobre una copia local del dispositivo. Un backend en NestJS 12 sincroniza los cambios por cursor, resuelve los conflictos por última escritura y nunca borra datos físicamente.
Admite hogares compartidos con permisos por capacidad, varias monedas con el tipo de cambio diario de SUNAT, pagos programados con recordatorios, tarjetas de crédito con fecha de corte y pago, cuotas, préstamos entre personas, presupuestos con metas y detección de gastos recurrentes.
Lo que incluye
Registro en dos toques
Pagos, ingresos y gastos se registran en dos toques, con plantillas para los movimientos frecuentes.
Funciona sin conexión
La app lee y escribe en una copia local y sincroniza los cambios sin bloquear la interfaz.
Hogar compartido
Invitaciones, permisos por capacidad (gestionar, escribir y leer) y movimientos privados que no afectan el total compartido.
Pagos programados
Recordatorios antes de cada vencimiento, calendario de pagos, saldo proyectado a fin de mes y tarjetas con fecha de corte y pago.
Presupuesto y metas
Presupuesto por categoría, metas de ahorro con fecha objetivo, alertas al 80 % y al 100 % del límite y aviso de posibles duplicados.
Automatización
Reglas de categorización automática y detección de gastos recurrentes, que se convierten en pagos programados en un toque.
Stack y arquitectura
- Next.js 16
- TypeScript
- Tailwind CSS 4
- NestJS 12
- Prisma 7
- PostgreSQL 16
- Redis 7
- PWA
- Frontend
- Next.js 16 con Dexie (IndexedDB) como copia local, TanStack Query y shadcn/ui.
- Backend
- NestJS 12 con Prisma 7 sobre PostgreSQL 16, Zod, colas en BullMQ y Redis 7, y acceso con Google, PIN local o passkeys.
- Datos
- Sincronización por cursor en ambos sentidos, con conflictos resueltos por última escritura y sin borrado físico.
- Infraestructura
- Monorepo con pnpm y Turborepo en un VPS propio detrás de Cloudflare y Caddy, con CI/CD en GitHub Actions.
Lo que resolvimos
Sincronización sin conflictos
Protocolo idempotente por cursor: el cliente siempre lee de su copia local, los conflictos se resuelven por última escritura y los registros se marcan como borrados en lugar de eliminarse.
Montos en enteros, nunca en coma flotante
Cada monto se guarda en céntimos con su moneda ISO 4217, sin errores de redondeo en divisiones, cuotas y saldos en varias monedas.
Capacidades en vez de roles fijos
El sistema consulta capacidades (gestionar, escribir y leer) y no nombres de rol, así cada hogar nombra sus propios roles sin tocar el código.
En detalle
- Instalable y sin conexión
- PWA
- Desbloqueo biométrico
- Passkeys
- Movimientos similares para detectar un gasto recurrente
- 3


