Skip to content

Arquisoft/yovi_es5b

Repository files navigation

Yovi_es5b - Game Y at UniOvi

Release — Test, Build, Publish, Deploy Quality Gate Status Coverage

Deployment in Azure

OpenAPI docs

Documentation

Decision log

Colaboradores

Name UO Github username
Alejandro Aloso Bayón UO300216 alonsobayonalejandro-ctrl
Antonio Postigo de Diego UO265373 tonipdd
Guillermo Gil Naves UO300475 UO300475
Ignacio Torre Suárez UO245469 NachoTS
Pedro Díaz González UO294790 Gedepe

Estructura del proyecto

El proyecto se divide en cuatro subdirectorios principales:

  • webapp/: Frontend de la aplicación hecho en React + TypeScript con Vite.
  • users/: Backend de gestión de usuarios hecho en Express.js
  • gamey/: Backend del juego hecho en Rust.
  • database/: archivos necesarios para lanzar el contenedor de la base de datos MySQL.
  • docs/: Documentación arquitectónica usando la plantilla arc42.

Componentes

Webapp

webapp es una single-page application (SPA) creada con Vite y React.

  • src/App.tsx: Componente principal de la aplicación.
  • src/__tests__/: Directorio que contiene los archivos de pruebas unitarias de webapp.
  • package.json: Contiene los scripts necesarios para ejecutar, compilar y probar webapp.
  • vite.config.ts: Archivo de configuración para Vite.
  • Dockerfile: Archivo que define la imagen de Docker para webapp.
  • test/e2e/features/: Archivos cucumber para la descripción de casos de pruebas de aceptación (e2e).
  • test/e2e/steps/: Archivos JavaScript para la ejecución de pruebas de aceptación con Playwright.
  • test/e2e/support/: Archivos de configuración del entorno de pruebas de aceptación.

Users

users es una API implementada usando Node.js and Express.

  • users-service.js: Archivo principal de users desde donde se lanzará el módulo.
  • package.json: Contiene los scripts necesarios para iniciar y probar el servicio.
  • Dockerfile: Archivo que define la imagen de Docker para users.
  • __tests__/: Directorio que contiene los archivos de pruebas unitarias de users.
  • config/: Directorio que contiene los archivos de configuración de Express y Sequelize.
  • models/: Directorio que contiene los archivos de definición de modelos para el ORM Sequelize.
  • openapi.yaml: Archivo que contiene la especificación de la API del proyecto en el estándar OpenAPI.

Gamey

gamey es el módulo del juego con soporte para bots hecho con Rust y Cargo.

  • src/main.rs: Punto de entrada principal de la aplicación.
  • src/lib.rs: Biblioteca del motor de juego.
  • src/bot/: Registro e implementación de bots.
  • src/core/: Lógica base del juego, incluyendo acciones, coordenadas, estado y gestión de jugadores.
  • src/notation/: Notación del juego (YEN, YGN).
  • tests/: Notación del juego (YEN, YGN).
  • Cargo.toml: Dependencias y metadatos del módulo.
  • Dockerfile: Archivo que define la imagen de Docker para gamey.

database

database es el submódulo que contiene la información necesaria para arrancar la base de datos MySQL de users.

  • Dockerfile: Archivo que define la imagen de MySQL para gamey.

Ejecutar el proyecto

Se puede ejecutar el proyecto en local usando Docker o sin Docker.

Sin Docker

  1. Base de datos: sobre el directorio base: lanzar el contenedor de la base de datos con docker-compose -f docker-compose.yml up -d database
  2. Módulo gamey: sobre el directorio gamey: ejecutar cargo run -- --mode server --port 4000
  3. Módulo users: sobre el directorio users: ejecutar npm run start
  4. Módulo webapp: sobre el directorio webapp: ejecutar npm run dev

Finalmente, entrar en http://localhost:5173/.

NOTA: recordar ejecutar npm install en users y webapp por si hay alguna dependencia nueva pendiente de instalar.

Con Docker

Primero, se debe haber instalado Docker y Docker Compose en la máquina.

  1. Construir y arrancar los contenedores: Desde el directorio raíz del proyecto, ejecutar:
docker-compose up --build

Esta orden construirá las imágenes para webapp, gamey, users y database y arrancará los respectivos contenedores.

2.Acceder a la aplicación:

Scripts disponibles

Cada módulo posee su conjunto de scripts. A continuación se listan los scripts de cada módulo:

Webapp (webapp/package.json)

  • npm run dev: Starts the development server for the webapp.
  • npm test: Runs the unit tests.
  • npm run test:e2e: Runs the end-to-end tests.

Users (users/package.json)

  • npm start: Starts the user service.
  • npm test: Runs the tests for the service.

Gamey (gamey/Cargo.toml)

  • cargo build: Builds the gamey application.
  • cargo test: Runs the unit tests.
  • cargo run: Runs the gamey application.
  • cargo doc: Generates documentation for the GameY engine application