{"id":51518960,"url":"https://github.com/jwtracy/5-3-1-program","last_synced_at":"2026-07-08T14:01:09.647Z","repository":{"id":368461421,"uuid":"1285162570","full_name":"jwtracy/5-3-1-program","owner":"jwtracy","description":"A private, single-user 5/3/1 strength program tracker — Next.js + SQLite. Built with Claude Code.","archived":false,"fork":false,"pushed_at":"2026-06-30T16:39:03.000Z","size":504,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-30T18:15:48.856Z","etag":null,"topics":["531","nextjs","powerlifting","self-hosted","sqlite"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jwtracy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-06-30T14:36:31.000Z","updated_at":"2026-06-30T16:39:34.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jwtracy/5-3-1-program","commit_stats":null,"previous_names":["jwtracy/5-3-1-program"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/jwtracy/5-3-1-program","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwtracy%2F5-3-1-program","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwtracy%2F5-3-1-program/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwtracy%2F5-3-1-program/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwtracy%2F5-3-1-program/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jwtracy","download_url":"https://codeload.github.com/jwtracy/5-3-1-program/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwtracy%2F5-3-1-program/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35266857,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-08T02:00:06.796Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["531","nextjs","powerlifting","self-hosted","sqlite"],"created_at":"2026-07-08T14:01:08.590Z","updated_at":"2026-07-08T14:01:09.639Z","avatar_url":"https://github.com/jwtracy.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 5/3/1 Program Tracker\n\nA private, mobile-first web app for running Jim Wendler's **5/3/1** strength program.\nIt prescribes each session from your training maxes, tracks the 4-week cycle automatically,\nlogs every set, and lays the week out as a calendar that interleaves lifting with cardio.\nIt also charts estimated 1RM, powerlifting total, body weight, and weekly cardio over time,\nand includes a macro calculator for nutrition targets.\n\n\u003e Built end-to-end with the [Claude Code](https://claude.com/claude-code) CLI. Screenshots\n\u003e below use generated demo data (`pnpm db:seed-demo`) over a 3-month window.\n\n## Features\n\n### Weekly calendar\nThe home screen is a fixed Mon–Sun template that interleaves the four 5/3/1 lifts with\nday-of-week cardio (a HIGH-intensity day and a LOW-intensity day). Logged sessions show struck\nthrough; the next incomplete session is highlighted. A generic \"log a session\" dialog lets you\nrecord any workout or cardio on any day (defaulting to today).\n\n![Home weekly calendar](docs/screenshots/home.png)\n\n### Set-by-set logging\nEach main lift shows its 5/3/1 prescription per set (percentage × reps, AMRAP \"+\" on the top\nset) computed from your training max, rounded **up** to the nearest 5 lb. Bench day runs both\nBench Press and Rows as 5/3/1 lifts. Accessories log freely; timed movements (e.g. Back\nExtensions) log a **static hold in seconds** instead of reps. A per-exercise **Intensity** chip\nand a single **Notes** field round it out. Logging the last workout of week 4 rolls the cycle\nover and bumps every training max (+5 upper / +10 lower).\n\n![Logging a workout](docs/screenshots/log-bench.png)\n\n### History, inspection \u0026 editing\nEvery session is saved and browsable. Tap a card to inspect the full per-set breakdown, and\nreopen any past session prefilled to edit it in place.\n\n![History with inspection modal](docs/screenshots/history-modal.png)\n\n### Progress charts\nPer lift, your work-set weight (color-coded by the 5s / 3s / 1s week) overlaid with the **Epley\nestimated 1RM** from each AMRAP set, plus a **theoretical total** (squat + bench + deadlift), a\n**body-weight** trend, and **weekly cardio minutes** (HIGH vs LOW) against dashed weekly targets —\nall across 1mo / 3mo / 6mo / 1yr windows.\n\n![Progress charts](docs/screenshots/progress.png)\n\n### Nutrition \u0026 body weight\nA macro calculator derives daily protein / fat / carb targets from your TDEE, a weekly\nweight-loss rate, a protein floor, and a fat percentage. Saving your targets also records the\ncurrent weight as a weigh-in, which feeds the body-weight chart on Progress.\n\n![Nutrition macro calculator](docs/screenshots/nutrition.png)\n\n### Settings: training maxes + pause\nEdit each lift's training max, override the program state, and **pause the program** when\ntravelling, sick, or injured so logging won't advance the cycle. A 1RM calculator and CSV\nexport round out the app.\n\n![Settings](docs/screenshots/settings.png)\n\n## Use it yourself\n\n\u003e **Heads up — this is built for one person.** It intentionally does **not** have a rich\n\u003e feature set or a library of exercises for customizing plans. Requests for those features will\n\u003e unfortunately be ignored, though **contributions are welcome** (see [Contributing](#contributing)).\n\nThe easiest path is to **fork this repo to your own GitHub account**, then run it locally:\n\n```bash\n# 1. Fork on GitHub, then clone your fork\ngit clone https://github.com/\u003cyou\u003e/5-3-1-program.git\ncd 5-3-1-program\n\n# 2. Install tooling\n#    - Node.js 20+  (https://nodejs.org)\n#    - pnpm         (https://pnpm.io/installation, e.g. `corepack enable pnpm`)\npnpm install\n\n# 3. Create the local database and seed it\npnpm db:migrate     # creates ./data/app.db\npnpm db:seed        # one user + the default exercise catalog + training-max rows\n\n# 4. Run it\npnpm dev            # http://localhost:3000\n```\n\nThen open **Settings** and enter your training maxes (90% of your 1RM for each lift) — the app\nprescribes everything from there. Want to see it full of data first? Point at a throwaway DB\nand load the demo generator:\n\n```bash\nrm -f data/demo.db\nDATABASE_PATH=data/demo.db pnpm db:migrate\nDATABASE_PATH=data/demo.db pnpm db:seed\nDATABASE_PATH=data/demo.db pnpm db:seed-demo   # ~3 months of sessions\nDATABASE_PATH=data/demo.db pnpm dev\n```\n\n### Editing with an AI assistant\n\nThis whole app was written with the Claude Code CLI, so **sweeping changes are approachable**\neven if you're not deep in the stack — open it in an AI coding assistant and describe what you\nwant. The useful entry points:\n\n- **Exercise catalog / your split** → `src/db/seed.ts`\n- **5/3/1 math** (week percentages, rounding, 1RM) → `src/lib/program.ts`\n- **Pages \u0026 UI** → `src/app/*` and `src/components/*`\n- **Schema** → `src/db/schema.ts` (then `pnpm db:generate` to create a migration)\n\n### Hosting\n\nTo run it on your own always-on box, see **[docs/hosting-aws.md](docs/hosting-aws.md)** — a\nsingle small VM behind nginx (TLS + IP allowlist), with the included `deploy/` scripts. Any\nLinux VM works; the scripts assume Amazon Linux 2023.\n\n## Contributing\n\nPRs welcome, especially fixes and quality-of-life improvements. For larger changes, open an\nissue first to discuss. Keep the app's single-user, low-config spirit; please run `pnpm lint`\nand `pnpm build` before submitting.\n\n## Stack\n\n- **Next.js 16** (App Router, server actions, standalone output) + **React 19**\n- **SQLite** via **better-sqlite3** + **Drizzle ORM** (migrations in `drizzle/`)\n- **Tailwind CSS v4** + **@base-ui/react** primitives\n- Hand-rolled SVG charts (zero charting dependencies)\n\n## Scripts\n\n| Script | Purpose |\n|---|---|\n| `pnpm dev` / `pnpm build` / `pnpm start` | Next.js dev / production build (webpack) / serve |\n| `pnpm db:generate` | Generate a migration from `src/db/schema.ts` |\n| `pnpm db:migrate` | Apply migrations to `DATABASE_PATH` (default `./data/app.db`) |\n| `pnpm db:seed` | Seed the user + exercise catalog (idempotent) |\n| `pnpm db:seed-demo` | Fill a DB with ~3 months of demo sessions (never run on a real DB) |\n| `pnpm db:studio` | Drizzle Studio (browse the DB) |\n\n## License\n\n[MIT](LICENSE)\n\n## Program reference\n\n5/3/1 details: \u003chttps://exrx.net/WeightTraining/Powerlifting/531\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjwtracy%2F5-3-1-program","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjwtracy%2F5-3-1-program","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjwtracy%2F5-3-1-program/lists"}