Files
dashboard/backend/src/config/environment.ts
Matthias Hochmeister 1c6c59c199 fix URLs
2026-02-27 14:02:03 +01:00

70 lines
1.9 KiB
TypeScript

import dotenv from 'dotenv';
import path from 'path';
// Load environment-specific .env file
const envFile = process.env.NODE_ENV === 'production'
? '.env.production'
: '.env.development';
dotenv.config({ path: path.resolve(__dirname, '../../', envFile) });
interface EnvironmentConfig {
nodeEnv: string;
port: number;
database: {
host: string;
port: number;
name: string;
user: string;
password: string;
};
jwt: {
secret: string;
expiresIn: string | number;
};
cors: {
origin: string;
};
rateLimit: {
windowMs: number;
max: number;
};
authentik: {
issuer: string;
clientId: string;
clientSecret: string;
redirectUri: string;
};
}
const environment: EnvironmentConfig = {
nodeEnv: process.env.NODE_ENV || 'development',
port: parseInt(process.env.PORT || '3000', 10),
database: {
host: process.env.DB_HOST || 'localhost',
port: parseInt(process.env.DB_PORT || '5432', 10),
name: process.env.DB_NAME || 'feuerwehr_dev',
user: process.env.DB_USER || 'dev_user',
password: process.env.DB_PASSWORD || 'dev_password',
},
jwt: {
secret: process.env.JWT_SECRET || 'your-secret-key-change-in-production',
expiresIn: process.env.JWT_EXPIRES_IN || '24h',
},
cors: {
origin: process.env.CORS_ORIGIN || 'http://localhost:3001',
},
rateLimit: {
windowMs: parseInt(process.env.RATE_LIMIT_WINDOW_MS || '900000', 10), // 15 minutes
max: parseInt(process.env.RATE_LIMIT_MAX || '100', 10),
},
authentik: {
issuer: process.env.AUTHENTIK_ISSUER || 'https://auth.firesuite.feuerwehr-rems.at/application/o/feuerwehr-dashboard/',
clientId: process.env.AUTHENTIK_CLIENT_ID || 'your_client_id_here',
clientSecret: process.env.AUTHENTIK_CLIENT_SECRET || 'your_client_secret_here',
redirectUri: process.env.AUTHENTIK_REDIRECT_URI || 'http://localhost:5173/auth/callback',
},
};
export default environment;