61
apps/web/src/lib/config/env.ts
Executable file
61
apps/web/src/lib/config/env.ts
Executable file
@@ -0,0 +1,61 @@
|
||||
/**
|
||||
* Centralised environment configuration.
|
||||
* Preserves existing env variable names and default values.
|
||||
*/
|
||||
export const env = {
|
||||
get nodeEnv(): string {
|
||||
return process.env.NODE_ENV ?? "development";
|
||||
},
|
||||
|
||||
get isProduction(): boolean {
|
||||
return env.nodeEnv === "production";
|
||||
},
|
||||
|
||||
get sessionSecret(): string {
|
||||
return process.env.SESSION_SECRET ?? "complex_password_at_least_32_characters_long";
|
||||
},
|
||||
|
||||
get authPassword(): string {
|
||||
return process.env.AUTH_PASSWORD ?? "adventure";
|
||||
},
|
||||
|
||||
get cronSecret(): string {
|
||||
return process.env.CRON_SECRET ?? "change-me-cron-secret";
|
||||
},
|
||||
|
||||
get ollamaUrl(): string {
|
||||
return process.env.OLLAMA_URL ?? "http://localhost:11434";
|
||||
},
|
||||
|
||||
get ollamaModelFast(): string {
|
||||
return process.env.OLLAMA_MODEL_FAST ?? "llama3.2:3b";
|
||||
},
|
||||
|
||||
get ollamaModelProse(): string {
|
||||
return process.env.OLLAMA_MODEL_PROSE ?? process.env.OLLAMA_MODEL_FAST ?? "llama3.2:3b";
|
||||
},
|
||||
|
||||
get openAiApiKey(): string | undefined {
|
||||
return process.env.OPENAI_API_KEY;
|
||||
},
|
||||
|
||||
get llamaCppApiKey(): string | undefined {
|
||||
return process.env.LLAMACPP_API_KEY;
|
||||
},
|
||||
|
||||
get calibreLibraryPath(): string | undefined {
|
||||
return process.env.CALIBRE_LIBRARY_PATH;
|
||||
},
|
||||
|
||||
get calibreMetadataDbPath(): string | undefined {
|
||||
return process.env.CALIBRE_METADATA_DB_PATH;
|
||||
},
|
||||
|
||||
get calibreReadOnly(): boolean {
|
||||
return process.env.CALIBRE_READ_ONLY !== "false";
|
||||
},
|
||||
} as const;
|
||||
|
||||
export function getOpenAiCompatibleApiKey(): string | undefined {
|
||||
return env.openAiApiKey ?? env.llamaCppApiKey;
|
||||
}
|
||||
Reference in New Issue
Block a user