Skip to main content

Documentación Tecnología

Universidad de Sevilla

Universidad de Sevilla

Escuela Técnica Superior de Ingeniería Informática

Grado en Ingeniería Informática – Ingeniería del Software

Curso: 2024 – 2025
Fecha: 19/02/2025
Versión: v1.0

Grupo de prácticas: G1

  • María del Mar Ávila Maqueda
  • Joaquín González Ganfornina
  • Nerea Jiménez Adorna
  • Juan del Junco Obregón
  • Miguel Ángel Gómez Vela
  • Juan Antonio Moreno Moguel
  • María del Carmen Barrera Garrancho
  • Daniel Guedes Preciados
  • Julia Virginia Ángeles Burgos
  • Javier Muñoz Romero
  • Juan Núñez Sánchez
  • Nicolás Pérez Gómez
  • Francisco Pérez Lázaro
  • Celia Aguilera Camino
  • Gabriel María Vacaro Goytía
  • Ignacio Warleta Murcia
  • José María Portela Huerta

Repositorio: GitHub - Holos-INC


Control de Versiones

FechaVersiónDescripción
19/02/2025v1.0Creación de documento

Índice de contenido

  1. Tecnología
  2. Avance tecnológico
  3. Continuous Integration
  4. Continuous Deploy

1. Tecnología

Holos se está desarrollando utilizando tecnologías que garantizan la escalabilidad, el rendimiento, la facilidad de mantenimiento y la seguridad.

Para el frontend se utilizará React, la biblioteca más popular para el desarrollo de interfaces dinámicas, usando npm como gestor de dependencias y para ejecutar scripts de compilación. Esto permite aislar los componentes de la aplicación para mejorar la mantenibilidad, además de soportar PWA e integrarse con OAuth2 para brindar una experiencia segura a los usuarios.

Para el backend se empleará Spring Boot 3.4.2 con Maven como gestor de dependencias y proyecto, utilizando Java 23. Se incluyen las siguientes dependencias de Spring Boot:

  • Lombok: Reduce el código repetitivo con anotaciones como @Getter y @Setter.
  • MySQL Driver: Permite la conexión con la base de datos MySQL.
  • OAuth2Client: Facilita la autenticación segura con OAuth2.
  • Spring Web: Proporciona capacidades para exponer APIs RESTful.
  • WebSocket: Permite la comunicación en tiempo real entre el frontend y el backend.
  • Spring REST Docs: Facilita la documentación automatizada de APIs.
  • Markdown Document Reader & PDF Document Reader: Permite gestionar documentos en formato Markdown y PDF dentro de la aplicación.

Estas características permiten disponer de una arquitectura escalable y flexible, con seguridad mejorada gracias a OAuth2, una conexión eficiente con bases de datos MySQL y comunicación en tiempo real mediante WebSockets.

Además, para la gestión de versiones del código, desarrollo y tareas del proyecto se utilizarán:

  • VS Code (u otro editor preferido)
  • Git y GitHub para el control de versiones.
  • GitHub Projects para la gestión ágil de tareas.
  • GitHub Actions para la integración y despliegue continuos, permitiendo ejecutar pruebas automáticas y gestionar el despliegue en la nube.

Dado que la aplicación se desplegará como una PWA descargable en tiendas móviles, se contempla el uso de:

  • Google Cloud para el hosting del backend.
  • Firebase Hosting o Render para el frontend.
  • Capacitor.js para empaquetar la PWA y publicarla en Google Play y App Store.

2. Avance tecnológico

Aunque Holos no incide en un mercado altamente competitivo, presenta características innovadoras que la distinguen:

  • Pagos anónimos: Los pagos se realizarán a una cuenta de PayPal, de la cual se redirigirá el importe al artista, descontando comisiones.
  • Trackeo de IA: Se habilitará un detector de inteligencia artificial para identificar arte generado mediante IA, advirtiendo a los compradores sin impedir la venta.
  • Métodos de pago flexibles: Los artistas podrán optar por diferentes esquemas de pago (100% al final, 50% al inicio y 50% al final, o métodos personalizados).

3. Continuous Integration

Integración Continua - Backend (Spring Boot)

Objetivo: Garantizar la calidad del código en el backend mediante análisis estático, pruebas y compilación del proyecto.

Pasos del proceso:

  • Clonación del repositorio desde GitHub.
  • Configuración del entorno con Java 23 y Maven.
  • Verificación de la calidad del código utilizando Checkstyle.
  • Compilación del proyecto con Maven.
  • Ejecución de pruebas unitarias e integración con JUnit y Mockito.
  • Generación del artefacto final (.jar) listo para despliegue.

Herramientas utilizadas: Docker, GitHub Actions.

Integración Continua - Frontend (React)

Objetivo: Validar la calidad del código y asegurar la estabilidad del frontend antes del despliegue.

Pasos del proceso:

  • Clonación del código fuente desde GitHub.
  • Instalación de dependencias con npm.
  • Análisis de la calidad del código con ESLint.
  • Ejecución de pruebas unitarias con Jest.
  • Generación del build optimizado para producción.

Herramientas utilizadas: Docker, GitHub Actions.


4. Continuous Deploy

Despliegue Continuo - Backend

Objetivo: Construir y desplegar automáticamente el backend en la nube para garantizar su disponibilidad y escalabilidad.

Pasos del proceso:

  • Construcción de la imagen Docker del backend.
  • Subida de la imagen a Google Cloud Run.
  • Despliegue automático del backend con actualización de la versión en producción.

Herramientas utilizadas: Docker, GitHub Actions, Google Cloud Run.

Despliegue Continuo - Frontend

Objetivo: Asegurar que el frontend se actualice automáticamente en producción después de cada cambio en la rama principal.

Pasos del proceso:

  • Construcción del frontend utilizando Docker.
  • Carga del build generado en Firebase Hosting.
  • Publicación de la nueva versión en producción.

Herramientas utilizadas: Docker, GitHub Actions, Firebase Hosting.

Publicación Automática en Tiendas Móviles

Objetivo: Automatizar la generación de versiones de la aplicación y su publicación en tiendas de aplicaciones móviles.

Pasos del proceso:

  • Generación del paquete de la aplicación (.apk para Android y .ipa para iOS) utilizando Capacitor.
  • Firma del paquete con claves de desarrollador certificadas.
  • Subida automática a Google Play Console y Apple App Store Connect utilizando GitHub Actions.
  • Revisión y lanzamiento de la actualización en producción.

Herramientas utilizadas: Docker, GitHub Actions, Capacitor.


Este documento en Markdown integra el contenido del archivo original "Tecnología.docx" utilizando la estructura y formato de la plantilla de ejemplo. Puedes copiar este texto en tu editor y ajustarlo según tus necesidades.