import dotenv from 'dotenv'; dotenv.config(); function require(key: string): string { const val = process.env[key]; if (!val) throw new Error(`Missing required environment variable: ${key}`); return val; } export const config = { env: process.env.NODE_ENV || 'production', port: parseInt(process.env.PORT || '4000', 10), host: process.env.HOST || '0.0.0.0', db: { host: process.env.DB_HOST || '127.0.0.1', port: parseInt(process.env.DB_PORT || '3306', 10), user: require('DB_USER'), password: require('DB_PASSWORD'), name: require('DB_NAME'), }, jwt: { secret: require('JWT_SECRET'), expiresIn: process.env.JWT_EXPIRES_IN || '7d', }, stripe: { secretKey: require('STRIPE_SECRET_KEY'), webhookSecret: require('STRIPE_WEBHOOK_SECRET'), plans: { // Stripe Price IDs — set after creating products in Stripe dashboard solo_monthly: process.env.STRIPE_PRICE_SOLO_MONTHLY || '', solo_annual: process.env.STRIPE_PRICE_SOLO_ANNUAL || '', host_monthly: process.env.STRIPE_PRICE_HOST_MONTHLY || '', host_annual: process.env.STRIPE_PRICE_HOST_ANNUAL || '', agency_monthly: process.env.STRIPE_PRICE_AGENCY_MONTHLY || '', agency_annual: process.env.STRIPE_PRICE_AGENCY_ANNUAL || '', }, }, licensingServer: { url: require('LICENSING_SERVER_URL'), apiKey: require('LICENSING_SERVER_API_KEY'), }, mail: { host: process.env.MAIL_HOST || 'smtp.mailgun.org', port: parseInt(process.env.MAIL_PORT || '587', 10), user: process.env.MAIL_USER || '', password: process.env.MAIL_PASSWORD || '', from: process.env.MAIL_FROM || 'noreply@nixpanel.io', }, appUrl: process.env.APP_URL || 'https://nixpanel.io', cors: { origin: process.env.CORS_ORIGIN || 'https://nixpanel.io', }, };