Proyecto

Presentación

En este proyecto se ha desarrollado una aplicación que permita gestionar recursos TIC y listas de recursos, para realizar los tests correspondientes, aplicando los conocimientos aprendidos.

El objetivo es dotar de una herramienta para que una comunidad de usuarios pueda compartir recursos TIC, con sus valoraciones y categorizaciones.


Autores

Javier Guerra y Kevin Zamora

Profesor

Alan Sastre

Mentores

Marina Sayols, David Gómez

MVP

Se ha desarrollado la aplicación con el objetivo de cumplir con los siguientes requisitos mínimos:

  • Planificación del proyecto y coordinación
  • Aplicación web con Java
  • Creación, lectura, modificación y borrado de Recursos TIC, Listas, Valoraciones y Usuarios
  • Gestión de BB.DD.
  • Interfaz con plantillas HTML y CSS
  • Gestión de errores y excepciones
  • Test unitarios, de integración y funcionales
  • Dockerización de la aplicación
  • Integración continua y automatización

Destacados

Además de los requisitos del MVP, se han incluido las siguientes funcionalidades:

  • Diseño responsive, "mobile first"
  • Web accesible AA. Testada con WAVE
  • Seguridad por diseño
  • Confirmaciones de borrado
  • Implementación de login de usuarios
  • Integra el editor TinyMCE
  • Provee API REST e interfaz Swagger
  • Incluye aviso legal, privacidad y cookies
  • Documentación la aplicación con JavaDoc
  • Usa el protocolo OpenGraph para RR.SS.
  • Manifest para móviles (PWA)
  • Desarrollada con Linux + Docker LAMP
  • Despliegue

Tecnologías

Para el desarrollo se ha utilizado:

  • Java 23
  • Spring Boot
  • Spring Security
  • Thymeleaf
  • Bootstrap
  • TinyMCE
  • MySQL
  • H2
  • Hibernate
  • Docker
  • Docker-compose
  • GitHub Actions

Para el testing se ha utilizado:

  • JUnit
  • Mockito
  • Selenium
  • JaCoCo
  • SonarQube
  • Swagger

Alcance del proyecto

Elaborado con la ayuda de los mentores.

Epics

  1. Gestión de Recursos TIC
    • Permitir a los usuarios crear, editar, eliminar y visualizar enlaces a recursos TIC.
    • Implementar la funcionalidad para agrupar recursos en listas.
  2. Gestión de Usuarios
    • Facilitar el registro, autenticación y gestión de perfiles de usuarios.
    • Permitir a los administradores gestionar usuarios (alta, baja y edición).
  3. Valoraciones y Comentarios
    • Implementar un sistema de valoraciones para que los usuarios puedan calificar los recursos.
    • Permitir a los usuarios dejar comentarios sobre los recursos.
  4. Gestión de Listas de Recursos
    • Permitir a los usuarios crear y gestionar listas personalizadas de recursos.
    • Implementar la funcionalidad para añadir o eliminar recursos de las listas.
  5. Administración y Moderación
    • Proporcionar herramientas para que los administradores gestionen el contenido y los usuarios.
    • Implementar un sistema de notificaciones para alertar sobre acciones importantes (como eliminaciones de recursos).
  6. Interfaz de Usuario y Experiencia
    • Diseñar una interfaz intuitiva y accesible para todos los tipos de usuarios.
    • Asegurar que la navegación y la interacción sean fluidas y agradables.

Historias de usuario (tests de aceptación)

Usuario no registrado

  1. Como usuario no registrado, quiero poder ver una lista de recursos TIC, para que pueda explorar el contenido disponible sin necesidad de registrarme.
  2. Como usuario no registrado, quiero poder registrarme en la aplicación, para que pueda acceder a funcionalidades adicionales como crear listas y dejar valoraciones.

Usuario autor autenticado

  1. Como usuario autor autenticado, quiero poder crear nuevos enlaces a recursos, para que pueda contribuir con contenido útil a la comunidad.
  2. Como usuario autor autenticado, quiero poder editar mis propios enlaces a recursos (y losde otros), para que pueda corregir información o actualizar enlaces obsoletos.
  3. Como usuario autor autenticado, quiero poder eliminar mis enlaces a recursos (y los de otros), para que pueda gestionar el contenido que he creado.
  4. Como usuario autor autenticado, quiero poder crear y gestionar mis propias listas de recursos, para que pueda organizar el contenido de manera que me resulte útil.
  5. Como usuario autor autenticado, quiero poder dejar valoraciones en los recursos, para que pueda compartir mi opinión y ayudar a otros usuarios a decidir sobre su utilidad.

Usuario administrador autenticado

  1. Como administrador autenticado, quiero poder gestionar usuarios (dar de alta y baja), para que pueda mantener la integridad y seguridad de la comunidad.
  2. Como administrador autenticado, quiero poder eliminar enlaces a recursos, para que pueda gestionar el contenido inapropiado o irrelevante.
  3. Como administrador autenticado, quiero poder editar los datos de los usuarios, para que pueda corregir información errónea o actualizar datos.
  4. Como administrador autenticado, quiero poder ver todas las valoraciones de los recursos, para que pueda supervisar la calidad del contenido y la interacción de los usuarios.

Consideraciones adicionales

  1. Eliminación de recursos y valoraciones: Al eliminar un recurso, todas las valoraciones asociadas deben eliminarse. Esto debe ser claro para los usuarios.
  2. Persistencia de recursos: Los recursos creados por un usuario deben permanecer en la aplicación incluso si el usuario es eliminado, asegurando que el contenido no se pierde.

Criterios de aceptación (tests de integración)

Usuario no registrado

  1. Visualización de recursos
    • El usuario puede ver una lista de recursos TIC sin necesidad de registrarse.
    • La lista muestra al menos el título y una breve descripción de cada recurso.
  2. Registro de usuario
    • El usuario puede completar un formulario de registro y recibir una confirmación de éxito.
    • Se valida que el correo electrónico no esté ya registrado.

Usuario autor autenticado

  1. Creación de recursos
    • El usuario puede crear un nuevo enlace a un recurso y recibir una confirmación de éxito.
    • El recurso creado aparece en la lista de recursos disponibles.
  2. Edición de recursos
    • El usuario puede editar un recurso existente y ver los cambios reflejados inmediatamente.
    • Determinar si se valida que el usuario solo pueda editar sus propios recursos.
  3. Determinar si el usuario puede proceder a la eliminación de recursos, y entonces
    • El usuario puede eliminar un recurso y recibir una confirmación de éxito.
    • El recurso eliminado ya no aparece en la lista de recursos.
  4. Gestión de listas
    • El usuario puede crear, editar y eliminar listas de recursos.
    • Las listas creadas son visibles y accesibles para el usuario.
  5. Valoraciones de recursos
    • El usuario puede dejar una valoración en un recurso y ver su valoración reflejada.
    • El sistema permite solo una valoración por recurso por usuario.

Usuario administrador autenticado

  1. Gestión de usuarios
    • El administrador puede dar de alta y baja a usuarios y recibir confirmaciones de éxito.
    • Los cambios en el estado de los usuarios se reflejan en la lista de usuarios.
  2. Eliminación de recursos
    • El administrador puede eliminar un recurso y recibir una confirmación de éxito.
    • Al eliminar un recurso, se eliminan todas las valoraciones asociadas.
  3. Edición de datos de usuario
    • El administrador puede editar los datos de cualquier usuario y ver los cambios reflejados.
    • Se valida que los cambios sean efectivos y se notifique al usuario afectado.

Consideraciones generales

  1. Todos los mensajes de error deben ser claros y útiles para el usuario.
  2. Las acciones deben ser reversibles donde sea posible (por ejemplo, confirmaciones antes de eliminar).
  3. Explorar la agrupación en flujos (Happy Path, Edge Cases)
    • Happy Path: Flujos de usuarios que realizan acciones normales y esperan que se realicen correctamente.
    • Edge Cases: Flujos de usuarios que realizan acciones normales pero que no esperan que se realicen correctamente.

Opciones de mejora

  • Validación de formularios
  • Comprobar enlaces a recursos y logos/fotos
  • Logs de accesos
  • Mensajes de confirmación de alta, actualización y borrado
  • Paginación de resultados
  • CRUD de etiquetas
  • CRUD de tipo de recurso
  • Test de regresión
  • Filtrado y ordenado de listas
  • Buscador de recursos reactivo
  • Notificar al usuario cuando este ha sido dado de baja
  • Estadísticas
  • Traducción a otros idiomas

Licencia

Este proyecto está licenciado bajo la licencia GPL v3.0.