Frederick Garcia
← Volver al Inicio

PayLend

PayLend es una aplicación móvil Premium de tipo Offline-First diseñada para la gestión integral de préstamos, cobros y finanzas, construida con Flutter. Garantiza que el usuario pueda operar el 100% de la aplicación sin internet, con una sincronización transparente en segundo plano.

🚀 Idea General

El sistema está construido bajo estrictos principios de Clean Architecture y una estrategia Offline-First. Emplea un motor de sincronización bidireccional avanzado y un motor financiero de alta precisión (usando números decimales y racionales para evitar errores de punto flotante) para el cálculo exacto del Sistema Francés, gestión de abonos a capital, y amortizaciones.

🛠 Tecnologías Utilizadas

  • Framework & UI: Flutter (SDK ^3.11.4) con diseño “Dark Premium”
  • Gestión de Estado: flutter_riverpod (riverpod_annotation)
  • Navegación & Deep Linking: go_router
  • Base de Datos Local: drift (SQLite) con queries relacionales complejos y streams reactivos
  • Backend & Sincronización en la Nube: supabase_flutter (Auth, PostgreSQL, Storage, RPCs)
  • Matemática de Alta Precisión: decimal y rational
  • Seguridad y Autenticación: Autenticación híbrida (google_sign_in, sign_in_with_apple), y biometría con local_auth
  • Internacionalización (i18n): easy_localization (Soporta Inglés, Español, Alemán, Francés, Criollo Haitiano, Italiano y Portugués)
  • Reportes y Exportación: pdf, printing, csv y share_plus
  • Gráficos e Inteligencia de Negocios: fl_chart para dashboards visuales y proyecciones
  • Suscripciones: purchases_flutter (RevenueCat)
  • Telemetría y Estabilidad: firebase_analytics y firebase_crashlytics

📦 Modelos de Datos

El esquema relacional mapea de 1 a 1 las operaciones de crédito:

  • Clientes (Clients): id, firstName, lastName, phone, identityDocument
  • Préstamos (Loans): id, clientId, principalAmount, interestRate, termMonths, paymentFrequency
  • Cuotas (Installments): id, loanId, installmentNumber, dueDate, amountDue, status, paidAt
  • Pagos (Payments): Registro atómico e inmutable (id, installmentId, amount, principalAmount, interestAmount, paymentDate)
  • Servicios (Services): Catálogo de cargos adicionales
  • Cola de Sincronización (SyncQueue): Metadatos de operaciones offline para sincronización (targetTable, operation, recordId, payload)

🏗 Arquitectura y Estructura

  • Sincronización Bidireccional (Offline-First): Emplea el Outbox Pattern, guardando mutaciones en una tabla de cola (SyncQueue) y usando Isolates para descargas en segundo plano sin bloquear la UI.
  • Motor Financiero de Alta Precisión: Cálculos matemáticos usando librerías de precisión absoluta, evitando errores fraccionales nativos de SQLite/Dart.
  • Módulo de Inteligencia de Negocios (BI): Motor de riesgo (PayLend Score) con calificaciones (A-F) y proyecciones de flujo de caja interactivas.

🔒 Seguridad y Mejores Prácticas

  • Derecho al Olvido: Proceso riguroso para borrar cuentas permanentemente y limpiar datos almacenados.
  • Protección Biométrica: Acceso restringido por Face ID / Touch ID, con fallback inteligente a PIN.
  • Borrado Lógico (Soft Deletion): Columna deleted_at para prevenir re-hidratación de datos y gestionar borrados offline, apoyado por un Garbage Collector programado en Supabase (pg_cron).
  • Autenticación Mágica: Acceso sin contraseña con Magic Links, además de integraciones sociales nativas.