Saltar al contenido principal

Arquitectura técnica

Esta sección resume la base técnica de PrestaApp v3.0.0+3 para mantenimiento, auditoría y evolución del producto.

Stack principal

  • Flutter + Dart: aplicación móvil multiplataforma.
  • Riverpod: gestión de estado e inyección de dependencias.
  • GoRouter: navegación declarativa con protección de rutas.
  • SQLite / SQLCipher: almacenamiento local y cifrado en plataformas móviles.
  • Secure Storage: resguardo de claves, PIN y preferencias sensibles.
  • PDF y Share Plus: generación y uso compartido de reportes y comprobantes.

Organización del código móvil

El proyecto móvil separa responsabilidades por capas:

  • models: entidades de clientes, préstamos, pagos, bonos, transacciones y presupuestos.
  • data: base de datos local y repositorios.
  • providers: estado reactivo y dependencias de Riverpod.
  • services: autenticación, reportes y backups.
  • screens: pantallas y flujos de usuario.
  • widgets: componentes reutilizables de interfaz.
  • theme: sistema visual de la app.

Datos y repositorios

Los repositorios aíslan el acceso a SQLite y permiten probar la lógica sin acoplarla a la interfaz. La base contiene tablas para clientes, préstamos, pagos, bonos, categorías financieras, transacciones y presupuestos mensuales, con índices para consultas frecuentes.

Las migraciones están preparadas para evolucionar de forma secuencial sin borrar tablas existentes.

Rendimiento

La app delega trabajo pesado a procesos secundarios cuando corresponde:

  • Hashing de PIN mediante Isolate.run.
  • Renderizado de reportes PDF fuera del hilo principal.
  • Historial financiero paginado para evitar cargar todo el volumen de transacciones a la vez.
  • Conservación del estado visual de listas al cambiar entre pestañas.

Calidad

El repositorio móvil cuenta con CI en GitHub Actions para:

  • Instalar dependencias.
  • Verificar formato.
  • Ejecutar análisis estático.
  • Correr pruebas automatizadas.

La suite cubre repositorios, autenticación, reportes, utilidades de UI y pantallas principales.