chore(status): mark Phase 0 complete; add deploy-status.sh
Server provisioning ran successfully: nginx + PostgreSQL + Redis live, UFW active (22/2222/80/443), TLS issued for feedthepyre.com (+www), pm2-pyre service enabled. Status dashboard updated (Phase 0 done; infra all green). Adds scripts/deploy-status.sh for friction-free status-page redeploys. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -147,28 +147,28 @@
|
||||
<section class="overall">
|
||||
<div class="overall-head">
|
||||
<h2>Overall MVP Progress</h2>
|
||||
<span class="overall-pct">12%</span>
|
||||
<span class="overall-pct">16%</span>
|
||||
</div>
|
||||
<div class="bar"><span style="width: 12%"></span></div>
|
||||
<p class="count">6 of 50 phase deliverables complete</p>
|
||||
<div class="bar"><span style="width: 16%"></span></div>
|
||||
<p class="count">8 of 50 phase deliverables complete</p>
|
||||
</section>
|
||||
|
||||
<h2 class="section">Development Phases</h2>
|
||||
<div class="grid">
|
||||
<article class="card in_progress">
|
||||
<article class="card done">
|
||||
<header class="card-head">
|
||||
<h3><span class="phase-id">Phase 0</span> Server & Repo Setup</h3>
|
||||
<span class="badge in_progress">IN PROGRESS</span>
|
||||
<span class="badge done">DONE</span>
|
||||
</header>
|
||||
<p class="count">6 / 8 complete</p>
|
||||
<p class="count">8 / 8 complete</p>
|
||||
<ul class="checklist">
|
||||
<li class="item done"><span class="mark">✓</span><span>VPS configured (pyre user, SSH key, root disabled, UFW, Fail2ban)</span></li>
|
||||
<li class="item done"><span class="mark">✓</span><span>Claude Code installed</span></li>
|
||||
<li class="item done"><span class="mark">✓</span><span>Repo initialized</span></li>
|
||||
<li class="item done"><span class="mark">✓</span><span>pnpm workspace created</span></li>
|
||||
<li class="item done"><span class="mark">✓</span><span>web/api/worker skeleton</span></li>
|
||||
<li class="item"><span class="mark">○</span><span>Postgres + Redis running</span></li>
|
||||
<li class="item"><span class="mark">○</span><span>nginx configured</span></li>
|
||||
<li class="item done"><span class="mark">✓</span><span>Postgres + Redis running</span></li>
|
||||
<li class="item done"><span class="mark">✓</span><span>nginx configured</span></li>
|
||||
<li class="item done"><span class="mark">✓</span><span>Environment templates</span></li>
|
||||
</ul>
|
||||
</article>
|
||||
@@ -281,7 +281,7 @@
|
||||
|
||||
<h2 class="section">Infrastructure</h2>
|
||||
<div class="infra-panel">
|
||||
<p class="count">6 / 11 provisioned</p>
|
||||
<p class="count">11 / 11 provisioned</p>
|
||||
<ul class="checklist infra-grid">
|
||||
<li class="item done"><span class="mark">✓</span><span>Node.js 22</span></li>
|
||||
<li class="item done"><span class="mark">✓</span><span>pnpm</span></li>
|
||||
@@ -289,11 +289,11 @@
|
||||
<li class="item done"><span class="mark">✓</span><span>DNS (feedthepyre.com)</span></li>
|
||||
<li class="item done"><span class="mark">✓</span><span>Monorepo scaffold + docs</span></li>
|
||||
<li class="item done"><span class="mark">✓</span><span>pnpm install + typecheck clean</span></li>
|
||||
<li class="item"><span class="mark">○</span><span>nginx</span></li>
|
||||
<li class="item"><span class="mark">○</span><span>PostgreSQL</span></li>
|
||||
<li class="item"><span class="mark">○</span><span>Redis</span></li>
|
||||
<li class="item"><span class="mark">○</span><span>PM2</span></li>
|
||||
<li class="item"><span class="mark">○</span><span>TLS (Let's Encrypt)</span></li>
|
||||
<li class="item done"><span class="mark">✓</span><span>nginx</span></li>
|
||||
<li class="item done"><span class="mark">✓</span><span>PostgreSQL</span></li>
|
||||
<li class="item done"><span class="mark">✓</span><span>Redis</span></li>
|
||||
<li class="item done"><span class="mark">✓</span><span>PM2 (installed + boot service)</span></li>
|
||||
<li class="item done"><span class="mark">✓</span><span>TLS (Let's Encrypt)</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -8,15 +8,15 @@
|
||||
{
|
||||
"id": 0,
|
||||
"name": "Server & Repo Setup",
|
||||
"state": "in_progress",
|
||||
"state": "done",
|
||||
"items": [
|
||||
{ "label": "VPS configured (pyre user, SSH key, root disabled, UFW, Fail2ban)", "done": true },
|
||||
{ "label": "Claude Code installed", "done": true },
|
||||
{ "label": "Repo initialized", "done": true },
|
||||
{ "label": "pnpm workspace created", "done": true },
|
||||
{ "label": "web/api/worker skeleton", "done": true },
|
||||
{ "label": "Postgres + Redis running", "done": false },
|
||||
{ "label": "nginx configured", "done": false },
|
||||
{ "label": "Postgres + Redis running", "done": true },
|
||||
{ "label": "nginx configured", "done": true },
|
||||
{ "label": "Environment templates", "done": true }
|
||||
]
|
||||
},
|
||||
@@ -119,10 +119,10 @@
|
||||
{ "label": "DNS (feedthepyre.com)", "done": true },
|
||||
{ "label": "Monorepo scaffold + docs", "done": true },
|
||||
{ "label": "pnpm install + typecheck clean", "done": true },
|
||||
{ "label": "nginx", "done": false },
|
||||
{ "label": "PostgreSQL", "done": false },
|
||||
{ "label": "Redis", "done": false },
|
||||
{ "label": "PM2", "done": false },
|
||||
{ "label": "TLS (Let's Encrypt)", "done": false }
|
||||
{ "label": "nginx", "done": true },
|
||||
{ "label": "PostgreSQL", "done": true },
|
||||
{ "label": "Redis", "done": true },
|
||||
{ "label": "PM2 (installed + boot service)", "done": true },
|
||||
{ "label": "TLS (Let's Encrypt)", "done": true }
|
||||
]
|
||||
}
|
||||
|
||||
30
scripts/deploy-status.sh
Executable file
30
scripts/deploy-status.sh
Executable file
@@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env bash
|
||||
# =============================================================================
|
||||
# Regenerate the PYRE dev-status page and deploy it to the nginx webroot.
|
||||
# =============================================================================
|
||||
# Usage: bash scripts/deploy-status.sh
|
||||
#
|
||||
# Workflow: edit infra/status/status.json -> run this -> the live page at
|
||||
# https://feedthepyre.com updates.
|
||||
#
|
||||
# After a ONE-TIME `sudo chown -R pyre:pyre /var/www/feedthepyre`, this runs
|
||||
# WITHOUT sudo (nginx/www-data still serves the world-readable files fine).
|
||||
# Until then, run it with sudo.
|
||||
# =============================================================================
|
||||
set -euo pipefail
|
||||
|
||||
REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
WEBROOT="/var/www/feedthepyre/status"
|
||||
|
||||
node "${REPO_DIR}/scripts/gen-status.mjs"
|
||||
|
||||
if [[ -d "${WEBROOT}" && -w "${WEBROOT}" ]]; then
|
||||
install -m 0644 "${REPO_DIR}/infra/status/index.html" "${WEBROOT}/index.html"
|
||||
install -m 0644 "${REPO_DIR}/infra/status/status.json" "${WEBROOT}/status.json"
|
||||
echo "Deployed status page -> ${WEBROOT}"
|
||||
else
|
||||
echo "ERROR: ${WEBROOT} is missing or not writable by '$(whoami)'." >&2
|
||||
echo "Run this script with sudo, OR make updates sudo-free once with:" >&2
|
||||
echo " sudo chown -R pyre:pyre /var/www/feedthepyre" >&2
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user