/** * Production Environment Configuration * This file contains production-specific settings and environment variable handling */ const path = require('path'); module.exports = { // Server Configuration server: { port: process.env.PORT || 3000, host: process.env.HOST || '0.0.0.0', environment: process.env.NODE_ENV || 'production', requestTimeout: parseInt(process.env.REQUEST_TIMEOUT) || 30000 }, // Database Configuration database: { path: process.env.DATABASE_PATH || './inventory.db', backupPath: process.env.DATABASE_BACKUP_PATH || './data/backups', backupInterval: parseInt(process.env.DATABASE_BACKUP_INTERVAL) || 3600000, // 1 hour queryTimeout: parseInt(process.env.QUERY_TIMEOUT) || 5000 }, // File Upload Configuration upload: { maxSize: parseInt(process.env.UPLOAD_MAX_SIZE) || 10 * 1024 * 1024, // 10MB allowedTypes: process.env.UPLOAD_ALLOWED_TYPES?.split(',') || [ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.ms-excel' ], tempDir: process.env.TEMP_DIR || './data/temp' }, // Export Configuration export: { dir: process.env.EXPORT_DIR || './data/exports', retentionDays: parseInt(process.env.EXPORT_RETENTION_DAYS) || 30 }, // Logging Configuration logging: { level: process.env.LOG_LEVEL || 'info', dir: process.env.LOG_DIR || './logs', maxSize: process.env.LOG_MAX_SIZE || '10m', maxFiles: process.env.LOG_MAX_FILES || '14d' }, // Security Configuration security: { corsOrigin: process.env.CORS_ORIGIN || '*', helmetCspEnabled: process.env.HELMET_CSP_ENABLED === 'true', rateLimitEnabled: process.env.RATE_LIMIT_ENABLED === 'true', rateLimitMax: parseInt(process.env.RATE_LIMIT_MAX) || 100 }, // Performance Configuration performance: { cacheTtl: parseInt(process.env.CACHE_TTL) || 300000, // 5 minutes maxConcurrentImports: parseInt(process.env.MAX_CONCURRENT_IMPORTS) || 3 }, // Backup Configuration backup: { enabled: process.env.BACKUP_ENABLED === 'true', schedule: process.env.BACKUP_SCHEDULE || '0 2 * * *', // Daily at 2 AM retentionDays: parseInt(process.env.BACKUP_RETENTION_DAYS) || 30 }, // Validate required environment variables validate() { const required = []; const missing = required.filter(key => !process.env[key]); if (missing.length > 0) { throw new Error(`Missing required environment variables: ${missing.join(', ')}`); } } };