Skip to content

yimgame/Gaming-Platform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Multi Gaming Community

Portal multijuegos con frontend React, backend Node/Express y panel admin para gestionar catálogo de juegos.

Estado actual: Quake 3 (CPMA) funciona con stats, ranking, partidas recientes, capturas/demos correlacionadas y asociación manual protegida por token.

Plataforma multi juego, con panel de admin activado por token, permite agregar juegos, cons sus datos y media, posee recolectar capturas y estados online, ranking basado en los estats que genera el mod el propio juego, con los resultados de partidas en curso e historico, la captura y la demo de forma automatica o manual (quake 3 cpma full funcional)

Multi-game platform, with token-activated admin panel, allows adding games, their data and media, has capture and online status collection, ranking based on the stats generated by the mod and the game itself, with results of current and historical matches, capture and demo automatically or manually (quake 3 cpma fully functional)

✨ Autor

Desarrollado con amor por GitHub Copilot (Claude Sonnet 4.5 / Chat-GPT 5.3)

🤖 AI-Powered Development for the Quake 3 Community

Just coding 4 fun !!!

🖼️ Galeria

Servidor Online Ranking Partidas Recientes Galeria
Servidor online Ranking Partidas recientes Galeria

Características clave

  • Catálogo dinámico de juegos (alta, edición y baja desde /admin)
  • Página por juego con imagen de tarjeta, fondo, descripción y estado
  • Estado en tiempo real para Quake 3 cpma full funcional (/api/server/status)
  • Stats CPMA desde XML (ranking global, partidas históricas, top jugadores)
  • Correlación automática de capturas y demos por tipo/mapa/fecha
  • Asociación manual de assets por partida (solo admin con token por url/admin)
  • Deploy con Docker + Nginx + Certbot (HTTPS)

Stack

  • Frontend: React 18, TypeScript, Tailwind, shadcn/ui, TanStack Query, Wouter
  • Backend: Node.js, Express, Drizzle ORM, PostgreSQL
  • Infra: Vite, Docker Compose, Nginx, Let's Encrypt

Configuración (.env)

Usa .env.example como base.

NODE_ENV=production
PORT=5001
DOMAIN=tu-dominio-o-ip
DATABASE_URL=postgres://postgres:postgres@db:5432/app_db
CERTBOT_EMAIL=tu-email@gmail.com

# Seguridad admin
ADMIN_TOKEN=pon-un-token-largo-y-seguro

# Rutas base (multijuego)
# QUAKE1_BASE_PATH=G:\Games\Quake\id1
# QUAKE2_BASE_PATH=G:\Games\Quake2\baseq2
# QUAKE3_BASE_PATH=G:\Games\Quake3\baseq3
# QUAKE3_MOD_PATH=G:\Games\Quake3\cpma
# COUNTER16_BASE_PATH=G:\Games\Counter-Strike 1.6\cstrike
# CS2_BASE_PATH=G:\Games\cs2\cs2
# MINECRAFT_BASE_PATH=G:\Games\Minecraft

# Compatibilidad (si ya usas ruta única)
QUAKE_BASE_PATH=G:\Games\Quake3\cpma

# Overrides explícitos (opcionales)
# STATS_PATH=G:\Games\Quake3\cpma\stats
# SCREENSHOTS_PATH=G:\Games\Quake3\cpma\screenshots
# DEMOS_PATH=G:\Games\Quake3\cpma\demos

Ejecución

Desarrollo local (Windows)

Opción rápida (recomendada):

setup.bat

setup.bat hace todo: pide DATABASE_URL (con default local localhost:5433), crea .env si falta, pide ADMIN_TOKEN (opcional), instala dependencias y crea/actualiza tablas.

npm install
init-db.bat
start-dev.bat

También puedes usar:

npm run dev

Si usas npm run dev, define DATABASE_URL antes de arrancar.

Primer arranque recomendado:

  • init-db.bat: crea/actualiza tablas en PostgreSQL usando DATABASE_URL
  • Por defecto usa postgres://postgres:postgres@localhost:5433/app_db

Producción (Docker)

docker-compose up -d --build

Requisitos mínimos para HTTPS público:

  • Dominio apuntando a tu IP pública
  • Puertos 80 y 443 abiertos/forwarded al host

Admin y Token

  • Panel: /admin
  • El token se activa/desactiva en el panel y se guarda en localStorage como adminToken
  • Header requerido en endpoints protegidos: x-admin-token
  • Si no es válido: 403

Endpoints protegidos

  • GET /api/admin/status
  • GET /api/admin/config
  • GET /api/admin/games
  • POST /api/admin/games
  • PUT /api/admin/games/:id
  • DELETE /api/admin/games/:id
  • POST /api/match-assets

Levelshots (admin)

  • Nueva pestaña Levelshots en /admin para gestionar imágenes por mapa.
  • Flujo rápido: mapa + URL y Guardar levelshot.
  • Carga local de imagen con explorador (Buscar imagen) y subida al backend.
  • Preview antes de guardar (archivo local o URL manual).
  • Sugerencias automáticas de mapas recientes sin override.
  • Sugerencia de mapa actual (si está online y no tiene override).
  • Atajos: Mapa actual, Usar URL Lvlworld, Usar URL EFSERVERS, Usar URL Q3DF, Limpiar.
  • Guardado rápido con tecla Enter en campo URL.

Fuentes de levelshots utilizadas:

  • https://lvlworld.com/levels/<mapa>/<mapa>lg.jpg
  • https://efservers.com/levelshots/<mapa>.jpg
  • https://ws.q3df.org/images/levelshots/512x384/<mapa>.jpg (recurso alternativo, puede bloquear hotlink/preview)

Endpoints admin levelshots:

  • GET /api/admin/levelshots
  • POST /api/admin/levelshots
  • DELETE /api/admin/levelshots/:mapName
  • POST /api/admin/levelshots/upload

Endpoints públicos levelshots:

  • GET /api/levelshots/:mapName
  • GET /api/levelshots-files/:filename

Stats y assets (Quake 3)

  • Stats se sincronizan de XML CPMA a PostgreSQL (sync inicial + auto-sync en runtime)
  • PostgreSQL guarda partidas completas, jugadores, equipos, armas, items y powerups
  • Demos/capturas manuales pueden subirse al servidor y quedan asociadas en PostgreSQL
  • Correlación automática por ventana temporal ±4 min
  • Script de backfill:
npm run assets:auto-associate

Script de sincronización completa de stats:

npm run stats:sync

Endpoints principales:

  • GET /api/stats/matches
  • POST /api/stats/ranking/global
  • GET /api/stats/server
  • GET /api/screenshots/match
  • GET /api/demos/match

Troubleshooting rápido

  • 5001 ocupado: libera el puerto antes de iniciar
  • DATABASE_URL must be set: define DATABASE_URL o usa start-dev.bat
  • No aparecen juegos en home: backend viejo; reinicia servidor actualizado
  • Stats vacíos: revisa rutas CPMA (cpma, no cmpa) y STATS_PATH
  • Certbot falla validación: verifica DNS + puertos 80/443
  • Falla DB revisar puerto defaul 5432 para postgres

📁 Estructura del Proyecto

yim.servegame.com/
├── client/                 # React Frontend
├── server/                 # Node.js Backend
├── shared/                 # Tipos y schemas
├── docker-compose.yml
├── nginx.conf
└── README.md
image image image image image image image image image

✨ Autor

Desarrollado con amor por GitHub Copilot (Claude Sonnet 4.5 / Chat-GPT 5.3)

🤖 AI-Powered Development for the Quake 3 Community

Just coding 4 fun !!!

About

A multi Gaming Platform, with online status, ranking, recent match and screenshots

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors