spurrin-backend/src/config/env.js
2025-06-09 11:11:52 +05:30

51 lines
1.5 KiB
JavaScript

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
};