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.