You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
API robusta y escalable para la gestión de clasificaciones y resultados de partidas en tiempo real. Diseñada bajo una arquitectura de microservicios eficiente, utilizando Redis para garantizar latencia sub-milisegundo en rankings globales.
✨ Características Principales
👤 Gestión de Jugadores: CRUD completo con soporte para paginación y filtrado por región.
🏆 Leaderboard Global: Tabla de posiciones dinámica mediante Redis Sorted Sets.
⏱️ Procesamiento de Partidas: Sistema de actualización de scores y caché de resultados con TTL.
🛡️ Seguridad y Robustez: * Validación de esquemas con Zod.
Limitación de tasa (Rate Limiting) para prevención de abusos.
Manejo centralizado de excepciones.
🧪 Calidad de Código: Pruebas unitarias y de integración (E2E) con Jest y Supertest.
🛠️ Tecnologías
Capa
Herramientas
Backend
Node.js, Express.js
Base de Datos
Redis (In-memory Storage)
Validación
Zod
Testing
Jest, Supertest
Utilidades
dotenv, nodemon, express-rate-limit
🚀 Instalación y Uso
1. Clonar el repositorio
git clone <url-del-repo>cd rank-api
npm install
2. Configuración del entorno
Crea un archivo .env en la raíz del proyecto:
PORT=3000REDIS_URL=redis://localhost:6379
3. Scripts disponibles
Comando
Descripción
npm run dev
Inicia el servidor en modo desarrollo (Hot-reload)
npm start
Inicia el servidor en modo producción
npm test
Ejecuta la suite de pruebas completa
🛣️ API Endpoints (/api/v1)
👥 Jugadores
Método
Endpoint
Descripción
POST
/players
Registra un nuevo jugador
GET
/players
Lista jugadores (Query: page, limit, region)
GET
/players/:id
Obtiene el perfil detallado del jugador
PUT
/players/:id
Actualiza el nivel del jugador
DELETE
/players/:id
Elimina el registro del jugador
⚔️ Partidas
Método
Endpoint
Descripción
POST
/matches
Procesa resultado y actualiza ranking
GET
/matches/:id
Recupera detalles de la caché (Sujeto a TTL)
⚠️ Seguridad y Límites
Rate Limit: Se permite un máximo de 100 solicitudes cada 15 minutos por IP.
Estandarización de Errores: Todas las respuestas de error siguen el formato: