Initial Commit
This commit is contained in:
55
server/config.ts
Normal file
55
server/config.ts
Normal file
@@ -0,0 +1,55 @@
|
||||
import dotenv from 'dotenv';
|
||||
import path from 'path';
|
||||
|
||||
// Load environment variables from .env file
|
||||
dotenv.config({ path: path.join(__dirname, '../.env') });
|
||||
|
||||
// Validate required environment variables
|
||||
const requiredEnvVars = [
|
||||
'NEXTAUTH_SECRET',
|
||||
'GITHUB_CLIENT_ID',
|
||||
'GITHUB_CLIENT_SECRET'
|
||||
];
|
||||
|
||||
const missingEnvVars = requiredEnvVars.filter(envVar => !process.env[envVar]);
|
||||
|
||||
if (missingEnvVars.length > 0) {
|
||||
console.error('Missing required environment variables:', missingEnvVars.join(', '));
|
||||
console.error('Please check your .env file and ensure all required variables are set.');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// Warn about default secrets in production
|
||||
if (process.env.NODE_ENV === 'production') {
|
||||
if (process.env.NEXTAUTH_SECRET == "") {
|
||||
console.error('CRITICAL: Default session secret detected in production!');
|
||||
console.error('Please change NEXTAUTH_SECRET in your .env file.');
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
export const config = {
|
||||
server: {
|
||||
port: parseInt(process.env.PORT || '3000', 10),
|
||||
nodeEnv: process.env.NODE_ENV || 'development'
|
||||
},
|
||||
security: {
|
||||
sessionSecret: process.env.NEXTAUTH_SECRET!,
|
||||
githubClientId: process.env.GITHUB_CLIENT_ID!,
|
||||
githubClientSecret: process.env.GITHUB_CLIENT_SECRET!,
|
||||
corsOrigin: process.env.NODE_ENV === 'development'
|
||||
? ['http://localhost:3000', 'http://localhost:5173']
|
||||
: 'http://localhost:3000'
|
||||
},
|
||||
rateLimit: {
|
||||
windowMs: parseInt(process.env.RATE_LIMIT_WINDOW_MS || '900000', 10), // 15 minutes
|
||||
maxRequests: parseInt(process.env.RATE_LIMIT_MAX_REQUESTS || '100', 10)
|
||||
},
|
||||
slowDown: {
|
||||
windowMs: parseInt(process.env.SLOW_DOWN_WINDOW_MS || '60000', 10), // 1 minute
|
||||
delayMs: parseInt(process.env.SLOW_DOWN_DELAY_MS || '500', 10) // 500ms delay
|
||||
},
|
||||
logging: {
|
||||
level: process.env.LOG_LEVEL || 'info'
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user