Skip to content

ToniCoding/game-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GameSaver API

Backend para almacenar y gestionar partidas de videojuegos, permitiendo a los usuarios registrar sus juegos y llevar un seguimiento detallado de cada partida (rondas jugadas, tiempo invertido, puntuaciones, etc.).

Indice

  • Tecnologias utilizadas
  • Estructura de la base de datos
  • Autenticacion
  • Endpoints
    • Auth
    • Usuarios
    • Juegos
  • Flujo tipico de uso
  • Instalacion y ejecucion
  • Variables de entorno

Tecnologias utilizadas

  • Java 21
  • Spring Boot 3.3.5
  • Spring Security + JWT
  • Spring Data MongoDB
  • MongoDB
  • Lombok
  • Maven

Estructura de la base de datos

Coleccion users

Almacena los datos de los usuarios registrados.

Campo Tipo Descripcion
id String ID autogenerado por MongoDB
nombre String Nombre del usuario
apellidos String Apellidos del usuario
email String Email (unico, usado para login)
username String Nombre de usuario (unico)
password String Contrasena encriptada
rol String Rol del usuario (ej. ROLE_USER)
fechaNacimiento LocalDate Fecha de nacimiento
fechaRegistro LocalDateTime Fecha y hora de registro

Coleccion games

Almacena los juegos de cada usuario, con sus rondas anidadas.

Campo Tipo Descripcion
id String ID autogenerado por MongoDB
userId String ID del usuario propietario
titulo String Titulo del juego
plataforma String Plataforma (PC, Switch, PS5, etc.)
estado String Estado: Pendiente, En curso, Completado, Abandonado
totalTiempoJugado Integer Suma total de tiempo de todas las rondas (minutos)
rondaActual Integer Numero de la ultima ronda jugada
rondas ListRoundStats Lista anidada de rondas
fechaCreacion LocalDateTime Fecha de creacion del registro
fechaActualizacion LocalDateTime Fecha de ultima modificacion

Documento anidado RoundStats

Campo Tipo Descripcion
numeroRonda Integer Numero de ronda (1, 2, 3...)
tiempoJugado Integer Tiempo invertido en esta ronda (minutos)
puntuacion Integer Puntuacion obtenida
nivel String Dificultad o nivel jugado
completada Boolean Indica si completo la ronda
fechaCompletada LocalDateTime Fecha en que completo la ronda

Autenticacion

La API utiliza JWT (JSON Web Token) para autenticacion.

Flujo de autenticacion:

  1. El usuario se registra (POST /api/auth/register)
  2. El usuario inicia sesion (POST /api/auth/login) y recibe un token JWT
  3. El token debe incluirse en el header Authorization: Bearer {token} para todas las peticiones a endpoints protegidos
  4. El token expira automaticamente despues de 24 horas

Endpoints

Auth

Metodo Endpoint Descripcion Autenticacion
POST /api/auth/register Registrar nuevo usuario No
POST /api/auth/login Iniciar sesion (devuelve JWT) No

Usuarios

Metodo Endpoint Descripcion Autenticacion
GET /api/users/profile Obtener perfil del usuario autenticado Si
PATCH /api/users/profile Actualizar perfil (nombre, apellidos, email, fecha nacimiento) Si

Juegos

Metodo Endpoint Descripcion Autenticacion
POST /api/games Crear un nuevo juego Si
GET /api/games Listar todos los juegos del usuario autenticado Si
GET /api/games/{gameId} Obtener detalle de un juego especifico (con sus rondas) Si
POST /api/games/{gameId}/rounds Anadir una nueva ronda a un juego Si
DELETE /api/games/{gameId} Eliminar un juego Si

Flujo tipico de uso

A continuacion se describe el flujo completo que debe seguir un usuario para utilizar la API:

Paso 1: Registro POST /api/auth/register

Paso 2: Inicio de sesion POST /api/auth/login → Obtiene el token JWT

Paso 3: Ver perfil GET /api/users/profile → (requiere token)

Paso 4: Crear un juego POST /api/games → (requiere token)

Paso 5: Listar juegos GET /api/games → (requiere token)

Paso 6: Anadir primera ronda POST /api/games/{gameId}/rounds → (requiere token)

Paso 7: Anadir segunda ronda POST /api/games/{gameId}/rounds → (requiere token)

Paso 8: Ver detalle del juego (con todas sus rondas) GET /api/games/{gameId} → (requiere token)

Paso 9: Actualizar perfil PATCH /api/users/profile → (requiere token)

Paso 10: Eliminar juego DELETE /api/games/{gameId} → (requiere token)

Instalacion y ejecucion

Requisitos previos

  • Java 21 o superior
  • MongoDB instalado y corriendo en localhost:27017
  • Maven

Pasos

  1. Clonar el repositorio git clone https://github.com/ToniCoding/game-server.git cd game-server

  2. Configurar la base de datos en application.properties spring.data.mongodb.uri=mongodb://localhost:27017/gameserver

  3. Compilar y ejecutar mvn clean install mvn spring-boot:run

  4. La API estara disponible en http://localhost:8080

Codigos de respuesta

Codigo Significado
200 OK Peticion exitosa
201 Created Recurso creado exitosamente
204 No Content Eliminacion exitosa
400 Bad Request Datos invalidos o faltantes
401 Unauthorized Token no proporcionado o invalido
403 Forbidden No tiene permisos para el recurso
404 Not Found Recurso no encontrado

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages