Thermograph monorepo: graded-climate API + SSR frontend + infra, domain-specific containerized deploys
Find a file
Emi Griffith 9611a7be8b Add a worker scheduler for city warming and IndexNow pings (#242)
warm_cities.py and indexnow.py are one-shot scripts run manually at deploy
today - nothing keeps the curated city set topped up, or pings IndexNow,
between deploys.

Add notifications/scheduler.py: an in-process APScheduler instance driving
two recurring jobs (city warming, daily; IndexNow --if-changed, every 6h by
default), gated by the same leader election as the notifier - only the
process that already won leadership starts it, so the jobs run in exactly
one place under multi-host Swarm rather than once per replica. Neither job
runs immediately on start: warm_cities already runs at deploy time, so an
immediate duplicate on every worker boot/restart would be wasted work.

Extract indexnow.submit_if_changed() from the CLI's --if-changed branch so
the scheduler and the command line share the exact same skip-when-unchanged
logic instead of two copies drifting apart. The CLI's plain (non-flag) path
is unchanged.

APScheduler over a Postgres-native queue: exactly one process ever runs
this, no fan-out/backpressure/dead-letter need, no new infrastructure.
2026-07-21 01:26:39 +00:00
.forgejo/workflows Reconcile Forgejo workflows with the real infrastructure now in place (#238) 2026-07-21 01:08:09 +00:00
deploy Add a worker scheduler for city warming and IndexNow pings (#242) 2026-07-21 01:26:39 +00:00
terraform Have Terraform generate its own internal secrets, with sizing tiers (#239) 2026-07-21 01:08:57 +00:00
docker-compose.openmeteo.yml Move the climate record from parquet to TimescaleDB hypertables (#227) 2026-07-20 20:15:55 +00:00
docker-compose.yml Add the Swarm interim stack file, a pinnable TimescaleDB tag, and a Caddy health-gate (#235) 2026-07-21 00:39:48 +00:00
docker-stack.yml Add the Swarm interim stack file, a pinnable TimescaleDB tag, and a Caddy health-gate (#235) 2026-07-21 00:39:48 +00:00
INFRA.md Document the current agent VPS access state in INFRA.md (#237) 2026-07-21 00:55:56 +00:00