Files
proof-of-work/start9/0.4
Keysat a64fee4873 Replace placeholder manifest URLs with real keysat-xyz/proof-of-work
packageRepo + upstreamRepo now point at the public GitHub repo where
this code will live. marketingUrl set to null (not yet a landing page).
2026-05-09 16:37:04 -05:00
..
2026-05-09 13:40:58 -05:00

Proof of Work Logo

Proof of Work on StartOS 0.4 (migration package)

This directory packages Proof of Work (proof-of-work) for StartOS 0.4 beta. It is the cutover package that carries your 0.3.5 data across to a new x86_64 StartOS 0.4 host.

Upstream app lives at ../../proof-of-work/ in this repo. Legacy 0.3.5 package lives at ../0.3.5/ (kept intact; do not modify). Codex's WIP 0.4 scaffold lives at ../0.4/ (kept intact; superseded by this folder).

Goals

  • Keep the package id proof-of-work so StartOS recognizes it as the same service.
  • Keep the persistent data volume main mounted at /data.
  • Keep the SQLite database at /data/app.db.
  • Preserve every existing workout, set, exercise, and preference.
  • Ship x86_64 only for 0.4 beta (sideload target).

How data preservation works

  1. seed/data/app.db holds a one-time snapshot of /data from the live 0.3.5 host (currently 1 user, 348 workouts, 164 exercises, 5720 set logs).
  2. The Dockerfile bakes that snapshot into the image at /app/seed/data/.
  3. On first boot only/data/app.db missing AND /data/.seeded absent — docker_entrypoint.sh copies the seed into /data/ and writes a .seeded marker.
  4. On every subsequent boot, /data/ is the sole source of truth; the seed in the image is ignored.

See seed/README.md for the snapshot provenance and row counts.

Image runtime

Property Value
Base image node:20-alpine (multi-stage build)
App runtime Next.js standalone + Prisma + SQLite
Entrypoint /usr/local/bin/docker_entrypoint.sh (dumb-init wrapped)
Internal port 3000
Architectures x86_64 (beta)

Build and sideload

cd start9/0.4
npm ci
make clean
make x86      # outputs proof-of-work_x86_64.s9pk

Sideload via StartOS web UI or make install (requires ~/.startos/config.yaml). Step-by-step instructions are in DEPLOY_040.md.

What is unchanged from 0.3.5

  • Package id: proof-of-work
  • Volume id: main
  • Mount path: /data
  • DB path: /data/app.db
  • Health endpoint: /api/health
  • Compat ALTER TABLE block (idempotent; no-op on a current DB)

What is new in 0.4

  • TypeScript SDK manifest under startos/
  • ExVer version (0.1.0:18) replaces the 0.3.5 4-part 0.1.0.17
  • Seed-on-first-boot with a .seeded marker and stderr logging
  • alertUpdate warning users not to Uninstall to troubleshoot
  • Self-contained Dockerfile — no references to ../0.3.5/ or ../0.4/

Follow-up releases (planned, do not ship yet)

  • v0.1.0:19 — remove the COPY seed/data \u2026 line and the seed block from the entrypoint once the cutover is confirmed. Leaves seed/ on disk unreferenced.
  • v0.1.0:19 or v0.1.0:20 — add a StartOS Package Action change-admin-credentials that updates the User row in /data/app.db (bcryptjs, salt rounds 10) so you can rename/rotate the admin from the StartOS UI.