Thermograph monorepo: graded-climate API + SSR frontend + infra, domain-specific containerized deploys
Move Thermograph to its own domain. thermograph.org now serves the app at its root, and emigriffith.dev/thermograph* permanently redirects there (prefix stripped, so deep links map straight across). - app.py: BASE now supports an empty root prefix. THERMOGRAPH_BASE=/ (or empty) yields BASE="" so routes sit at "/", "/calendar", "/api/v2/…" with no double slashes; the bare-base redirect is skipped and the static mount falls back to "/". Non-empty values keep the existing "/thermograph" sub-path behavior unchanged (backward compatible). - deploy/Caddyfile: add a thermograph.org site block reverse-proxying to the uvicorn on 127.0.0.1:8137; turn emigriffith.dev's /thermograph handler into a permanent redirect to thermograph.org (handle_path strips the prefix; the bare /thermograph goes to the root). - deploy/thermograph.env.example: default THERMOGRAPH_BASE=/ (app owns the domain). - DEPLOY.md: document the two-domain layout and that deploy.sh does not ship the Caddyfile or env — those are applied on the VPS by hand. The frontend already uses base-relative URLs, so it follows the root base with no changes. Verified both modes locally (root serves /, /calendar, /api/v2/*; the /thermograph sub-path still redirects bare→slash and 404s at root) and the full test suite (123) passes. |
||
|---|---|---|
| tests | ||
| api_accounts.py | ||
| app.py | ||
| audit.py | ||
| climate.py | ||
| db.py | ||
| grading.py | ||
| grid.py | ||
| migrate.py | ||
| models.py | ||
| notify.py | ||
| places.py | ||
| requirements-dev.txt | ||
| requirements.txt | ||
| schemas.py | ||
| store.py | ||
| users.py | ||
| views.py | ||