Skip to content

Kaistendev/Rank-Api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎮 Rank API

NodeJS Express Redis Jest

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=3000
REDIS_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:
{
  "error": "Nombre del Error",
  "message": "Descripción detallada",
  "timestamp": "2026-02-09T..."
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors