Plataforma fullstack moderna para comunidades gaming que permite a los usuarios crear y gestionar comunidades, organizar eventos y formar equipos. Desarrollada con Angular 18+ (frontend) y Node.js + Express (backend), implementando arquitectura MVC y características ES6.
- Autenticación con Discord
- Gestión de perfiles de usuario
- Creación y gestión de comunidades gaming
- Organización de eventos
- Formación de equipos
- Sistema de búsqueda avanzado
- Carga de imágenes y avatares
- Diseño responsive
- Frontend: Angular 18+, Bootstrap 5.3, Firebase
- Backend: Node.js, Express, MongoDB
- Autenticación: Passport, JWT, Discord OAuth
- Almacenamiento: Cloudinary
- Extras: TypeScript, SASS, RxJS
- Node.js (v14 o superior)
- MongoDB
- Cuenta de Discord Developer
- Cuenta en Cloudinary
- Angular CLI (v18.2.8 o superior)
- Proyecto Firebase configurado
- Clonar e instalar:
git clone https://github.com/footalentgroup/Team-5
cd backend
npm install- Configurar .env:
Para ejecutar el proyecto, crea un archivo `.env` con las siguientes variables:
### Configuraciones Principales
- `PORT`: Puerto de ejecución del servidor (ej. 3000)
- `NODE_ENV`: Entorno de desarrollo (development, production)
### Servicios Externos
#### Discord OAuth
- `DISCORD_CLIENT_ID`: ID de cliente de Discord OAuth
- `DISCORD_CLIENT_SECRET`: Secret de cliente de Discord OAuth
- `DISCORD_CALLBACK_URL`: URL de callback para autenticación
#### Cloudinary
- `CLOUDINARY_CLOUD_NAME`: Nombre de la cuenta de Cloudinary
- `CLOUDINARY_API_KEY`: Clave de API de Cloudinary
#### RAWG.io
- `RAWG_API_KEY`: Clave de API para RAWG.io
#### Base de Datos
- `MONGODB_URI`: Cadena de conexión a MongoDB
#### Correo Electrónico
- `EMAIL_HOST`: Servidor SMTP
- `EMAIL_PORT`: Puerto SMTP
- `EMAIL_USER`: Usuario de correo
- `EMAIL_PASS`: Contraseña de correo
#### Autenticación
- `JWT_SECRET`: Clave secreta para tokens JWT
#### URLs
- `FRONTEND_URL`: URL del frontend en producción
- `FRONTEND_URL_LOCAL`: URL del frontend en desarrollo
- Iniciar servidor:
# Desarrollo
npm run dev
# Producción
npm start- Instalar dependencias:
cd frontend
npm install- Configurar environment:
// src/environments/environment.ts
export const environment = {
production: false,
apiUrl: 'http://localhost:3000/api',
firebase: {
// Configuración de Firebase
}
};- Iniciar aplicación:
npm startbackend/
├── src/
│ ├── config/ # Configuraciones
│ ├── controllers/ # Controladores
│ ├── middlewares/ # Middlewares
│ ├── models/ # Modelos MongoDB
│ ├── routes/ # Rutas API
│ │ ├── auth-discord.routes.js
│ │ ├── community.routes.js
│ │ ├── event.routes.js
│ │ ├── search.routes.js
│ │ ├── team.routes.js
│ │ └── user.routes.js
│ ├── utils/ # Utilidades
│ ├── app.js # Entrada principal
│ └── passport.js # Config Passport
└── package.json
frontend/
├── src/
│ ├── app/
│ │ ├── components/ # Componentes reutilizables
│ │ ├── guards/ # Guards de rutas
│ │ ├── pages/ # Páginas principales
│ │ ├── services/ # Servicios
│ │ ├── app.component.*
│ │ ├── app.config.ts
│ │ └── app.routes.ts
│ ├── index.html
│ ├── main.ts
│ └── styles.css
└── package.json
POST /api/auth/discord/login # Login Discord
GET /api/auth/discord/callback # CallbackPOST /api/users/register # Registro
POST /api/users/login # Login
GET /api/users/profile # Obtener perfil
PUT /api/users/profile # Actualizar perfil
DELETE /api/users/:id # Eliminar cuentaPOST /api/communities # Crear
GET /api/communities # Listar
GET /api/communities/:id # Obtener
PUT /api/communities/:id # Actualizar
DELETE /api/communities/:id # EliminarPOST /api/events # Crear evento
GET /api/teams # Listar equipos
// ... endpoints similares para gestión{
"dependencies": {
"express": "^4.21.2",
"mongoose": "^8.8.4",
"passport": "^0.7.0",
"passport-discord": "^0.1.4",
"jsonwebtoken": "^9.0.2",
"cloudinary": "^1.41.3",
"multer": "^1.4.5-lts.1",
"cors": "^2.8.5",
"dotenv": "^16.4.7"
}
}{
"dependencies": {
"@angular/core": "^18.2.0",
"@angular/forms": "^18.2.0",
"bootstrap": "^5.3.3",
"firebase": "^11.1.0",
"@cloudinary/angular-5.x": "^1.5.4",
"sweetalert2": "^11.15.2"
}
}npm start # Producción
npm run dev # Desarrollo
npm test # Testsnpm start # Servidor desarrollo
npm build # Construir producción
npm test # Tests- Fork del repositorio
- Crear rama de feature (
git checkout -b feature/nueva-caracteristica) - Commit cambios (
git commit -am 'Añade nueva caracteristica') - Push a la rama (
git push origin feature/nueva-caracteristica) - Crear Pull Request