producción · universidad ricardo palma

YachayHuasi

La plataforma de gestión académica que reemplazó a “Apolo”, el sistema central de la URP tras más de 20 años — del quechua, “casa del saber”.

Desarrollada por el equipo de la OFICIC (~6 desarrolladores) · Mi rol: desarrollador backend — arquitectura de reportes Excel y módulos académicos.

~11.6K
alumnos por ciclo
30+
módulos en producción
13
módulos usan mi arquitectura de reportes
~660
endpoints REST · 31 controladores

01 contexto

YachayHuasi es el sistema de gestión académica de la Universidad Ricardo Palma, construido internamente por la OFICIC para reemplazar a “Apolo”, el sistema legacy que la universidad usó durante más de 20 años. Cubre más de 30 módulos —matrícula (extraordinaria, automática, residentado médico), carga lectiva y no lectiva, cuadro de necesidades, cierre y propuesta de carga, gestión de alumnos y de notas, dashboards, mantenimiento, trazabilidad y un motor transversal de reportes— y atiende a unos 11.600 alumnos por ciclo semestral. La migración fue progresiva: el backend aún lee vistas puente del antiguo Apolo durante la transición. Es un proyecto de equipo (~6 desarrolladores); lo que sigue describe mi contribución específica.

02 mi contribución

Como desarrollador backend del equipo de la OFICIC (~230 commits, cuarto contribuidor del núcleo del proyecto, activo desde febrero 2023), mi aporte más significativo fue diseñar la arquitectura de generación de reportes Excel, además de construir y liderar varios módulos completos.

Logro principal — arquitectura de reportes Excel (Apache POI)

Diseñé los cimientos de la generación de reportes Excel del sistema. Introduje un style factorycreateStyles(Workbook)— que devuelve un Map<String, CellStyle> de estilos nombrados, precacheados y reutilizables, apoyado en un helper createBorderedStyle. La decisión técnica clave: precachear y reutilizar instancias de CellStyle a través del map en lugar de crear un estilo por celda. Esto evita el error clásico de Apache POI —el límite duro de ~64.000 estilos por libro— que rompe cualquier reporte de tamaño real. Cada reporte parte de un XSSFWorkbook con su print setup (orientación horizontal, ajuste a página), anchos de columna definidos, y se entrega como un ByteArrayOutputStream descargable.

Impacto: ese patrón es hoy el estándar del equipo para Excel y se reutiliza en 13 módulos de servicio desarrollados por distintas personas. Para ser preciso: la reportería es transversal y todo el equipo construyó reportes; mi contribución fue diseñar la arquitectura que los demás adoptaron, no escribir todos los reportes.

Módulos que construí o lideré (autor principal)
Recursos Internos — autor único, de cero (Controller → Service → Repository, auth JWT, control de accesos por permisos, export a Excel). Dashboards — autor principal de endpoints y consultas de Alumnos y Docentes (incl. condición laboral docente). Cierre de Carga y Trazabilidad / Auditoría — autor principal.
Como co-autor
Carga Lectiva (grupos y cupos PEB, consulta de carga, periodos activos), Gestión de Alumnos (deserción, retención, admisión), Mantenimiento (exoneración de cursos) y Gestión de Notas (PDF de cursos sin nota).
Frontend
También participé en el frontend, concretamente en los módulos de Medicina dentro de Carga Lectiva.
Incidencias de producción resueltas
Detección de cruces de horarios por alumno (evitando matrículas con conflictos); reportes PDF que salían en blanco cuando había cursos sin nota; y apellido materno duplicado en los reportes de asistencia a exámenes.

03 arquitectura & stack

Backend monolítico en Java 17 sobre Spring Boot 2.5.2 (Web/MVC, Data JPA + JDBC, Security), empaquetado como WAR sobre Tomcat externo. Persistencia heterogénea reflejo de la convivencia con el legacy: SQL Server 2019 (bases BDURP y URPBD) como almacén principal y MySQL para el datasource de recursos —hasta cuatro datasources por entorno—. La generación documental se apoya en Apache POI (Excel) y Thymeleaf (PDF/HTML). El backend y los frontends viven en repositorios separados.

Lenguaje & framework
Java 17 · Spring Boot 2.5.2 (Web/MVC, Data JPA + JDBC, Security) · WAR / Tomcat
Datos
SQL Server 2019 (BDURP, URPBD) + MySQL · hasta 4 datasources por entorno
Reportes & integraciones
Apache POI 5.2 · Thymeleaf · AWS S3 · javax.mail · WebFlux (push FCM) · JWT (jjwt + Auth0)
Observabilidad & proceso
Actuator + Micrometer + Prometheus · Azure DevOps (PRs, work items, pipeline con Gitleaks) · 1.775 commits · ~270 archivos Java

04 impacto & prensa

YachayHuasi está en producción atendiendo a unos 11.600 alumnos por ciclo y reemplazó a Apolo, el sistema que la URP usó durante más de 20 años. Al lanzarse en el semestre 2023-II operaba ya al 95% de su capacidad, y su presentación tuvo cobertura de prensa en El Comercio (agosto de 2023). Sobre esa base de más de 30 módulos y ~660 endpoints, mi huella concreta es la arquitectura de reportes Excel que hoy se reutiliza en 13 módulos del equipo, además de cuatro módulos de los que fui autor principal.

Proyecto institucional desarrollado en equipo (~6 desarrolladores) por la OFICIC de la URP. Las cifras de escala (alumnos, módulos, endpoints, prensa) describen el sistema completo; las atribuciones de “autor principal”, “co-autor” y “arquitectura de reportes” describen mi contribución específica, verificada contra el historial del repositorio.