| 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 |
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.jsgamey/: 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.
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 es una API implementada usando Node.js and Express.
users-service.js: Archivo principal deusersdesde 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 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 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.
Se puede ejecutar el proyecto en local usando Docker o sin Docker.
- 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 - Módulo gamey: sobre el directorio
gamey: ejecutarcargo run -- --mode server --port 4000 - Módulo users: sobre el directorio
users: ejecutarnpm run start - Módulo webapp: sobre el directorio
webapp: ejecutarnpm 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.
Primero, se debe haber instalado Docker y Docker Compose en la máquina.
- Construir y arrancar los contenedores: Desde el directorio raíz del proyecto, ejecutar:
docker-compose up --buildEsta orden construirá las imágenes para webapp, gamey, users y database y arrancará los respectivos contenedores.
2.Acceder a la aplicación:
- Aplicación web: http://localhost
- API users: http://localhost:3000
- API gamey: http://localhost:4000
- Documentación OpenAPI: http://localhost:3000/api-docs
Cada módulo posee su conjunto de scripts. A continuación se listan los scripts de cada módulo:
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 start: Starts the user service.npm test: Runs the tests for the service.
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