Caso técnico · Backend / SaaS
CashTracker
SaaS de finanzas personales con operaciones transaccionales, suscripciones y funcionalidades asistidas por IA.
Laravel · PostgreSQL · React · TypeScript · Stripe · Pest
Contexto
CashTracker gestiona presupuestos y gastos en un producto SaaS. El interés técnico está en proteger operaciones financieras bajo concurrencia, coordinar suscripciones y mantener límites claros de autorización en una interfaz web.
Arquitectura
La interfaz React/Inertia se integra con Laravel, donde servicios, policies y reglas de negocio coordinan las operaciones. PostgreSQL proporciona la persistencia transaccional; Stripe queda como integración externa para checkout, portal y webhooks.
Decisiones técnicas
- 01Las operaciones financieras usan transacciones PostgreSQL y bloqueos pesimistas para controlar límites concurrentes.
- 02Stripe Checkout y Billing Portal cubren suscripciones mensuales y anuales, con validación de webhooks.
- 03Authorization, rate limiting, verificación de email y recuperación de contraseña protegen cuentas y operaciones sensibles.
- 04Pest/PHPUnit cubre el comportamiento de la aplicación, incluyendo casos específicos de PostgreSQL cuando es necesario.
Reliability y seguridad
La consistencia se trata en la frontera de persistencia, no solo en la interfaz: las transacciones y el locking protegen las operaciones financieras ante concurrencia. Las policies y los controles de cuenta limitan quién puede actuar y con qué frecuencia.
Testing y delivery
El proyecto utiliza Pest/PHPUnit y conserva cobertura específica para el comportamiento de PostgreSQL cuando el motor es parte de la garantía. La documentación del flujo de billing hace explícita la dependencia de webhooks.
Trade-offs
El locking pesimista añade coordinación y coste de espera, pero es una elección comprensible cuando la consistencia de los límites financieros es prioritaria. Stripe simplifica el billing, aunque obliga a tratar webhooks e idempotencia como parte del flujo.