// Централизованная конфигурация приложения // Важно: dotenv.config() должен быть вызван ДО этого файла 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, // Gelbooru API gelbooruApiKey: process.env.GELBOORU_API_KEY || '638e2433d451fc02e848811acdafdce08317073c01ed78e38139115c19fe04afa367f736726514ef1337565d4c05b3cbe2c81125c424301e90d29d1f7f4cceff', gelbooruUserId: process.env.GELBOORU_USER_ID || '1844464', // 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' };