initial 2
Some checks failed
CI / test (push) Has been cancelled

This commit is contained in:
2026-06-26 09:26:50 +01:00
parent 194330fb47
commit 3b37368e7d
213 changed files with 14688 additions and 1 deletions

61
apps/web/src/lib/config/env.ts Executable file
View 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;
}