Shared runtime configuration that powers the Express app, DAL, and background tooling. Callers typically access fields through ConfigModule.get to keep parity with production settings.

interface AppConfig {
    accountRequests?: {
        emailCooldownHours: number;
        enabled: boolean;
        rateLimitPerIP: number;
        rateLimitWindowHours: number;
        retentionDays: number;
    };
    adapterTimeout: number;
    adapterUserAgent: string;
    adminEmail: string;
    defaultLocale?: LocaleCode;
    devPort: number;
    email?: {
        enabled: boolean;
        mailgun: { apiKey: string; domain: string; from: string; url: string };
        provider: string;
    };
    forceHTTPS?: boolean;
    frontPageTeamBlog: string;
    frontPageTeamBlogKey: string;
    https: HTTPSConfig;
    irc: IRCConfig;
    logger: LoggerFormat;
    maintenanceMode: boolean;
    passwordReset?: {
        cooldownHours: number;
        rateLimitPerIP: number;
        tokenExpirationHours: number;
    };
    postgres: PostgresConfig;
    qualifiedURL: string;
    questionCaptcha: QuestionCaptchaConfig;
    requireInviteLinks: boolean;
    search: SearchConfig;
    sessionCookieDuration: number;
    sessionSecret: string;
    uploadMaxSize: number;
    uploadTempDir: string;
    webHooks: WebHookTargets;
    [key: string]: unknown;
}

Hierarchy (View Summary)

Indexable

  • [key: string]: unknown

Properties

accountRequests?: {
    emailCooldownHours: number;
    enabled: boolean;
    rateLimitPerIP: number;
    rateLimitWindowHours: number;
    retentionDays: number;
}
adapterTimeout: number
adapterUserAgent: string
adminEmail: string
defaultLocale?: LocaleCode
devPort: number
email?: {
    enabled: boolean;
    mailgun: { apiKey: string; domain: string; from: string; url: string };
    provider: string;
}
forceHTTPS?: boolean
frontPageTeamBlog: string
frontPageTeamBlogKey: string
logger: LoggerFormat
maintenanceMode: boolean
passwordReset?: {
    cooldownHours: number;
    rateLimitPerIP: number;
    tokenExpirationHours: number;
}
postgres: PostgresConfig
qualifiedURL: string
questionCaptcha: QuestionCaptchaConfig
requireInviteLinks: boolean
search: SearchConfig
sessionCookieDuration: number
sessionSecret: string
uploadMaxSize: number
uploadTempDir: string
webHooks: WebHookTargets