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

Documentation

Decision log

Contributors

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

Project Structure

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.
  • 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.

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.

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).
  • 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. Si da problemas con Docker, probar a ejecutarlo de la otra forma.

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.

NOTA: como arreglo temporal para que arranque la base de datos en local, cambiar en users/config/db.js, línea 7, el valor de la IP por 127.0.0.1. No subir este cambio a master.

With Docker

This is the easiest way to get the project running. You need to have Docker and Docker Compose installed.

  1. Build and run the containers: From the root directory of the project, run:
docker-compose up --build

This command will build the Docker images for both the webapp and users services and start them.

2.Access the application:

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.
  • npm run start:all: A convenience script to start both the webapp and the users service concurrently.

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