Backend oficial para la plataforma de gestión de torneos MochilaCup. Una API RESTful robusta y escalable construida para manejar toda la lógica del torneo, desde la autenticación de administradores hasta la progresión automática de los brackets de playoffs.
- 🔐 Autenticación Segura: Sistema de login basado en roles (
admin,managerymoderator) con JSON Web Tokens (JWT). - 👥 Gestión de Equipos: Operaciones CRUD completas para equipos, incluyendo la subida de logos.
- ⚔️ Gestión de Partidas: Creación, actualización de resultados y seguimiento de partidas de fase de grupos y playoffs.
- 🚀 Brackets Automáticos: Lógica inteligente para generar y avanzar las llaves de playoffs (Upper/Lower) basándose en los resultados de las partidas.
- 📢 Módulo de Anuncios: API para publicar noticias e interactuar con comentarios y reacciones.
- 🎤 Gestión de Staff: Endpoints dedicados para administrar casters y aplicar sanciones a equipos.
- 📝 Auditoría de Acciones: Sistema de logs para registrar todas las acciones críticas realizadas por los administradores.
| Componente | Tecnología |
|---|---|
| Runtime | Node.js |
| Framework | Express.js |
| Base de Datos | MongoDB con Mongoose |
| Autenticación | JSON Web Token (JWT) & Bcrypt.js |
| Archivos | Multer |
| Variables | Dotenv |
Sigue estos pasos para configurar y ejecutar el proyecto en tu entorno de desarrollo local.
- Node.js (v16 o superior)
- npm
- Una base de datos en MongoDB Atlas o una instancia local.
-
Clona el repositorio:
git clone https://github.com/choco-latito29/Back-mochila.git cd Back-mochila -
Instala las dependencias del proyecto:
npm install
-
Configura las variables de entorno: Crea un archivo
.enven la raíz del proyecto. Puedes usar el archivo.envcomo plantilla.cp .env
Ahora, abre el archivo
.envy añade tus credenciales:# URL de conexión a tu base de datos MongoDB MONGODB = "mongodb+srv://<user>:<password>@cluster.../database_name" # Puerto en el que correrá el servidor (ej. 8080) PORT = 8080 # Clave secreta para firmar los tokens JWT. ¡Hazla larga y segura! JWT_SECRET = "ESTA_ES_UNA_CLAVE_SECRETA_MUY_LARGA_Y_DIFICIL_DE_ADIVINAR_123!"
-
Inicia el servidor:
node server.js
¡Listo! La API estará escuchando en
http://localhost:PORT(el puerto que definiste en.env).
| Método | Ruta | Descripción | Acceso |
|---|---|---|---|
POST |
/api/auth/login |
Inicia sesión y obtiene un token JWT. | Público |
GET |
/api/users |
Obtiene la lista de todos los usuarios. | Admin |
POST |
/api/users |
Crea un nuevo usuario. | Admin |
GET |
/api/teams |
Obtiene todos los equipos. | Público |
POST |
/api/teams |
Crea un nuevo equipo. | Manager/Admin |
GET |
/api/matches |
Obtiene todas las partidas. | Público |
PUT |
/api/matches/:id/score |
Registra el resultado de una partida. | Manager/Admin |
POST |
/api/matches/generate-playoffs |
Genera automáticamente el bracket de playoffs. | Admin |
GET |
/api/news |
Obtiene todos los anuncios. | Público |
GET |
/api/casters |
Obtiene todos los casters. | Público |
Las contribuciones son el corazón de la comunidad de código abierto. Cualquier aporte que hagas será muy bienvenido.
- Haz un Fork del proyecto.
- Crea tu propia rama (
git checkout -b feature/AmazingFeature). - Haz commit de tus cambios (
git commit -m 'Add some AmazingFeature'). - Haz push a la rama (
git push origin feature/AmazingFeature). - Abre un Pull Request.
Distribuido bajo la Licencia MIT. Ver LICENSE.txt para más información.