Files
com.gregkilmer.www/services/content/.env.example
T
Claude e3b0cf60c5 Phase 6: sync jobs, inquiry and order forms
- Sync scheduler in the content service with a per-job cache (sync_cache),
  sync_runs reporting and Healthchecks pings. Jobs: Archidekt, BoardGameGeek,
  cover art (Open Library, TMDB, AniList), Suwayomi and Kavita reading
  progress, Bambuddy filament and Homebox material stock. A note's own value
  always wins over a synced one.
- PersonalReader: updates only Library notes with a matching anilistId,
  changes to Greg's notes are held for review; Reading series with no note
  show as suggestions on the admin Overview.
- /api/inquiries and /api/orders: Turnstile, rate limits, a saved copy in the
  content service (intake token) plus email over SMTP. Orders are re-checked
  against the live notes: accepted only when the category's ordersOpen is
  true and the line has capacity.
- Admin Inbox for saved submissions. Options' inStock is optional so synced
  stock can fill it. All settings from process.env; .env.example per service.
- Sources could not be reached from the build environment; parsers are tested
  against fixtures labelled as not live.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012aSbo2D1qP8cMFQCykf7kx
2026-10-11 23:50:06 +00:00

56 lines
2.2 KiB
Bash

# Content service settings. Copy to .env (never commit it) or set them in the
# container's environment. See docs/content-service.md, "Running it".
# --- Sync jobs (docs/content-service.md, "Sync jobs") ------------------------
# Public sources to run: archidekt (hourly), bgg (daily), covers (every 15 min).
SYNC_JOBS=archidekt,bgg,covers
# Optional per-job interval override, in minutes.
# SYNC_ARCHIDEKT_MINUTES=60
# SYNC_BGG_MINUTES=1440
# SYNC_COVERS_MINUTES=15
# Healthchecks ping URLs, one per job (start, success and fail are pinged).
SYNC_ARCHIDEKT_HEALTHCHECK_URL=
SYNC_BGG_HEALTHCHECK_URL=
SYNC_COVERS_HEALTHCHECK_URL=
# BoardGameGeek application token (sent as Authorization: Bearer), if BGG asks for one.
BGG_TOKEN=
# TMDB v3 API key or v4 read access token, for film and TV covers.
TMDB_API_KEY=
# --- Homelab syncs on Cosmos (docs/content-service.md, "Homelab sources") ----
# Each is enabled by its own URL and login; all are read only against the source.
# PersonalReader, manga and manhwa (hourly). Its own read-only Suwayomi account.
SUWAYOMI_URL=
SUWAYOMI_USER=
SUWAYOMI_PASS=
# ui_login (default with a user), basic, or none.
# SUWAYOMI_AUTH=ui_login
# PersonalReader, light novels and books (daily).
KAVITA_URL=
KAVITA_API_KEY=
# Filament in stock (hourly). UNVERIFIED API: check the path and mapping first.
BAMBUDDY_URL=
# BAMBUDDY_SPOOLS_PATH=/api/v1/inventory/spools
# BAMBUDDY_API_KEY=
# BAMBUDDY_AUTH_HEADER=
# BAMBUDDY_GROUP=Filament
# BAMBUDDY_MATERIALS=PLA,PETG
# BAMBUDDY_MIN_GRAMS=50
# Leather and paper in stock (hourly). Entries are name or name=Group.
HOMEBOX_URL=
HOMEBOX_USER=
HOMEBOX_PASS=
HOMEBOX_LABELS=leather,paper
# HOMEBOX_LOCATIONS=
SYNC_SUWAYOMI_HEALTHCHECK_URL=
SYNC_KAVITA_HEALTHCHECK_URL=
SYNC_BAMBUDDY_HEALTHCHECK_URL=
SYNC_HOMEBOX_HEALTHCHECK_URL=
# --- Form submissions (docs/content-service.md, "Form submissions") ----------
# Add an intake token for the site's forms to CONTENT_TOKENS, e.g.
# CONTENT_TOKENS=reader:…,admin:…,intake:<24+ random characters>
# The site uses the same value as CONTENT_INTAKE_TOKEN. It can only file submissions.
# Largest attachment a submission may carry, in MB. Files go to DATA_DIR/submissions.
SUBMISSION_MAX_MB=10