Files
aulas-unicaba-mvp/README.md
T

4.0 KiB

Aulas UNICABA

Un visor híbrido especializado y offline-first desarrollado para la visualización de la cartelera oficial de aulas, seguimiento automatizado de materias cursadas y generación de la Credencial Digital Universitaria para estudiantes de la Universidad de la Ciudad (UNICABA).

Información Técnica y Frameworks

  • Base Frontend: Angular 20.3.x
  • Librería de Componentes UI: Ionic Framework v8
  • Puente Nativo Multiplataforma: Capacitor v8
  • Procesamiento de Archivos PDF Interno: pdfjs-dist (Renderización nativa in-dom de la Credencial)

Plugins de Experiencia Nativa (Capacitor)

La aplicación invoca funciones 100% nativas apoyándose en las siguientes librerías core:

  • @capacitor/filesystem: Escritura pesada persistente de respaldos en CSV en el FileSystem local ("Documents").
  • @capawesome/capacitor-file-picker: Interfaz de File Picker del OS (Cloud / Storage) para restauración manual.
  • @capacitor/local-notifications: Motor de avisos visuales locales ante un cambio repentino de aula mapeada en favoritos.
  • @capacitor/preferences: Almacenamiento rápido volátil (Key-Value) para estado de caché de credenciales offline y preferencias menores.
  • @transistorsoft/capacitor-background-fetch: Cronjobs transparentes delegados al Sistema Operativo para despertar a la app y sincronizar la cartelera.
  • @capacitor-community/screen-brightness: Anulación y control programático de brillo de panel al desplegar formatos estáticos de código QR/Credencial UI.
  • @capacitor/haptics: Respuestas hápticas (Vibración inteligente) en interacciones de hardware/software clave.
  • @capacitor/share: Puente social nativo para el envío de horarios por WhatsApp, Telegram, etc.

Compatibilidad Multiplataforma (iOS y Android)

Todo el código fuente de Aulas UNICABA (TypeScript, HTML y SCSS) y la selección estricta de sus plugins de Capacitor son 100% compatibles tanto con equipos móviles Android como con el ecosistema iOS de Apple. La arquitectura garantiza que la aplicación operará sintácticamente de forma idéntica en iPhone.

🤖 Despliegue en Android

Requisito previo: Android Studio instalado, Node.js y NPM.

# 1. Instalar dependencias e hibridación
npm install

# 2. Compilación del binario web
npm run build 

# 3. Transpilación y Sincronización de puentes nativos Android
npx cap sync android

# 4. Apertura del EDI para firma de APK o ejecución en celular por ADB
npx cap open android

🍏 Despliegue en iOS (iPhone / iPad)

Requisito previo: Una computadora macOS reciente, Xcode, Node.js y CocoaPods instalado globalmente (sudo gem install cocoapods).

# 1-2. Instalación y compilación estándar de web
npm install
npm run build

# 3. Empaquetar el proyecto inicial para iOS (Solo se ejecuta una vez en la vida del proyecto)
npx cap add ios

# 4. Sincronizar plugins y actualizar Pods
npx cap sync ios

# 5. Apertura en Xcode para configurar equipo de Apple Dev y emular
npx cap open ios 

Nota para Xcode: Para compilar exitosamente deberás habilitar permisos explícitos para Local Notifications y capacidades de "Background Fetch" en los Background Modes de la pestaña Signing & Capabilities dentro de Xcode.


Privacidad y Flujo Cero Intermediarios (Zero-Trust)

  1. Credenciales en Moodle Bypass: Por diseño de arquitectura, la app extrae el PDF de credencial estudiantil logueándose de manera asilvestrada mediante CapacitorHttp. Supera bloqueos tipo CORS al delegar el flujo de HTTP al motor OS, nunca triangulando el DNI a través de un backend tercero.
  2. Resiliencia (Anti-Wipes): Dado las agresivas políticas Storage Scoped a partir de Android 11 que borran bases de datos SQLite y Preferences locales si se desinstala, la app empuja automáticamente la personalización del alumno a un archivo estandarizado aulas_unicaba_datos.csv a su gestor público de archivos general ("Documentos").