Files
webclone/services/api-gateway/src/config/index.ts
T
2025-12-25 12:02:07 -03:00

42 lines
1.3 KiB
TypeScript

import dotenv from 'dotenv';
dotenv.config();
export const config = {
port: parseInt(process.env.API_PORT || '3000'),
host: process.env.API_HOST || 'localhost',
nodeEnv: process.env.NODE_ENV || 'development',
// Database
databaseUrl: process.env.DATABASE_URL || 'postgresql://cloneweb_user:cloneweb_password@localhost:5432/cloneweb',
// Redis
redisUrl: process.env.REDIS_URL || 'redis://localhost:6379',
// JWT
jwtSecret: process.env.JWT_SECRET || 'your-super-secret-jwt-key-change-in-production',
jwtExpiresIn: process.env.JWT_EXPIRES_IN || '7d',
// Rate Limiting
rateLimitWindowMs: 15 * 60 * 1000, // 15 minutes
rateLimitMax: 100, // limit each IP to 100 requests per windowMs
// CORS
corsOrigins: process.env.CORS_ORIGINS?.split(',') || ['http://localhost:3000', 'http://localhost:3001'],
// Logging
logLevel: process.env.LOG_LEVEL || 'info',
// Security
bcryptRounds: 12,
// Services URLs (for microservices communication)
services: {
crawler: process.env.CRAWLER_SERVICE_URL || 'http://localhost:3001',
scraper: process.env.SCRAPER_SERVICE_URL || 'http://localhost:3002',
generator: process.env.GENERATOR_SERVICE_URL || 'http://localhost:3003',
assets: process.env.ASSETS_SERVICE_URL || 'http://localhost:3004',
}
};
export default config;