spb/chat-spboucher-ai
Public
1import path from "node:path";23function req(name: string, fallback?: string): string {4 const v = process.env[name] ?? fallback;5 if (v === undefined || v === "") throw new Error(`Missing required environment variable ${name}`);6 return v;7}89export const env = {10 get DATABASE_URL() { return req("DATABASE_URL"); },11 get DATA_DIR() { return path.resolve(process.env.DATA_DIR ?? "./data"); },12 get UPLOAD_DIR() { return path.join(this.DATA_DIR, "uploads"); },13 get SESSION_SECRET() { return req("SESSION_SECRET"); },14 get OPENAI_API_KEY() { return process.env.OPENAI_API_KEY ?? ""; },15 get ANTHROPIC_API_KEY() { return process.env.ANTHROPIC_API_KEY ?? ""; },16 get TAVILY_API_KEY() { return process.env.TAVILY_API_KEY ?? ""; },17 get PYTHON_BIN() { return process.env.PYTHON_BIN ?? "python3"; },18 get APP_URL() { return process.env.APP_URL ?? "https://chat.spboucher.ai"; },19 get NODE_ENV() { return process.env.NODE_ENV ?? "development"; },20 get SESSION_TTL_DAYS() { return Number(process.env.SESSION_TTL_DAYS ?? 30); },21 get MAX_UPLOAD_MB() { return Number(process.env.MAX_UPLOAD_MB ?? 50); },22 get BENCHMARKS_DIR() { return path.resolve(process.env.BENCHMARKS_DIR ?? "./benchmarks"); },23};24