nakama/backend/config/index.js

59 lines
1.7 KiB
JavaScript
Raw Normal View History

2025-11-03 20:35:01 +00:00
// Централизованная конфигурация приложения
module.exports = {
// Сервер
port: process.env.PORT || 3000,
nodeEnv: process.env.NODE_ENV || 'development',
// MongoDB
mongoUri: process.env.MONGODB_URI || 'mongodb://localhost:27017/nakama',
// Redis (опционально)
redisUrl: process.env.REDIS_URL || null,
// JWT
jwtSecret: process.env.JWT_SECRET || 'nakama_secret_key_change_in_production',
// Telegram
telegramBotToken: process.env.TELEGRAM_BOT_TOKEN,
// Frontend URL
frontendUrl: process.env.FRONTEND_URL || 'http://localhost:5173',
// CORS
corsOrigin: process.env.CORS_ORIGIN || '*',
// Загрузка файлов
maxFileSize: parseInt(process.env.MAX_FILE_SIZE || '10485760'), // 10MB
uploadsDir: process.env.UPLOADS_DIR || 'uploads',
// Rate limiting
rateLimits: {
general: {
windowMs: 15 * 60 * 1000,
max: parseInt(process.env.RATE_LIMIT_GENERAL || '100')
},
posts: {
windowMs: 60 * 60 * 1000,
max: parseInt(process.env.RATE_LIMIT_POSTS || '10')
},
interactions: {
windowMs: 60 * 1000,
max: parseInt(process.env.RATE_LIMIT_INTERACTIONS || '20')
}
},
// Cache TTL (seconds)
cacheTTL: {
posts: parseInt(process.env.CACHE_TTL_POSTS || '300'), // 5 мин
users: parseInt(process.env.CACHE_TTL_USERS || '600'), // 10 мин
search: parseInt(process.env.CACHE_TTL_SEARCH || '180') // 3 мин
},
// Проверки
isDevelopment: () => process.env.NODE_ENV === 'development',
isProduction: () => process.env.NODE_ENV === 'production',
isTest: () => process.env.NODE_ENV === 'test'
};