Proyecto de la asignatura Infraestructura Virtual del grado de Ingeniería Informática de la UGR.
(Actualización de datos automática actualmente parada) Cualquier amante del fútbol está acostumbrado a tener aplicaciones que le informan de diversas estadísticas sobre cualquier equipo de fútbol, jugador o competición. Pero, ¿y si además de esto, se quiere disponer de predicciones sobre resultados de futuros encuentros, campeones, goleadores, etc...? Por este motivo nace LaLigaStats, una aplicación que proporciona al usuario cualquier estadística presente de jugadores, partidos, equipos, etc... de La Liga Española de Fútbol, además de una serie de predicciones basadas en estadísticas sobre resultados futuros.
La motivación de elegir este proyecto reside en que hay muy pocas aplicaciones que además de mostrar estadísticas de fútbol, muestren buenas predicciones sobre los acontecimientos que puedan pasar en un partido; y además, al ser el fútbol un deporte con muchos seguidores, esta aplicación será de ayuda para bastantes aficionados.
La aplicación contará con una API REST, para poder usar los métodos GET y POST para el paso de parámetros, por ejemplo. Además, estará programada en el lenguaje de programación Javascript.
La idea es empezar desarrollando una aplicación sencilla que muestre estadísticas de partidos de La Liga Española, para luego incorporar las predicciones sobre eventos de los partidos de la jornada. Una vez desarrollada una versión estable con estas características, se empezará a trabajar en mejoras como la posibilidad de mostrar estadísticas y predicciones en tiempo real sobre partidos que estén en juego, añadir más competiciones, la mejora del algoritmo de predicciones, etc...
Se ha creado para esta aplicación un microservicio que funciona en forma de API REST, en el siguiente documento se explica todo lo relacionado a esta funcionalidad.
Esta aplicación cuenta con un par de funciones serverless, y un bot de telegram que hace uso de otra función serverless, en el siguiente documento se explica su implementación y funcionamiento.
- Función Vercel: https://la-liga-stats.juancpineda97.vercel.app/api/getEquipo.js?equipo=barcelona
- Función Netlify: https://laligastats.netlify.app/.netlify/functions/getRanking
- Bot Telegram: LaLigaStats_bot
En el siguiente documento se describen las herramientas utilizadas así como la motivación para usarlas, las cuales son:
- Javascript: Lenguaje de programación.
- Node.js: Entorno de ejecución del lenguaje.
- Jest: Framework para ejecutar tests.
- npm: Gestor de dependencias.
- Taskfile: package.json
- grunt: Gestor de tareas.
Para añadir Integración Continua a este proyecto, se han usado las siguientes herramientas documentadas en el siguiente documento:
Para la instalación de la aplicación se necesita tener instalado Node.js y su gestor de módulos, npm, además del módulo grunt-cli. Una vez se disponga de este software instalado, para instalar las dependencias de otros módulos de la aplicación basta con ejecutar el siguiente comando situado en la raíz del proyecto:
npm install
Esto instalará automáticamente los módulos de los que dependa la aplicación. Además, si se quieren ejecutar los tests del código de la aplicación, basta con ejecutar el comando:
grunt test
Para generar la documentación en formato del código en formato HMTL
se ejecuta el siguiente comando:
grunt documentacion
Esta documentación se guardará en la carpeta docs/docco
. Para eliminarla, basta con ejecutar el siguiente comando:
grunt borrar_doc
Para este repositorio también existe una imagen de Docker, la cuál está disponible para descargar, ejecutar en un contenedor y probar en ella las funcionalidades de la aplicación. En el siguiente documento se explican todos los detalles de que imagen de base se ha usado, el por qué y las diferentes versiones disponibles, además de las buenas prácticas que se han seguido en la construcción del archivo Dockerfile y el uso de Dockerhub. Para descargar la imagen hace falta tener instalado docker
en el sistema, y se podrá descargar con el siguiente comando, que descargará la versión más actualizada (latest):
docker pull juancpineda97/laligastats
Sin embargo este comando sólo descargará la imagen, no la ejecutará. Si se quiere descargar la imagen, y ejecutar montando en ella la carpeta del repositorio, se puede usar el siguiente comando en la raíz de la carpeta del repositorio descargado:
docker run -t -v `pwd`:/test juancpineda97/laligastats
Y se ejecutarán automáticamente los tests del repositorio en el contenedor con la imagen descargada (latest).
IMPORTANTE: Por defecto, al descargar el repositorio de Github, se descarga un zip que contiene dentro una carpeta con los archivos del repositorio, la cuál tiene el nombre con mayúsculas (LaLigaStats). Para montarla al ejecutar el contenedor, docker no admite rutas de archivos con alguna mayúscula, por lo que antes de ejecutar el comando anterior, habría que cambiar el nombre de esta carpeta a, por ejemplo, laligastats.
La imagen de docker junto con otras versiones de la imagen se han subido a Dockerhub, en esta sección se explica como se ha realizado.
También está disponible una imagen para este repositorio en GitHub Container Registry, en este documento se explica como se ha subido a este sitio web. Para instalarla, basta con ejecutar desde la línea de comandos el siguiente comando:
docker pull ghcr.io/juancpineda97/laligastats:latest
Un buen proyecto debe incluir tests para determinar si un cambio en el código afecta al funcionamiento correcto del mismo, y este proyecto no iba a ser menos. Los tests, como se ha comentado anteriormente, se realizarán con el framework Jest (en el siguiente documento se explica el por qué de su uso), el cuál funciona con archivos de configuración en los que implementan los test, en este caso, los archivos actuales son los siguientes:
Además, en el siguiente documento se enumeran con más detalle cada test disponible, ordenados por archivo y clases.
En esta fase del proyecto, se han creado tests para determinar si las siguientes HU cumplen con su función:
- Ver jugadores de un equipo
- Test comprobando su correcto funcionamiento: ✔️
- Mostrar datos del jugador
- Test comprobando su correcto funcionamiento: ✔️
- Mostrar datos de un partido
- Test comprobando su correcto funcionamiento: ✔️
Para ejecutar los tests, basta con haber seguido los pasos para la instalación del proyecto y ejecutar el siguiente comando estando ubicado en el proyecto:
grunt test
En el siguiente documento se muestran todos los pasos seguidos para el desarrollo de la aplicación. También se pueden ver con estos enlaces los diferentes issues y milestones creados:
Además, en este otro documento se muestra una descripción de la funcionalidad de las clases y métodos del proyecto.
En este documento se exponen todas las historias de usuario del proyecto, además de una descripción de ellas.
Las últimas HU creadas y abiertas son las siguientes: