Portafolio
Proyecto propio (bloque Moodle) · 2024–2025

Recomendador de cursos para Moodle

Bloque Moodle por intereses

Bloque Moodle que sugiere cursos cruzando los intereses del usuario con las etiquetas de cada curso, con resultados en tiempo real sin recargar la página.

Mi rol Diseño e implementación completa

  • PHP
  • Moodle Block API
  • Moodle External Services (REST/AJAX)
  • JavaScript AMD (RequireJS, jQuery)
  • Mustache
  • Moodle MUC (caché)
  • SQL (CTE)
  • Grunt
Recomendador de cursos para Moodle
837
Líneas PHP
~44%
Reducción AMD (Grunt)
1
Servicio web externo
23 EN / 23 ES
Cadenas de idioma

Capturas

Problema

En un campus Moodle con catálogo amplio, el alumno raramente descubre los cursos que de verdad encajan con sus intereses: navega por categorías, no por temática. La pregunta "¿qué curso hago ahora?" no tenía una respuesta guiada dentro de la propia plataforma, y los cursos recién publicados pasaban desapercibidos.

Solución

Diseñé e implementé desde cero el bloque block_course_recommender. El alumno marca sus intereses como badges y el bloque cruza esas etiquetas con las de cada curso mediante una consulta SQL con CTE que puntúa por número de coincidencias y prioriza lo más reciente. Las sugerencias llegan en tiempo real vía un servicio web externo de Moodle (AJAX), validado con sesskey y contexto, sin recargar la página. El front se resuelve con un módulo AMD (RequireJS + jQuery) y plantillas Mustache; el catálogo de etiquetas se cachea en MUC con TTL configurable para evitar consultas repetidas. Filtra cursos visibles con automatrícula y excluye aquellos en los que el alumno ya está inscrito. Añadí ajustes de administración (color, número de etiquetas, criterio de orden), provider de privacidad GDPR e i18n completo ES/EN.

Resultado

El bloque está publicado como release v2.0.0 estable, instalable como cualquier plugin Moodle. Aporta descubrimiento de cursos por afinidad dentro del propio campus, con sugerencias instantáneas, etiquetas configurables y JavaScript minificado con Grunt (~44% menos). Cumple las convenciones Moodle: cabecera GPL v3, PHPDoc, privacidad y bilingüismo, listo para distribución.