Programador PHP y jQuery

Lliga CoRReCaT – Desarrollo PHP

Lliga Correcat es un subproyecto de la plataforma tecnológica de la asociación atlética corredors.cat, con la cual he colaborado y ayudado a administrar desde 2011 y un desarrollo PHP totalmente a medida.

La liga nació como ampliación del foro principal tras muchas conversaciones internas y mucha ilusión por un proyecto de estas características, que llevó alrededor de 3 meses de trabajo completo para la puesta en marcha de su primera versión.

Es una liga interna de atletismo popular que se actualiza semanalmente a través del «backend» o panel de gestión puesto a disposición de los administradores y que permite actualizar el calendario de carreras anual y subir los resultados para el cálculo automático de las puntuaciones y generación del ranking general según categorías (edad, sexo) y tipo de liga.

Los miembros asociados del club pueden acceder a través de su cuenta regular en el foro principal gracias a la integración con SMF y Joomla realizada para tal efecto y pueden darse de alta y de baja en la liga a voluntad, así como consultar los resultados de las carreras, las clasificaciones actuales y sus datos estadísticos de rendimiento anual (mejores marcas, etc.).

La plataforma fue pensada minuciosamente para extraer los resultados de los ficheros Excel proporcionados según el estándard propuesto por Championchip.cat, quien colabora desinteresadamente facilitando los resultados cada semana, y éstos son procesados del lado del servidor a través de la herramienta PHPExcel para minimizar el trabajo del staff administrativo, haciendo la gestión muy simple en tan solo unos pocos pasos.

También se integró el gestor de tablas MySQL Ajax Table Editor, con versión básica gratuita e implementado en jQuery, para facilitar las operaciones tipo CRUD del backend, lo cual permite a los administradores gestionar de manera muy sencilla las altas y bajas de los asociados, el calendario, así como añadir y borrar resultados manualmente de los participantes, y un gran número de operaciones más.

Esta automatización ha sido clave en el éxito del proyecto y ha permitido a la liga prosperar en el tiempo y continuar funcionando hasta nuestros días, ya que su supervivencia depende fundamentalmente de la voluntad del personal de la asociación que la mantiene actualizada semana tras semana. Actualmente pasa por la quinta edición.

Otras características

La liga ha sido ampliada en dos ocasiones y entre algunas de las características más recientes dispone de un módulo de gamificación a través de coronas y medallas digitales según logros tipo Foursquare, que se obtienen al alcanzar determinados hitos en la liga (número de carreras realizadas, tiempos batidos, etc) y un módulo de sorteo aleatorio de regalos entre los participantes.

Diseño e Implementación

Este proyecto fue uno de mis primeros desarrollos PHP + HTML + CSS a medida y para familiarizarme con el lenguaje opté por hacer un desarrollo íntegro sin usar ningún framework en particular, estructurando el código según una filosofía por capas (presentación, lógica de negocio y acceso a base de datos) en donde la carga de las diferentes secciones se hace dinámicamente via jQuery sin realizar POST de toda la página web.

Como ya se ha mencionado, el proyecto hace uso intensivo de algunas librerías PHP y jQuery para facilitar aquellas tareas para las que existiera una solución de código abierto o gratuito disponible en el mercado, como:

  • CK Editor
  • MySQL Ajax Table Editor
  • PHP Excel

Uno de los principales retos del proyecto fue integrar la liga en el ecosistema de aplicaciones que conformaban la plataforma de corredors.cat en ese momento, que ya contaba con dos bases de datos diferentes (una para el foro de usuarios SMF y otra para el CMS de gestión de contenidos Joomla).

Uno de los requisitos de cara a garantizar la mantenibilidad en el futuro era no contribuir a una mayor duplicación de datos, sin embargo también era requisito no modificar los sistemas actuales con el objetivo de garantizar la integridad de los datos actuales.

Para ello se implementó una base de datos relacional específica para la nueva funcionalidad, añadiendo solamente los nuevos datos necesarios, y se integró el resto haciendo ingeniería inversa de las bases de datos existentes, para la que se estableció una conexiones independientes (bases de datos MySQL) que a nivel de la aplicación se gestionaron como una capa de datos unificada haciendo uso del patrón de diseño Adapter.

Líneas de futuro

Existen algunas líneas de mejora planteadas, como la posibilidad de mejorar la navegación entre menús manteniendo el estado a través de jQuery Session, compartición de los logros de los usuarios en las redes sociales y un rediseño de la interfaz para adaptarla a los estándares actuales, por ejemplo con Bootstrap.