config.js•1.38 kB
/**
* config.js
* Environment and configuration settings
*/
require('dotenv').config();
const config = {
server: {
port: process.env.PORT || 3000,
env: process.env.NODE_ENV || 'development',
logLevel: process.env.LOG_LEVEL || 'info',
cors: {
origin: process.env.CORS_ORIGIN || '*',
methods: ['GET', 'POST'],
}
},
db: {
host: process.env.DB_HOST || 'localhost',
port: parseInt(process.env.DB_PORT || '5432', 10),
database: process.env.DB_NAME,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
ssl: process.env.DB_SSL === 'true',
poolSize: parseInt(process.env.DB_POOL_SIZE || '10', 10),
idleTimeout: parseInt(process.env.DB_IDLE_TIMEOUT || '30000', 10),
connectionTimeout: parseInt(process.env.DB_CONNECTION_TIMEOUT || '5000', 10),
},
security: {
jwtSecret: process.env.JWT_SECRET,
jwtExpiresIn: process.env.JWT_EXPIRES_IN || '1d',
rateLimit: {
windowMs: parseInt(process.env.RATE_LIMIT_WINDOW_MS || '900000', 10), // 15 minutes
max: parseInt(process.env.RATE_LIMIT_MAX || '100', 10), // 100 requests per windowMs
},
},
query: {
maxExecutionTime: parseInt(process.env.MAX_QUERY_EXECUTION_TIME || '30000', 10), // 30 seconds
maxRowsReturned: parseInt(process.env.MAX_ROWS_RETURNED || '10000', 10), // 10,000 rows
}
};
module.exports = config;