# Core APP_ENV=production APP_PORT=8000 APP_DATA_DIR=./data # Optional, but useful for same-origin mutation checks behind a proxy. APP_BASE_URL= # exe.dev auth. Production should rely on X-ExeDev-* headers injected by exe.dev. AUTH_REQUIRE_EXE=true AUTH_DENY_STATUS=404 # Development only; ignored unless APP_ENV=development. DEV_USER_ID=dev-user DEV_USER_EMAIL=dev@example.com # Prefer stable exe.dev IDs. An optional bootstrap email is claimed by the first # authenticated matching identity and permanently bound to that user's stable ID. ADMIN_USER_IDS= ADMIN_BOOTSTRAP_EMAILS= # Groq GROQ_API_KEY= GROQ_MODEL=whisper-large-v3-turbo GROQ_LANGUAGE=en GROQ_CHUNK_SECONDS=480 GROQ_CHUNK_OVERLAP_SECONDS=2 # Optional: required for paid AI image covers. Setting the key does not enable # generation; an administrator must enable it in Cover artwork settings. # Keep private; do not commit or enter this key in the browser. OPENROUTER_API_KEY= MAX_UPLOAD_BYTES=2147483648 # Optional contact identifier for regular Open Library catalog use. OPEN_LIBRARY_CONTACT= # Tools FFMPEG_BIN=ffmpeg FFPROBE_BIN=ffprobe YTDLP_BIN=./.tools/bin/yt-dlp DENO_BIN=./.tools/bin/deno # Optional R2 / S3-compatible asset mirror and Litestream backup. R2_ENABLED=false # Optional Wrangler administration token only; never needed by the app. CLOUDFLARE_API_TOKEN= R2_BUCKET=readalong-private R2_ACCOUNT_ID= R2_ACCESS_KEY_ID= R2_SECRET_ACCESS_KEY= R2_ENDPOINT= R2_PREFIX=readalong # Optional asset mirroring command; rclone is the recommended simple v1 implementation. RCLONE_BIN=rclone RCLONE_REMOTE=readalong-r2