✨ Características: - 45 ejercicios universitarios (Basic → Advanced) - Renderizado LaTeX profesional - IA generativa (Z.ai/DashScope) - Docker 9 servicios - Tests 123/123 pasando - Seguridad enterprise (JWT, XSS, Rate limiting) 🐳 Infraestructura: - Next.js 14 + Node.js 20 - PostgreSQL 15 + Redis 7 - Docker Compose completo - Nginx + SSL ready 📚 Documentación: - 5 informes técnicos completos - README profesional - Scripts de deployment automatizados Estado: Producción lista ✅
143 lines
4.3 KiB
Plaintext
143 lines
4.3 KiB
Plaintext
# ============================================
|
|
# EJEMPLO DE CONFIGURACIÓN - NO COMMITEAR VALORES REALES
|
|
# ============================================
|
|
# IMPORTANTE: Este archivo contiene solo placeholders.
|
|
# NUNCA commitear archivos .env con credenciales reales a git.
|
|
# ============================================
|
|
# DATABASE CONFIGURATION
|
|
# ============================================
|
|
DATABASE_URL="postgresql://mathuser:CHANGE_THIS_PASSWORD@localhost:5432/mathdb?schema=public"
|
|
DB_PASSWORD="CHANGE_THIS_PASSWORD"
|
|
|
|
# ============================================
|
|
# REDIS CONFIGURATION
|
|
# ============================================
|
|
REDIS_HOST="localhost"
|
|
REDIS_PORT=6379
|
|
REDIS_PASSWORD=""
|
|
REDIS_DB=0
|
|
|
|
# ============================================
|
|
# AI / LLM CONFIGURATION (MiniMax-M2.5 - Aliyun DashScope)
|
|
# ============================================
|
|
AI_API_BASE_URL="https://coding-intl.dashscope.aliyuncs.com/v1"
|
|
AI_API_KEY="your-dashscope-api-key-here"
|
|
AI_MODEL="MiniMax-M2.5"
|
|
AI_MAX_TOKENS=2000
|
|
AI_TEMPERATURE=0.7
|
|
|
|
# ============================================
|
|
# TELEGRAM CONFIGURATION (BACKEND ONLY)
|
|
# ============================================
|
|
TELEGRAM_BOT_TOKEN="your-telegram-bot-token-here"
|
|
TELEGRAM_ADMIN_CHAT_ID="your-admin-chat-id-here"
|
|
TELEGRAM_NOTIFICATIONS_ENABLED=true
|
|
|
|
# ============================================
|
|
# JWT CONFIGURATION
|
|
# ============================================
|
|
JWT_SECRET="CHANGE_THIS_SECRET_IN_PRODUCTION"
|
|
JWT_EXPIRES_IN="7d"
|
|
JWT_REFRESH_EXPIRES_IN="30d"
|
|
|
|
# ============================================
|
|
# APPLICATION CONFIGURATION
|
|
# ============================================
|
|
NODE_ENV="development"
|
|
PORT=3001
|
|
BACKEND_URL="http://localhost:3001"
|
|
FRONTEND_URL="http://localhost:3000"
|
|
|
|
# ============================================
|
|
# RATE LIMITING
|
|
# ============================================
|
|
RATE_LIMIT_WINDOW_MS=900000
|
|
RATE_LIMIT_MAX_REQUESTS=100
|
|
STRICT_RATE_LIMIT_MAX=5
|
|
|
|
# ============================================
|
|
# FILE UPLOAD CONFIGURATION
|
|
# ============================================
|
|
MAX_FILE_SIZE_MB=10
|
|
UPLOAD_DIR="./uploads"
|
|
PDF_PROCESSING_DIR="./uploads/pdfs"
|
|
|
|
# ============================================
|
|
# LOGGING CONFIGURATION
|
|
# ============================================
|
|
LOG_LEVEL="debug"
|
|
LOG_DIR="./logs"
|
|
ENABLE_QUERY_LOGGING=true
|
|
|
|
# ============================================
|
|
# CACHE CONFIGURATION
|
|
# ============================================
|
|
CACHE_TTL_SECONDS=3600
|
|
ENABLE_CACHE=true
|
|
|
|
# ============================================
|
|
# SESSION CONFIGURATION
|
|
# ============================================
|
|
SESSION_SECRET="CHANGE_THIS_SESSION_SECRET"
|
|
SESSION_MAX_AGE_MS=86400000
|
|
|
|
# ============================================
|
|
# CORS CONFIGURATION
|
|
# ============================================
|
|
CORS_ORIGIN="http://localhost:3000"
|
|
CORS_CREDENTIALS=true
|
|
|
|
# ============================================
|
|
# PDF PROCESSING CONFIGURATION
|
|
# ============================================
|
|
PDF_CONCURRENCY=3
|
|
PDF_TIMEOUT_MS=300000
|
|
PDF_QUALITY="medium"
|
|
|
|
# ============================================
|
|
# WORKER CONFIGURATION
|
|
# ============================================
|
|
WORKER_CONCURRENCY=3
|
|
WORKER_MAX_JOBS_PER_WORKER=10
|
|
WORKER_STUCK_TOKENS_THRESHOLD=10000
|
|
WORKER_STUCK_INTERVAL=5000
|
|
|
|
# ============================================
|
|
# NOTIFICATION CONFIGURATION
|
|
# ============================================
|
|
NOTIFICATION_RETRY_ATTEMPTS=3
|
|
NOTIFICATION_RETRY_DELAY_MS=1000
|
|
DAILY_SUMMARY_ENABLED=true
|
|
DAILY_SUMMARY_TIME="00:00"
|
|
|
|
# ============================================
|
|
# RANKING CONFIGURATION
|
|
# ============================================
|
|
RANKING_UPDATE_INTERVAL_MS=60000
|
|
RANKING_CACHE_TTL_SECONDS=300
|
|
LEADERBOARD_SIZE=100
|
|
|
|
# ============================================
|
|
# ACHIEVEMENT CONFIGURATION
|
|
# ============================================
|
|
ACHIEVEMENT_CHECK_INTERVAL_MS=30000
|
|
BADGE_AUTO_AWARD=true
|
|
|
|
# ============================================
|
|
# MONITORING & HEALTH CHECKS
|
|
# ============================================
|
|
HEALTH_CHECK_INTERVAL_MS=30000
|
|
ENABLE_METRICS=true
|
|
METRICS_PORT=9090
|
|
|
|
# ============================================
|
|
# FEATURE FLAGS
|
|
# ============================================
|
|
ENABLE_REGISTRATION=true
|
|
ENABLE_AI_GENERATION=true
|
|
ENABLE_PDF_PROCESSING=true
|
|
ENABLE_TELEGRAM_NOTIFICATIONS=true
|
|
ENABLE_RANKING_SYSTEM=true
|
|
ENABLE_ACHIEVEMENTS=true
|
|
MAINTENANCE_MODE=false
|