About Volumen
Volumen is a small, fully client-side web app for building a strength-training program aligned with the ACSM 2026 resistance-training recommendations. Pick a training goal (strength, hypertrophy, power, general health), build out your weekly sessions from a database of 800+ exercises, and the app checks your sets/volume against the recommended targets per muscle group, estimates how long each session will actually take, and lets you export/import your program as JSON. Everything lives in your browser's localStorage — no backend, no accounts, no tracking.
⚠️ This project is a vibe-coding experiment
This entire codebase — every line, every test, every design decision — was written by prompting Claude (via Claude Code), not by hand. There was no spec-driven-development framework, no ticket system, no formal design doc, no scaffolding harness of any kind. Just a back-and-forth conversation: a feature request in plain English (often in French), Claude reading the existing code, writing the implementation, running the tests, and reporting back. Bugs got described the same way a user would describe them ("the import doesn't work") rather than filed with a root-cause diagnosis.
The goal was to see how far pure conversational prompting could carry a real, working, tested app — not to demonstrate a polished engineering process. Take the app with that in mind: it's the product of an experiment in AI-driven ("vibe") coding, not a reference architecture.
How it was actually built
- Bootstrap — started from the standard Astro minimal template with the React integration added for interactive components.
- Domain data first — dropped in two source datasets (see Sources below) and asked Claude to model the domain: training goals, exercises, and the program/session/exercise shape.
- Core loop, iteratively prompted — goal selection → session/exercise editing → per-muscle volume calculation → compliance checking against the ACSM rules → export/import as JSON, each added as its own prompt/feature request.
- i18n pass — English/French support, implemented as a small hand-rolled lookup system (no i18n library) plus a hand-translated subset of exercise names, with a tested English fallback for anything untranslated.
- Session time estimation — a feature request ("show me how long each session/exercise will take, plus a time margin input") was implemented, then run through a multi-agent review loop in the same conversation: one agent implemented it, then three more ran in parallel against the diff — one re-reviewing the code, one driving a real browser via Playwright to validate the UI, and one independently re-deriving the time-estimation math by hand.
- Bug fixes from plain-English reports — e.g. "the import feature doesn't work" was investigated from scratch rather than assumed; the actual defect (a field silently dropped from the exported JSON schema) was found and fixed with regression tests added after the fact.
- Tuning by feel — later prompts adjusted the time-estimation model itself (tempo assumption, equipment-change overhead) purely based on intuition about what felt realistic, not a formal study.
- Whole-project review pass — a dedicated review/fix/validate loop ran across the entire codebase: one agent audited everything from scratch and flagged concrete bugs (e.g. a silent-data-loss edge case where an unclamped numeric input could wipe the whole stored program on reload), a second agent fixed each finding with regression tests, and a third independently re-drove the fixed app through real user journeys in a browser before signing off.
Testing throughout was Vitest for the domain logic and Playwright for end-to-end flows, both driven by Claude, with the human in the loop reviewing behavior rather than diffs line by line.
Stack & credits
- Astro — static-first site framework, hosts a single React island.
- React — the interactive program builder.
- Zod — schema validation for the localStorage program shape and the export/import JSON file format.
- @anyblades/blades — the classless/Pico-inspired CSS framework used for base styling.
- Vitest — unit tests for the domain logic.
- Playwright — end-to-end browser tests.
- TypeScript throughout.
- Claude (Anthropic), via Claude Code — wrote the entire application, tests, and documentation, from natural-language prompts.
Sources
- Training-goal rules — summarized from the American College of Sports Medicine's 2026 position stand, "Resistance Training Prescription for Muscle Function, Hypertrophy, and Physical Performance in Healthy Adults: An Overview of Reviews", published in Medicine & Science in Sports & Exercise (April 2026), an umbrella review of 137 systematic reviews (~30,000 participants). Full text.
- Exercise database — from yuhonas/free-exercise-db (~870 entries), itself restructured from an original dataset by Ollie Jennings (wrkout/exercises.json). Exercise names have a partial hand-authored French translation layer, falling back to the original English name where no translation exists yet.
License
The application code is MIT-licensed. That license does not extend to the third-party data bundled with the app — the exercise database is public domain (Unlicense) and credited above out of courtesy, while the ACSM training-goal data is a condensed summary of a copyrighted scientific publication, used as a reference snapshot within the app rather than freely redistributable data. See the source repository's README.md and LICENSE files for full details, and the legal notice for publisher and hosting information.