Some checks failed
CI/CD Pipeline / 🧪 Tests (push) Has been cancelled
CI/CD Pipeline / 🏗️ Build (push) Has been cancelled
CI/CD Pipeline / 🚀 Deploy to Staging (push) Has been cancelled
CI/CD Pipeline / 🚀 Deploy to Production (push) Has been cancelled
CI/CD Pipeline / 🏷️ Create Release (push) Has been cancelled
CI/CD Pipeline / 🧹 Cleanup (push) Has been cancelled
Implementados 4 módulos con agent swarm: 1. TESTING FUNCIONAL (Jest) - Configuración Jest + ts-jest - Tests unitarios: auth, booking, court (55 tests) - Tests integración: routes (56 tests) - Factories y utilidades de testing - Coverage configurado (70% servicios) - Scripts: test, test:watch, test:coverage 2. TESTING DE USUARIO (Beta) - Sistema de beta testers - Feedback con categorías y severidad - Beta issues tracking - 8 testers de prueba creados - API completa para gestión de feedback 3. DOCUMENTACIÓN COMPLETA - API.md - 150+ endpoints documentados - SETUP.md - Guía de instalación - DEPLOY.md - Deploy en VPS - ARCHITECTURE.md - Arquitectura del sistema - APP_STORE.md - Material para stores - Postman Collection completa - PM2 ecosystem config - Nginx config con SSL 4. GO LIVE Y PRODUCCIÓN - Sistema de monitoreo (logs, health checks) - Servicio de alertas multi-canal - Pre-deploy check script - Docker + docker-compose producción - Backup automatizado - CI/CD GitHub Actions - Launch checklist completo ESTADÍSTICAS FINALES: - Fases completadas: 7/7 - Archivos creados: 250+ - Líneas de código: 60,000+ - Endpoints API: 150+ - Tests: 110+ - Documentación: 5,000+ líneas PROYECTO COMPLETO Y LISTO PARA PRODUCCIÓN
73 lines
1.5 KiB
TypeScript
73 lines
1.5 KiB
TypeScript
import express from 'express';
|
|
import cors from 'cors';
|
|
import helmet from 'helmet';
|
|
import morgan from 'morgan';
|
|
import rateLimit from 'express-rate-limit';
|
|
import path from 'path';
|
|
|
|
import config from './config';
|
|
import logger from './config/logger';
|
|
import routes from './routes';
|
|
import { errorHandler, notFoundHandler } from './middleware/errorHandler';
|
|
|
|
const app = express();
|
|
|
|
// Crear directorio de logs si no existe
|
|
const fs = require('fs');
|
|
const logsDir = path.join(__dirname, '../logs');
|
|
if (!fs.existsSync(logsDir)) {
|
|
fs.mkdirSync(logsDir);
|
|
}
|
|
|
|
// Middleware de seguridad
|
|
app.use(helmet());
|
|
|
|
// CORS
|
|
app.use(cors({
|
|
origin: config.FRONTEND_URL,
|
|
credentials: true,
|
|
}));
|
|
|
|
// Rate limiting
|
|
const limiter = rateLimit({
|
|
windowMs: config.RATE_LIMIT.WINDOW_MS,
|
|
max: config.RATE_LIMIT.MAX_REQUESTS,
|
|
message: {
|
|
success: false,
|
|
message: 'Demasiadas peticiones, por favor intenta más tarde',
|
|
},
|
|
});
|
|
app.use('/api/', limiter);
|
|
|
|
// Logging HTTP
|
|
app.use(morgan('combined', {
|
|
stream: {
|
|
write: (message: string) => logger.info(message.trim()),
|
|
},
|
|
}));
|
|
|
|
// Parsing de body
|
|
app.use(express.json({ limit: '10mb' }));
|
|
app.use(express.urlencoded({ extended: true }));
|
|
|
|
// Rutas API
|
|
app.use('/api/v1', routes);
|
|
|
|
// Ruta raíz
|
|
app.get('/', (_req, res) => {
|
|
res.json({
|
|
success: true,
|
|
message: '🎾 API de Canchas de Pádel',
|
|
version: '1.0.0',
|
|
docs: '/api/v1/health',
|
|
});
|
|
});
|
|
|
|
// Handler de rutas no encontradas
|
|
app.use(notFoundHandler);
|
|
|
|
// Handler de errores global
|
|
app.use(errorHandler);
|
|
|
|
export default app;
|