require('dotenv').config(); const config = { // Server configuration port: parseInt(process.env.PORT) || 3000, host: process.env.HOST || '0.0.0.0', nodeEnv: process.env.NODE_ENV || 'development', // Database configuration database: { path: process.env.DB_PATH || './stl_storage.db', uploadDir: process.env.UPLOAD_DIR || './uploads' }, // File upload configuration upload: { maxFileSize: parseInt(process.env.MAX_FILE_SIZE) || 100 * 1024 * 1024, // 100MB maxFiles: parseInt(process.env.MAX_FILES_PER_REQUEST) || 5, allowedExtensions: (process.env.ALLOWED_EXTENSIONS || '.stl,.STL').split(','), destination: './uploads/stl' }, // Security configuration security: { sessionSecret: process.env.SESSION_SECRET || 'change-this-secret-key', bcryptRounds: parseInt(process.env.BCRYPT_ROUNDS) || 12, rateLimitWindow: parseInt(process.env.RATE_LIMIT_WINDOW_MS) || 15 * 60 * 1000, rateLimitMax: parseInt(process.env.RATE_LIMIT_MAX_REQUESTS) || 100 }, // Logging configuration logging: { level: process.env.LOG_LEVEL || 'info', file: process.env.LOG_FILE || './logs/app.log' } }; // Validate required configuration const requiredEnvVars = []; const missingVars = requiredEnvVars.filter(varName => !process.env[varName]); if (missingVars.length > 0) { throw new Error(`Missing required environment variables: ${missingVars.join(', ')}`); } module.exports = config;