63 lines
1.9 KiB
JavaScript
63 lines
1.9 KiB
JavaScript
// Централизованная конфигурация приложения
|
|
|
|
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'
|
|
};
|
|
|