Aplicación no oficial del Sistema de Administración Escolar (SAES) para estudiantes del Instituto Politécnico Nacional (IPN). Consulta calificaciones, horarios, Kardex, credencial digital y más desde una interfaz nativa en SwiftUI.
- ✅ Calificaciones — parciales, final y ETS
- ✅ Horario semanal de clases
- ✅ Kardex completo con promedios por semestre
- ✅ Datos personales con foto del estudiante
- ✅ Escaneo de código QR de la credencial del IPN
- ✅ Generación de credencial digital dentro de la app
- ✅ Exportación como imagen para compartir o guardar
- ✅ Evaluación automática de maestros desde la app
- ✅ Noticias IPN — feed de noticias actualizado
- ✅ Calendario académico IPN — importación vía iCal
- ✅ Consulta de disponibilidad de horarios por unidad académica
- ✅ Exportar comprobante de inscripción en PDF
- ✅ Agregar clases al calendario del dispositivo
- ✅ Cifrado ChaCha20 para credenciales almacenadas
- ✅ Sesiones por cookies — sin tokens almacenados externamente
- ✅ Sin almacenamiento externo — los datos no se comparten con terceros
- ✅ Modo oscuro — sistema, claro u oscuro
- ✅ Localización — español e inglés
- ✅ Haptic feedback configurable
- ✅ Tab por defecto personalizable
| Requisito | Versión |
|---|---|
| iOS | 16.0+ |
| Xcode | 16+ |
| Swift | 5 |
| Dependencias | Swift Package Manager |
- Clonar el repositorio:
git clone https://github.com/roncuevas/SAES.git cd SAES - Abrir el proyecto en Xcode.
- Compilar y ejecutar en un simulador o dispositivo iOS.
💡 Las dependencias de Swift Package Manager se resuelven automáticamente al abrir el proyecto.
El proyecto sigue el patrón MVVM + Web Scraping con dos flujos de datos:
| Capa | Responsabilidad |
|---|---|
| View | Interfaz SwiftUI, bindea al ViewModel |
| ViewModel | ObservableObject con estado @Published |
| DataSource | Obtiene HTML mediante URLSession |
| Parser | Convierte HTML a modelos con SwiftSoup |
Para formularios complejos (como evaluación docente) se utiliza un puente JavaScript ↔ Swift mediante WKWebView.
| Dependencia | Uso |
|---|---|
| SwiftSoup | Parsing de HTML |
| CryptoSwift | Cifrado ChaCha20 de credenciales |
| Kingfisher | Carga y caché de imágenes |
| Lottie | Animaciones |
| Firebase | Analytics, Crashlytics, Messaging, Remote Config |
- ❌ Esta aplicación es un proyecto independiente y no tiene ninguna relación con el Instituto Politécnico Nacional (IPN).
- 🔒 Las credenciales se cifran localmente y no son almacenadas ni compartidas con terceros.
⚠️ El uso de esta aplicación es bajo la responsabilidad del usuario.
Si tienes alguna sugerencia o problema, puedes abrir un issue en este repositorio o contactar al desarrollador:
- 👨💻 Desarrollador: roncuevas
- 📧 Email: [email protected]
¡Cualquier contribución es bienvenida! 🎉