Sobre Este Proyecto
Una herramienta interna para empresas de factoring orientada a gestionar carteras de facturas: cargar operaciones, controlar vencimientos, calcular descuentos diarios y registrar cobranzas sin planillas de cálculo ni cálculos manuales.

Características Principales:
- CRUD de operaciones de factoring – Registro de facturas con cliente, pagador, valor nominal, fecha de emisión, fecha de vencimiento y tasa mensual. Calcula automáticamente días, descuento, adelanto y ganancia esperada.
- Directorio de clientes y pagadores – Gestión de cedentes y pagadores con normalización de RUC, búsqueda difusa y detección de duplicados mediante índices trigram de PostgreSQL.
- Dashboard en tiempo real – Tarjetas estadísticas para cartera total, monto pendiente, ganancia esperada y cantidad de vencidos. Vista cronológica de los próximos 7 días de vencimientos.
- Listado inteligente de operaciones – Ordenado por fecha de vencimiento, filas vencidas resaltadas en rojo, paginación basada en cursor y filtros por estado, rango de fechas, cliente o pagador.
- Cobranza en un clic – Permite marcar facturas como cobradas con un solo botón; protecciones SQL idempotentes evitan cobranzas duplicadas y soportan reversión para correcciones.
- Reporte de intereses – Reporte de intereses generados por rango de fechas con tarjetas resumen, desglose de top-5 clientes y exportación Excel en streaming con encabezados estilizados y paneles congelados.
- Adjuntos seguros – Subida de archivos PDF, JPEG, PNG o WebP (verificados mediante magic-bytes, límite de 10 MiB) vinculados a operaciones con descargas autenticadas desde servidor y limpieza automática de archivos huérfanos.
- Autenticación sin registro público – Login mediante Better Auth con email y contraseña; usuarios creados exclusivamente vía CLI administrativa. Sesiones basadas en cookies con protección CSRF mediante verificación de Origin.
- UX centrada en español – Todo el contenido en español rioplatense (es-AR), formato monetario en USD y tipografía editorial con Fraunces serif + Geist sans.
- Responsive y accesible – Diseño mobile-first con componentes shadcn/ui, navegación por teclado, skeleton loaders y páginas de detalle optimizadas para impresión.

Stack Tecnológico:
- Frontend: Next.js 16 (App Router), React 19, Tailwind CSS 4, shadcn/ui (primitivas Radix), tipografías Fraunces + Geist
- Backend: Next.js Server Actions, vista PostgreSQL para campos derivados, decimal.js para cálculos monetarios exactos (HALF_UP)
- Base de Datos: PostgreSQL 16 (clientes, pagadores, operaciones, adjuntos, sesiones, cuentas)
- Autenticación: Better Auth, hash de contraseñas argon2id, sesiones mediante cookies, middleware CSRF basado en verificación de Origin
- Validación: Esquemas Zod (zMoney, zPercent, zDate) + React Hook Form
- ORM y Migraciones: Drizzle ORM + Drizzle Kit
- Exportación Excel: ExcelJS streaming WorkbookWriter
- Testing: Playwright e2e (happy-path), tests unitarios para cálculos de factoring y normalización de identidad
- Infraestructura: Docker Compose (Dockerfile multi-stage), nginx reverse proxy, TLS con Cloudflare, backups nocturnos mediante pg_dump y predeploy grep gate
Objetivo:
Entregar un sistema de operaciones de factoring confiable y autocontenido que pueda ser gestionado de punta a punta por un único operador: cargar facturas, controlar vencimientos, registrar cobranzas y generar reportes, sin dependencias externas más allá de PostgreSQL y un navegador web.