Este proyecto es un sistema de gestión de juegos, construido con NestJS para el backend, Angular (integrado con Material Design) para el frontend, y una base de datos PostgreSQL.
## Funcionalidades principales
- Autenticación segura: Autenticación obligatoria basada en JWT con opciones para actualizar el perfil del usuario (nombre de usuario, contraseña y foto de perfil).
- Gestión integral de géneros: Operaciones CRUD completas (Crear, Leer, Actualizar, Eliminar) para géneros.
- Gestión avanzada de juegos:
- Operaciones CRUD completas para juegos.
- Motor de Búsqueda y Paginación: Búsqueda eficiente por nombre y géneros.
- Filtros Persistentes: Utilización de Angular Signals para mantener los filtros de búsqueda activos (incluyendo la opción de favoritos) mientras el usuario navega por la aplicación, mejorando la coherencia y la usabilidad.
- Gráficos Interactivos: Visualización clara de la distribución de juegos, mostrando de forma gráfica cuántos juegos hay por cada género.
## Capturas de pantalla
A continuación, se muestran algunas imágenes del sistema en funcionamiento:
## Instalación del proyecto
### Backend (NestJS)
Sigue estos pasos para configurar el backend de NestJS:
1. Configuración del entorno:
- Renombra el archivo .env.example a .env.
- Configura los parámetros de conexión a tu base de datos PostgreSQL dentro del archivo .env.
2. Instalación de dependencias:
- Ejecuta el siguiente comando para instalar todas las dependencias del proyecto:
npm install --legacy-peer-deps
3. Configuración de JWT:
Dentro del archivo .env, añade o verifica las siguientes variables necesarias para la autenticación:
JWT_SECRET=supersecret
JWT_EXPIRES_IN=1d
4. Configuración de la base de datos:
- Ejecuta las migraciones para crear las tablas en tu base de datos :
npm run migration:run:dev
- Carga los datos iniciales en la base de datos :
npm run seed:dev
5. Ejecución del Servidor
Una vez instaladas las dependencias, inicia la aplicación en modo desarrollo ejecutando:
npm run start:dev
### Frontend (Angular)
1. Instalación de Dependencias
- Abre tu terminal en el directorio raíz del proyecto frontend.
- Ejecuta el siguiente comando para instalar todas las dependencias de Angular:
npm install
2. Ejecución del Servidor
Una vez instaladas las dependencias, inicia la aplicación en modo desarrollo ejecutando:
ng serve
## Pruebas unitarias
#### Backend (NestJS)
Para ejecutar las pruebas unitarias de NestJS (usando Jest), ejecuta el siguiente comando:
npm run test:e2e --verbose
#### Frontend (Angular)
Para ejecutar las pruebas unitarias de Angular (usando Karma y Jasmine):
Configuración de Headless Browser
Si ejecutas las pruebas en un entorno sin interfaz gráfica, es posible que necesites configurar la ruta del navegador.
Por ejemplo, para Chromium:
export CHROME_BIN=$(which chromium)
Ejecución
Ejecuta todas las pruebas de los componentes y servicios de Angular:
ng test
### Uso con Docker
Para poner en marcha los servicios de NestJS y Angular usando Docker, se deben seguir los siguientes pasos:
Configuración del entorno:
1. Renombra el archivo .env.example ubicado en la raíz del proyecto a .env.
2. Dentro del archivo .env que acabas de crear, establece la variable de entorno DOCKER_OP a 1. Esto es fundamental para que la aplicación se adapte a los servicios definidos en Docker Compose.
3. Iniciar servicios: Ejecuta el siguiente comando en tu terminal desde la raíz del proyecto para construir y levantar todos los servicios configurados:
docker compose up -d --build
Una vez que los servicios estén activos, se podran acceder desde las siguientes URLs:
Backend NestJS: http://localhost:7777
Frontend Angular: http://localhost:9991



