diff options
| author | Marius Peter <dev@marius-peter.com> | 2026-07-18 23:23:35 +0200 |
|---|---|---|
| committer | Marius Peter <dev@marius-peter.com> | 2026-07-18 23:23:35 +0200 |
| commit | 753e25e99ddf57be78ff27ad89cb7e1bbc99d041 (patch) | |
| tree | 43db69ec341520f2923f2f13d0cd8846a9acac35 /templates/exercises.html | |
Initial commit: HITO MVP
Heavy Duty I prescriptive training system encoding Mentzer's methodology.
- 4-day split program (Chest & Back, Legs, Shoulders, Arms)
- Prescription engine with pre-exhaust superset structure
- Strict progression logic (+5kg large / +2.5kg small muscles)
- Recovery gating with stall-based extension and override
- Onboarding via experience level (Novice/Intermediate/Advanced)
- Session logging with full progression analysis
- Exercise substitution (33 alternatives for 17 canonical movements)
- Objectivist aesthetic: black/gold, serif, rectilinear
Stack: Hunchentoot, Mito/SQLite, Djula, SBCL
Diffstat (limited to 'templates/exercises.html')
| -rw-r--r-- | templates/exercises.html | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/templates/exercises.html b/templates/exercises.html new file mode 100644 index 0000000..cd7aa54 --- /dev/null +++ b/templates/exercises.html @@ -0,0 +1,62 @@ +{% extends "base.html" %} + +{% block title %} — Exercises{% endblock %} + +{% block content %} +<section class="exercises-page"> + <h2>Exercise Configuration</h2> + + <p class="instruction"> + The movement pattern is what matters. Select an equivalent exercise + if your facility requires it. The program structure is preserved regardless + of which specific implement you use. + </p> + + {% for day in days %} + <div class="exercise-day"> + <h3 class="day-header">Day {{ day.number }}: {{ day.name }}</h3> + + {% for slot in day.slots %} + <div class="exercise-slot"> + <div class="slot-current"> + <span class="slot-canonical">{{ slot.canonical_name }}</span> + {% if slot.has_substitute %} + <span class="slot-active">→ {{ slot.active_name }}</span> + {% endif %} + </div> + + {% if slot.options %} + <form method="post" action="/exercises/swap" class="swap-form"> + <input type="hidden" name="canonical-id" value="{{ slot.canonical_id }}"> + <select name="substitute-id"> + <option value="0" + {% ifequal slot.active_id slot.canonical_id %}selected{% endifequal %}> + {{ slot.canonical_name }} (default) + </option> + {% for option in slot.options %} + <option value="{{ option.id }}" + {% ifequal option.id slot.active_id %}selected{% endifequal %}> + {{ option.name }} + </option> + {% endfor %} + </select> + <button type="submit" class="btn-swap">SWAP</button> + </form> + {% endif %} + </div> + {% endfor %} + </div> + {% endfor %} + + <a href="/" class="btn-secondary">RETURN TO DASHBOARD</a> +</section> +{% endblock %} + +{% block quote %} +<blockquote> + “The specific exercise is less important than the principle it serves. + What matters is that the target muscle is worked to failure through a full + range of motion.” + <cite>— Mike Mentzer</cite> +</blockquote> +{% endblock %} |