- scripts/phase0-provision.sh: idempotent root setup (nginx, PostgreSQL, Redis, certbot/TLS, UFW). Opens 22/2222/80/443 before enabling UFW so SSH and Gitea git-SSH can't be locked out. Redis/Postgres stay localhost-only. - infra/nginx/feedthepyre.com.conf: vhost serving the status page; commented web(:3000)/api(:4000) reverse-proxy blocks ready for app deploy. - infra/status/: data-driven dev status dashboard (status.json + gen-status.mjs + prebuilt index.html), served at feedthepyre.com. - ecosystem.config.cjs (PM2), infra/systemd/pm2-pyre.service, infra/logrotate/pyre, scripts/backup.sh — process mgmt + ops (inert until apps are built). Built by 4 parallel agents, reviewed by 2 audit agents; audit fixes applied (logs dir creation, port-citation accuracy, status truthfulness). pm2 installed user-level. Privileged steps gated on `sudo bash scripts/phase0-provision.sh`. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1.5 KiB
PYRE Status Dashboard
A static, self-contained dark "ember"-themed page the team uses to track PYRE MVP progress. It is a snapshot, not live telemetry.
Files
status.json— the single source of truth. All content on the page (phases, checklists, infra, dates, links) comes from here.index.html— the prebuilt rendered page. Committed so the page works even before anyone runs the generator. Self-contained: inline CSS, no external requests, no JS.README.md— this file.
Editing & regenerating
-
Edit
status.json— flip an item's"done"totrue, update a phase"state"(todo/in_progress/done), or bump"updated". -
Regenerate the page from the repo root:
node scripts/gen-status.mjsThe generator is dependency-free (plain Node ESM, no npm install). It reads
infra/status/status.jsonand rewritesinfra/status/index.html, recomputing the overall % complete from the item done-counts. It prints the output path when finished. -
Commit the regenerated
index.htmlalongside thestatus.jsonchange so the prebuilt page stays consistent with the data.
Deployment
The provision script deploys infra/status/* to /var/www/feedthepyre/status,
and nginx serves it as the site root (feedthepyre.com) until the real PYRE app
ships. Because index.html is prebuilt and self-contained, deployment is a plain
file copy — no build step or generator run is required on the server.