Proyectos
02Capitl
02En producción100h invertidas

Capitl

SaaS interno de gestión de préstamos, cobranza y caja para una financiera.

Next.jsTypeScriptSupabaseShadcn/uiZodTanStack TableTailwind
El problema

La operación completa —clientes, préstamos, cuotas, mora, represtamistas y caja— se gestionaba en un Excel desestructurado. Sin fórmulas consistentes, sin historial confiable: cuando el volumen creció, los pagos se perdían, la caja no cerraba y calcular la mora era manual.

La idea

Reemplazar el Excel por un SaaS interno con módulos dedicados: alta de clientes, wizard de préstamos multi-paso, seguimiento de cuotas con mora automática, cobranza, caja diaria multi-moneda ARS/USD y gestión de represtamistas con comisiones separadas.

El resultado

Sistema en producción con 7 módulos completos. El cálculo de mora, las comisiones de represtamistas y el balance de caja que antes tomaban horas de trabajo manual en Excel ahora son automáticos e instantáneos. La operación pasó de un Excel compartido a un sistema con roles, historial y trazabilidad completa.

Arquitectura

Next.js App Router con autenticación por rol. Shadcn/ui para los componentes de form. TanStack Table para las tablas con sorting/filtering del lado del cliente.

AuthSupabase Auth con roles: admin / operador
FormsReact Hook Form + Zod para validación en cada paso del wizard
TablesTanStack Table con filtering, sorting y pagination client-side
DBPostgreSQL en Supabase. RLS por rol de usuario.
Decisiones técnicas

¿Wizard de préstamo en un solo form o multi-step?

elegido

Multi-step con estado local en React

descartado

Un form gigante en una sola pantalla

El volumen de datos por préstamo es grande. En un form largo el usuario se pierde. El wizard guía paso a paso y reduce errores.

Errores reales · lo que salió mal
01

El campo whatsapp era integer en Supabase. Los números argentinos (con código de área) superaban el límite. Fix: cambiar a text + validar longitud en el frontend.

Qué mejoraría

Agregar notificaciones push para cobranzas vencidas sin necesidad de ingresar al sistema. Exportar reportes de caja por período para contabilidad. Dashboard con curva de mora histórica y proyección de cartera.