Proyecto · T-Ledger
Proyecto 06 / 07: T-Ledger
2026 · Personal · Arquitectura y desarrollo
Personal · 2026
Usted anota un movimiento y el libro escribe el asiento de partida doble. Finanzas personales para usted, su pareja o su familia.
Visitar el sitio (abre en otra pestaña)Ver el código (abre en otra pestaña)
El problema
Una lista de gastos no responde lo que importa: cuándo termina de pagar una deuda, cuánto ahorra en intereses si adelanta cuotas, si llega a tiempo a una meta o si el mes cierra. T-Ledger lleva contabilidad de partida doble para responderlo, y cada cifra se rastrea hasta su origen.
Qué hice
01 / 07
Cada movimiento genera su asiento balanceado.
Con el comprobante adjunto. Los asientos son inmutables: un error se corrige con un asiento de reversa, nunca editando.
02 / 07
Para decidir, modela deudas con amortización e interés compuesto.
Metas de ahorro, inversiones, presupuesto por cubetas y la proyección del flujo de caja.
03 / 07
Lleva el mayor, el balance de comprobación.
La situación financiera, el estado de resultados y el cierre mensual. Concilia contra estados de cuenta importados en CSV, y el patrimonio sale en una moneda con el tipo de cambio del BCCR.
04 / 07
Cada persona comparte sus libros por invitación.
Como dueño, editor o lector. Aislé los libros en dos capas: un cliente de Prisma que agrega el libro a cada consulta, y falla si falta, y una guardia de rol en cada endpoint.
05 / 07
Medí transacciones serializables.
Con cuatro libros, 27 de 120 escrituras agotaban los reintentos. Las cambié por un candado por libro en Postgres, y ahora dos personas en el mismo libro no se pisan y los libros distintos nunca se esperan.
06 / 07
La bitácora de auditoría se escribe en la misma transacción que el cambio.
Así que no hay cambio sin rastro. Sentry no recibe ningún dato del libro.
07 / 07
Construí 13 módulos en NestJS sobre PostgreSQL.
Con 37 modelos, 26 migraciones y Better Auth. Un contrato OpenAPI genera los tipos del frontend en React 19 con TanStack, y unos 1140 casos de prueba en 146 archivos cubren los dos lados.
Resultados
- En producción, en la versión 1.4.0. El código está publicado para consulta.
- Seis decisiones de arquitectura documentadas, entre ellas el aislamiento entre libros, la concurrencia y por qué el cifrado extremo a extremo se difiere.
Stack
- React
- TanStack
- NestJS
- PostgreSQL
- Prisma
- Better Auth
- Cloudflare R2