Video Game Management System
Sistema full stack para administrar el ecosistema operativo de una empresa de videojuegos: catálogo, clientes, ventas, empleados, distribución y analítica, construido como restauración moderna de un proyecto académico de bases de datos.
PLAY · STORE · MANAGE · GROW
GameCore es una aplicación de gestión orientada a una empresa que desarrolla, administra o distribuye videojuegos.
Su objetivo es centralizar información del negocio y convertirla en operaciones reales dentro de una misma plataforma:
- 🎮 administración del catálogo de videojuegos;
- 🧩 géneros, plataformas y clasificaciones;
- 👥 gestión de clientes;
- 🧾 registro de ventas y detalle de productos;
- 👨💼 administración de empleados, cargos y sucursales;
- 🌎 distribución de videojuegos por país;
- 📊 dashboard con indicadores y rendimiento comercial;
- 🗄️ consultas y reporting respaldados directamente por SQL Server.
GameCore no pretende ser un POS de tienda tradicional. Aunque registra ventas, su foco está en administrar el ecosistema de la empresa y sus datos, no en funciones de caja como turnos de cajero, arqueos o inventario físico detallado.
| Módulo | Función |
|---|---|
| 📊 Dashboard | KPIs de videojuegos, clientes, ventas, empleados, ingresos y títulos más vendidos |
| 🎮 Videojuegos | Alta, edición, desactivación y consulta del catálogo |
| 🧩 Catálogos | Géneros, plataformas y clasificaciones por edad |
| 👥 Clientes | Registro y actualización de clientes |
| 🧾 Ventas | Ventas transaccionales con múltiples videojuegos por operación |
| 👨💼 Empleados | Personal, sucursales, cargos y estado |
| 🌎 Distribución | Distribución de títulos por países y cantidades |
| 📈 Reportes | Ventas mensuales, rendimiento por juego, valor por cliente y distribución geográfica |
| 🔐 Autenticación | Acceso protegido mediante JWT |
| 🧪 SQL avanzado | Views, stored procedures, funciones, transacciones y reporting |
┌─────────────────────────────┐
│ React + TypeScript + Vite │
│ Frontend Web │
└──────────────┬──────────────┘
│ HTTP / JSON
▼
┌─────────────────────────────┐
│ ASP.NET Core Web API │
│ JWT · Endpoints REST │
└──────────────┬──────────────┘
│
▼
┌─────────────────────────────┐
│ Domain │
│ Application │
│ Infrastructure │
└──────────────┬──────────────┘
│ Entity Framework Core
▼
┌─────────────────────────────┐
│ GameCoreDB · SQL Server │
│ Tables · Views · SP · UDF │
└─────────────────────────────┘
La restauración mantiene un enfoque database-first: los scripts de database/ siguen siendo la fuente principal del esquema y Entity Framework Core mapea la base existente.
- React 19
- TypeScript
- Vite
- interfaz responsive
- cliente HTTP autenticado mediante Bearer Token
- identidad visual GameCore integrada
- .NET 10
- ASP.NET Core Web API
- C#
- Entity Framework Core
- JWT Bearer Authentication
- separación por capas:
GameCore.DomainGameCore.ApplicationGameCore.InfrastructureGameCore.WebAPI
- Microsoft SQL Server
- claves primarias y foráneas
- restricciones
CHECKyUNIQUE - índices
- views
- stored procedures
- funciones escalares
- transacciones
OPENJSON- reporting SQL
- Docker
- Docker Compose
- GitHub Actions
- chequeo de vulnerabilidades NuGet
npm audit- smoke test en PowerShell
El modelo moderno amplía el diseño académico original y separa correctamente las responsabilidades principales:
Companies
└── Branches
└── Employees
└── JobPositions
Games
├── AgeRatings
├── GameGenres ── Genres
├── GamePlatforms ── Platforms
└── Distributions ── Countries
Customers
└── Sales
└── SaleDetails
└── Games
AppUsers
└── JWT Authentication
Una de las mejoras fundamentales respecto al modelo original fue reemplazar:
Cliente → Videojuego
por:
Cliente → Venta → Detalle de Venta → Videojuego
Esto permite que un cliente tenga múltiples compras y que una venta contenga múltiples videojuegos.
La API expone recursos protegidos bajo /api.
POST /api/auth/login
GET /api/games
POST /api/games
PUT /api/games/{id}
DELETE /api/games/{id}
GET /api/customers
POST /api/customers
PUT /api/customers/{id}
GET /api/sales
POST /api/sales
GET /api/employees
POST /api/employees
GET /api/distributions
POST /api/distributions
GET /api/catalogs
GET /api/dashboard
GET /api/reports
La creación de ventas se ejecuta de forma transaccional para evitar operaciones parciales.
GameCore/
├── database/
│ ├── advanced/
│ │ ├── functions.sql
│ │ ├── procedures.sql
│ │ ├── reports.sql
│ │ ├── validate.sql
│ │ └── views.sql
│ ├── schema.sql
│ ├── seed.sql
│ ├── security.sql
│ ├── setup.sql
│ ├── reset.sql
│ └── validate.sql
│
├── src/
│ ├── backend/
│ │ ├── GameCore.Domain/
│ │ ├── GameCore.Application/
│ │ ├── GameCore.Infrastructure/
│ │ ├── GameCore.WebAPI/
│ │ └── GameCore.sln
│ │
│ └── frontend/
│ ├── public/brand/
│ └── src/
│
├── docs/
│ ├── original/
│ ├── database/
│ └── RELEASE.md
│
├── scripts/
│ └── smoke-test.ps1
│
├── Dockerfile.backend
├── Dockerfile.frontend
├── docker-compose.yml
└── README.md
La identidad de GameCore combina los dos conceptos centrales del proyecto:
- 🎮 mando de videojuegos → industria y catálogo;
- 🗄️ base de datos → origen académico y núcleo de información.
Los assets utilizados por la aplicación están incluidos en:
src/frontend/public/brand/
├── gamecore-logo.png
└── gamecore-icon.svg
El isotipo también funciona como favicon de la aplicación.
GameCore nació como proyecto final de Introducción a las Bases de Datos (SOF-006) en el Instituto Tecnológico de Las Américas (ITLA).
| Información | Detalle |
|---|---|
| 🏫 Institución | Instituto Tecnológico de Las Américas (ITLA) |
| 📖 Asignatura | Introducción a las Bases de Datos (SOF-006) |
| 👨🏫 Profesor | Freidy Ramón Núñez Pérez |
| 📅 Período académico | 2016-C2 |
| 👨🏻💻 Estudiante | Francis Jairo Matías Rosario — 2015-2984 |
| 📁 Entrega original | Proyecto Final |
| 🛠️ Restauración | 2026 |
La versión original se concentraba en:
- creación de tablas;
- claves primarias y foráneas;
INSERT;- filtros;
JOIN;- consultas básicas en SQL Server.
El archivo histórico se conserva en:
docs/original/TAREA-FINAL.sql
Ese código no fue reescrito para ocultar sus limitaciones. Se conserva como evidencia del proyecto inicial y la versión moderna vive de forma separada para mostrar claramente la evolución técnica.
GameCore y PySL documentan dos proyectos académicos distintos cursados con el profesor Freidy Ramón Núñez Pérez durante el mismo período 2016-C2.
| Orden | Asignatura | Proyecto | Período |
|---|---|---|---|
| 1 | Fundamentos de Programación (SOF-001) | PySL | 2016-C2 |
| 2 | Introducción a las Bases de Datos (SOF-006) | GameCore | 2016-C2 |
La relación es académica, docente y formativa. Ambos proyectos corresponden a asignaturas diferentes cursadas en paralelo durante el mismo cuatrimestre y no existe dependencia técnica entre ellos.
Proyecto académico SOF-006
↓
Modelo relacional + SQL Server
↓
Rediseño de base de datos
↓
SQL Server Core
↓
Advanced SQL
↓
.NET 10 + EF Core
↓
REST API + JWT
↓
React + TypeScript
↓
GameCore
| # | Fase | Estado |
|---|---|---|
| 0 | Legacy Preservation | ✅ |
| 1 | Database Redesign | ✅ |
| 2 | SQL Server Core | ✅ |
| 3 | Advanced SQL | ✅ |
| 4 | .NET Foundation | ✅ |
| 5 | REST API | ✅ |
| 6 | React Foundation | ✅ |
| 7 | Game Management | ✅ |
| 8 | Customers & Sales | ✅ |
| 9 | Employees & Distribution | ✅ |
| 10 | Dashboard & Reports | ✅ |
| 11 | Security & Validation | ✅ |
| 12 | Portfolio Hardening | ✅ |
| 13 | Release 1.0 implementation | ✅ |
Desde la raíz del repositorio:
sqlcmd -S localhost -E -f 65001 -i database/setup.sqlEl script instala:
- esquema;
- seed de demostración;
- seguridad;
- views;
- funciones;
- stored procedures;
- validaciones.
dotnet restore src/backend/GameCore.sln
dotnet build src/backend/GameCore.sln -c Release
dotnet run --project src/backend/GameCore.WebAPI/GameCore.WebAPI.csprojAPI local predeterminada:
http://localhost:5152
cd src/frontend
npm install
npm run devFrontend local:
http://localhost:5173
Email: admin@gamecore.local
Password: GameCore123!
Las credenciales demo y la clave JWT incluida en configuración son exclusivamente para desarrollo local. Deben cambiarse antes de cualquier despliegue real.
El repositorio incluye configuración para backend, frontend y SQL Server:
docker compose up --buildAntes de etiquetar la versión final se deben ejecutar:
dotnet build src/backend/GameCore.sln -c Release
dotnet list src/backend/GameCore.sln package --vulnerable --include-transitivey en el frontend:
cd src/frontend
npm install
npm run build
npm audit --audit-level=highTambién se incluye:
scripts/smoke-test.ps1
La lista completa está documentada en docs/RELEASE.md.
Los datos personales presentes en el artefacto académico original se conservan únicamente como parte del contexto histórico del proyecto.
La aplicación moderna utiliza datos de demostración anonimizados y no reutiliza identificadores personales reales como seed operativo.
Implementación funcional completada.
La etiqueta definitiva v1.0.0 se reserva hasta terminar la validación runtime local completa de:
- SQL Server;
- backend .NET;
- frontend React;
- autenticación;
- módulos funcionales;
- smoke test;
- auditorías de dependencias.