Files
2026-07-12 10:17:17 -04:00

2.9 KiB

Phase 3 Server-Side Audit — Quick Check Recipe

Before starting any Phase 3 roadmap item, run this block to determine what's already live vs. what actually needs work. The roadmap's "NOT DONE" status is frequently stale — Phase 3.3/3.4 were fully deployed in prior sessions with no roadmap update.

One-shot audit block

# 3.1 GlitchTip — does the stack exist?
ls /opt/glitchtip 2>/dev/null || echo "3.1: not installed"

# 3.2 PB SMTP/superadmin env vars — are any set?
docker inspect pocketbase --format '{{range .Config.Env}}{{println .}}{{end}}' 2>/dev/null | grep -iE 'SMTP|SUPERADMIN' || echo "3.2: no SMTP/superadmin env"

# 3.2 PB backup cron — is one installed?
crontab -l 2>/dev/null | grep -iE 'spq|pocketbase|pb_data' || echo "3.2: no pb backup cron"

# 3.3/3.4 nginx — is the server block serving the SPA + proxying /pb?
# (If both exist, 3.3/3.4 are DONE regardless of roadmap status)
cat /etc/nginx/sites-enabled/shopproquote 2>/dev/null | head -40
curl -sI https://shopproquote.graj-media.com/ | grep -iE 'HTTP/|content-security|x-frame'

# 3.5 Structured logging — json log format in nginx?
grep -l 'json_combined\|log_format.*json' /etc/nginx/nginx.conf 2>/dev/null && echo "3.5: has json format" || echo "3.5: no json format"

# 3.5 PB log rotation — driver + limits?
docker inspect pocketbase --format '{{.HostConfig.LogConfig.Type}} {{.HostConfig.LogConfig.Config}}' 2>/dev/null
# json-file with no max-size/max-file = no rotation (needs fixing)

# 3.6 Offline banner — does the component exist?
ls src/components/OfflineBanner.tsx 2>/dev/null && echo "3.6: file exists" || echo "3.6: missing"

# 3.7 Dependency audit
npm audit 2>&1 | head -3

Interpretation

  • 3.1 — Only needs work if /opt/glitchtip doesn't exist. If it does, check docker compose ps inside it.
  • 3.2 — SMTP env vars and backup cron are both > APPROVAL REQUIRED (AGENTS.md). Never set passwords without asking.
  • 3.3/3.4 — If the nginx site block exists and serves dist/ on 443 with try_files ... /index.html and a /pb/ location, these are DONE. Do NOT re-implement from the roadmap spec.
  • 3.5 — PB container always uses json-file driver by default, but without max-size/max-file opts there's no rotation. The fix is docker update --log-driver json-file --log-opt max-size=10m --log-opt max-file=5 pocketbase — needs go-ahead.
  • 3.6 — Pure frontend, no approval needed. If the file exists and is wired in App.tsx, it's done.
  • 3.7npm audit only. If 0 vulnerabilities, it's done. Minor patch updates don't need action.

Approval rules (from AGENTS.md)

  • Do not touch nginx config without explaining the exact change and getting go-ahead.
  • Do not set or change passwords (PB superadmin, SMTP, GlitchTip DB) without explicit permission.
  • Do not make PocketBase schema changes without confirming with the user.
  • Frontend-only changes (3.6, 3.7) need no approval — just build/lint/test after.