export default () => ({ // Application app: { name: process.env.APP_NAME || 'Real Estate Agent Platform', env: process.env.NODE_ENV || 'development', port: parseInt(process.env.PORT || '3001', 10), apiUrl: process.env.API_URL || 'http://localhost:3001', frontendUrl: process.env.FRONTEND_URL || 'http://localhost:3000', adminUrl: process.env.ADMIN_URL || 'http://localhost:3002', }, // Database database: { url: process.env.DATABASE_URL, }, // JWT Authentication jwt: { secret: process.env.JWT_SECRET || 'super-secret-key', accessExpiration: process.env.JWT_ACCESS_EXPIRATION || '2h', refreshExpiration: process.env.JWT_REFRESH_EXPIRATION || '30d', }, // Password Hashing bcrypt: { saltRounds: parseInt(process.env.BCRYPT_SALT_ROUNDS || '12', 10), }, // Google OAuth google: { clientId: process.env.GOOGLE_CLIENT_ID, clientSecret: process.env.GOOGLE_CLIENT_SECRET, callbackUrl: process.env.GOOGLE_CALLBACK_URL, }, // Facebook OAuth facebook: { appId: process.env.FACEBOOK_APP_ID, appSecret: process.env.FACEBOOK_APP_SECRET, callbackUrl: process.env.FACEBOOK_CALLBACK_URL, }, // AWS S3 aws: { accessKeyId: process.env.AWS_ACCESS_KEY_ID, secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY, region: process.env.AWS_REGION || 'us-east-1', s3Bucket: process.env.AWS_S3_BUCKET, }, // Email mail: { host: process.env.MAIL_HOST, port: parseInt(process.env.MAIL_PORT || '587', 10), user: process.env.MAIL_USER, password: process.env.MAIL_PASSWORD, from: process.env.MAIL_FROM, }, // Stripe stripe: { secretKey: process.env.STRIPE_SECRET_KEY, webhookSecret: process.env.STRIPE_WEBHOOK_SECRET, publishableKey: process.env.STRIPE_PUBLISHABLE_KEY, }, // Firebase firebase: { projectId: process.env.FIREBASE_PROJECT_ID, clientEmail: process.env.FIREBASE_CLIENT_EMAIL, privateKey: process.env.FIREBASE_PRIVATE_KEY?.replace(/\\n/g, '\n'), }, // Redis redis: { host: process.env.REDIS_HOST || 'localhost', port: parseInt(process.env.REDIS_PORT || '6379', 10), password: process.env.REDIS_PASSWORD || undefined, db: parseInt(process.env.REDIS_DB || '0', 10), }, // Rate Limiting throttle: { ttl: parseInt(process.env.THROTTLE_TTL || '60', 10), limit: parseInt(process.env.THROTTLE_LIMIT || '100', 10), }, // Logging logging: { level: process.env.LOG_LEVEL || 'debug', }, // CORS cors: { origins: process.env.CORS_ORIGINS?.split(',') || [ 'http://localhost:3000', 'http://localhost:3002', ], }, });