# Proof of Work Self-hosted multi-user workout planner and logger. Plan training cycles, log daily workouts, search your history, and curate a shared exercise library across everyone on the instance. Distributed as a StartOS 0.4 sideload package. ## Repo layout ``` proof-of-work/ Next.js app (TypeScript, Prisma + SQLite, Tailwind, PWA) start9/0.4/ StartOS 0.4 package wrapper (manifest, Dockerfile, entrypoint, version graph, change-credentials action) ``` Everything else is generated at build time. ## Local development ```sh cd proof-of-work npm install npx prisma db push # create the dev DB at prisma/data/app.db npm run db:seed # admin@local / workout123 + curated exercise library npm run dev # http://localhost:3000 ``` ## Building the StartOS package See **[start9/0.4/DEPLOY_040.md](start9/0.4/DEPLOY_040.md)** for the full deployment / cutover guide. Short version: ```sh cd start9/0.4 npm ci make clean make x86 # produces proof-of-work_x86_64.s9pk make install # sideload to the host in ~/.startos/config.yaml ``` ## Curated exercise library `proof-of-work/prisma/exercises.seed.json` is the canonical library shipped to every install. It seeds fresh installs (via `prisma/seed.ts`) and is re-applied on every boot to existing installs (via `docker_entrypoint.sh` + `ensureExerciseLibrary.cjs`) so updates flow to all users on package upgrade. Refresh the JSON from the maintainer's live host: ```sh ./start9/0.4/refresh_seed.sh # pull a fresh /data snapshot cd proof-of-work && npm run sync-library # extract Exercise table -> JSON git diff prisma/exercises.seed.json ``` The system is additive only — removing an exercise from the JSON does not delete it from existing installs (users may have logged sets against it). Users' own custom exercises (`isCustom = true`) are never touched. ## Privacy `start9/0.4/seed/data/app.db` is your live `/data` snapshot. It contains real workout history and a bcrypt'd password hash. The top-level `.gitignore` keeps it out of git; do NOT commit it to any public repo.