producción · universidad ricardo palmaproduction · 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”. The academic-management platform that replaced “Apolo”, URP's core system after 20+ years — from Quechua, “house of knowledge”.
Desarrollada por el equipo de la OFICIC (~6 desarrolladores) · Mi rol: desarrollador backend — arquitectura de reportes Excel y módulos académicos. Built by the OFICIC team (~6 developers) · My role: backend developer — Excel reporting architecture and academic modules.
01 contextocontext
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.
YachayHuasi is Universidad Ricardo Palma's academic-management system, built in-house by the OFICIC to replace “Apolo”, the legacy system the university used for over 20 years. It spans 30+ modules —enrollment (extraordinary, automatic, medical residency), teaching and non-teaching load, requirements planning, course closing and proposal, student and grade management, dashboards, maintenance, audit trail and a cross-cutting reporting engine— and serves around 11,600 students per semester cycle. The migration was gradual: the backend still reads bridge views from the old Apolo during the transition. It's a team project (~6 developers); what follows describes my specific contribution.
02 mi contribuciónmy contribution
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.
As a backend developer on the OFICIC team (~230 commits, fourth core contributor, active since Feb 2023), my most significant contribution was designing the Excel report-generation architecture, plus building and leading several complete modules.
Diseñé los cimientos de la generación de reportes Excel del sistema. Introduje un style factory —createStyles(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.
I designed the foundations of the system's Excel report generation. I introduced a style factory —createStyles(Workbook)— that returns a Map<String, CellStyle> of named, precached, reusable styles, backed by a createBorderedStyle helper. The key technical decision: precache and reuse CellStyle instances through the map instead of creating one style per cell. This avoids the classic Apache POI pitfall —the hard limit of ~64,000 styles per workbook— that breaks any real-sized report. Each report starts from an XSSFWorkbook with its print setup (landscape, fit-to-page), defined column widths, and is delivered as a downloadable ByteArrayOutputStream.
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.
Impact: that pattern is now the team's standard for Excel and is reused across 13 service modules built by different people. To be precise: reporting is cross-cutting and the whole team built reports; my contribution was designing the architecture others adopted, not writing every report.
- Módulos que construí o lideré (autor principal)Modules I built or led (lead author)
- 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.
- Internal Resources — sole author, from scratch (Controller → Service → Repository, JWT auth, permission-based access control, Excel export). Dashboards — lead author of Student and Faculty endpoints and queries (incl. faculty employment status). Course Closing and Audit Trail — lead author.
- Como co-autorAs co-author
- 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).
- Teaching Load (PEB groups and quotas, load lookup, active periods), Student Management (dropout, retention, admission), Maintenance (course exemptions) and Grade Management (PDFs for courses without grades).
- FrontendFrontend
- También participé en el frontend, concretamente en los módulos de Medicina dentro de Carga Lectiva.
- I also worked on the frontend, specifically the Medicine modules within Teaching Load.
- Incidencias de producción resueltasProduction issues resolved
- 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.
- Per-student schedule-clash detection (preventing conflicting enrollments); blank PDF reports when courses had no registered grade; and a duplicated maternal surname in exam-attendance reports.
03 arquitectura & stackarchitecture & 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.
Monolithic backend in Java 17 on Spring Boot 2.5.2 (Web/MVC, Data JPA + JDBC, Security), packaged as a WAR on an external Tomcat. Heterogeneous persistence reflecting the legacy coexistence: SQL Server 2019 (BDURP and URPBD databases) as the main store and MySQL for the resources datasource —up to four datasources per environment—. Document generation relies on Apache POI (Excel) and Thymeleaf (PDF/HTML). Backend and frontends live in separate repositories.
- Lenguaje & frameworkLanguage & framework
- Java 17 · Spring Boot 2.5.2 (Web/MVC, Data JPA + JDBC, Security) · WAR / Tomcat
- DatosData
- SQL Server 2019 (BDURP, URPBD) + MySQL · hasta 4 datasources por entornoup to 4 datasources per environment
- Reportes & integracionesReporting & integrations
- Apache POI 5.2 · Thymeleaf · AWS S3 ·
javax.mail· WebFlux (push FCM) · JWT (jjwt + Auth0) - Observabilidad & procesoObservability & process
- Actuator + Micrometer + Prometheus · Azure DevOps (PRs, work items, pipeline con Gitleaks) · 1.775 commits · ~270 archivos Java1,775 commits · ~270 Java files
04 impacto & prensaimpact & press
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.
YachayHuasi is in production serving around 11,600 students per cycle and replaced Apolo, the system URP used for over 20 years. At its 2023-II launch it was already operating at 95% of its capacity, and its presentation was covered by El Comercio (August 2023). On top of that base of 30+ modules and ~660 endpoints, my concrete footprint is the Excel reporting architecture now reused across 13 team modules, plus four modules I led as lead author.
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. Institutional project built by a team (~6 developers) at URP's OFICIC. The scale figures (students, modules, endpoints, press) describe the whole system; the “lead author”, “co-author” and “reporting architecture” attributions describe my specific contribution, verified against the repository history.