VPS And Website Tasks
Status: Active task list Owner: Core product team Last updated: 2026-07-06
Goal
Finish the remaining VPS setup, website validation, and documentation publishing work for the 3plates web experience.
Tasks
- Update
scripts/db-smoke-test.shso the persisted API round trip uses the current bearer-auth flow instead of legacyx-user-*headers. - Keep GitHub CI running the database smoke test against a live API and Postgres.
- Use VPS Setup Checklist as the canonical database setup runbook.
- Validate VPS recreation with production-like
.envvalues, Postgres bound to127.0.0.1, migrations applied, and API connectivity confirmed. - Verify GitHub Pages publishes the documentation from the
/docsfolder onmain. - Run Expo web manual acceptance for login, account linking, streak updates, workout mode selection, workout list rendering, web push registration, refresh, expiry, and sign-out.
- Validate web accessibility and responsive behavior, including keyboard navigation, semantic labels, and mobile/desktop breakpoints.
Latest local validation
- 2026-07-06:
pnpm install --frozen-lockfilepassed. - 2026-07-06:
pnpm --filter @3plates/contract testpassed. - 2026-07-06:
pnpm typecheckpassed. - 2026-07-06:
pnpm --filter @3plates/db generatereported no schema changes. - 2026-07-06:
git diff --exit-code -- packages/db/drizzlepassed. - 2026-07-06:
pnpm testpassed. - 2026-07-06: CI-style API startup plus
pnpm db:testpassed against a live local API and Postgres container. - 2026-07-06:
bash -n,shellcheck, andshfmt -dpassed forscripts/db-smoke-test.sh. - 2026-07-06: VPS
authrebuild validation passed on/root/3plateswith Node 24, pnpm 9.15.4, Docker Compose, generated.envvalues,pnpm install --frozen-lockfile,pnpm typecheck,pnpm test, a live API pluspnpm db:test, healthy loopback-only Postgres on127.0.0.1:5432, and UFW not exposing Postgres. - 2026-07-06: Public DNS resolvers returned
64.52.108.248for3spinningplates.comandapi.3spinningplates.com; the local resolver still had the previous address cached during validation. - 2026-07-06: GitHub Pages is configured with the
jekyll-gh-pages.ymlworkflow onmain; the workflow builds from./docs, recent runs passed, andhttps://christitustech.github.io/3plates/served the generated docs site. - 2026-07-06: Local Expo web acceptance passed against
http://localhost:8081and the local API onhttp://localhost:3000, covering expired bearer-token rejection, valid bearer login, session refresh, account-link OAuth start, progress and streak update, preference update, workout mode selection and published list rendering, web push token registration, and sign-out. - 2026-07-06: Local Expo web accessibility and responsive sweep passed on desktop
1366x900and mobile390x844viewports for home, sign-in, progress, preferences, workouts, and notifications, including named links/buttons, labeled inputs, keyboard tab stops, and horizontal overflow checks. - 2026-07-06: VPS Caddy activation passed with Caddy serving public
80/443, Discourse preserved on loopback backend ports forforum.christitus.com, static Expo web served from/var/www/3platesfor3spinningplates.com, and the Fastify API health route served athttps://api.3spinningplates.com/health.
Acceptance
pnpm db:testreflects the current authentication model.- CI runs
pnpm db:testwith a live API process before a push is considered green. - VPS setup has a single checklist with prerequisites, environment variables, database commands, smoke-test validation, and network/security checks.
- The VPS can be rebuilt from documented setup steps without exposing Postgres publicly.
- The web experience passes the manual account, state, notification, accessibility, and responsive checks.
- Published docs point to current requirements, setup, and task lists only.