require('dotenv').config(); const env = { NODE_ENV: process.env.NODE_ENV || 'development', PORT: process.env.PORT || 3000, // JWT Configuration JWT_SECRET: process.env.JWT_SECRET, JWT_EXPIRES_IN: process.env.JWT_EXPIRES_IN || '24h', // Email Configuration EMAIL_USER: process.env.EMAIL_USER, EMAIL_PASS: process.env.EMAIL_PASS, EMAIL_HOST: process.env.EMAIL_HOST || 'smtp.gmail.com', EMAIL_PORT: process.env.EMAIL_PORT || 587, BACK_URL: process.env.BACK_URL, // Database Configuration DB_HOST: process.env.DB_HOST, DB_USER: process.env.DB_USER, DB_PASSWORD: process.env.DB_PASSWORD, DB_NAME: process.env.DB_NAME, // API Configuration SPURRIN_API_URL: process.env.SPURRIN_API_URL, SPURRIN_API_KEY: process.env.SPURRIN_API_KEY }; // Group required environment variables by feature const requiredEnvVars = { email: ['EMAIL_USER', 'EMAIL_PASS', 'EMAIL_HOST', 'BACK_URL'], database: ['DB_HOST', 'DB_USER', 'DB_PASSWORD', 'DB_NAME'], jwt: ['JWT_SECRET'], api: ['SPURRIN_API_URL', 'SPURRIN_API_KEY'] }; // Validate required environment variables based on feature const validateEnvVars = (feature) => { const vars = requiredEnvVars[feature] || []; const missingVars = vars.filter(envVar => !env[envVar]); if (missingVars.length > 0) { throw new Error(`Missing required environment variables for ${feature}: ${missingVars.join(', ')}`); } }; // Export validation function along with env object module.exports = { env, validateEnvVars };