summaryrefslogtreecommitdiff
path: root/templates
diff options
context:
space:
mode:
Diffstat (limited to 'templates')
-rw-r--r--templates/base.html29
-rw-r--r--templates/dashboard.html63
-rw-r--r--templates/exercises.html62
-rw-r--r--templates/override.html33
-rw-r--r--templates/session-complete.html46
-rw-r--r--templates/session.html80
-rw-r--r--templates/setup.html56
7 files changed, 369 insertions, 0 deletions
diff --git a/templates/base.html b/templates/base.html
new file mode 100644
index 0000000..472d827
--- /dev/null
+++ b/templates/base.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <title>HITO{% block title %}{% endblock %}</title>
+ <link rel="stylesheet" href="/static/css/hito.css">
+</head>
+<body>
+ <main>
+ <header>
+ <a href="/" class="logo-link"><h1 class="logo">HITO</h1></a>
+ <p class="subtitle">High Intensity Tracker Online</p>
+ </header>
+
+ {% block content %}{% endblock %}
+
+ <footer>
+ {% block quote %}
+ <blockquote>
+ &ldquo;The objective of all rational inquiry is to establish principles
+ which enable us to understand and predict reality.&rdquo;
+ <cite>&mdash; Mike Mentzer</cite>
+ </blockquote>
+ {% endblock %}
+ </footer>
+ </main>
+</body>
+</html>
diff --git a/templates/dashboard.html b/templates/dashboard.html
new file mode 100644
index 0000000..da294ee
--- /dev/null
+++ b/templates/dashboard.html
@@ -0,0 +1,63 @@
+{% extends "base.html" %}
+
+{% block title %} — Dashboard{% endblock %}
+
+{% block content %}
+<section class="dashboard">
+
+ {% if ready %}
+ <div class="status ready">
+ <h2>YOU ARE READY</h2>
+ <p class="next-workout">Today you train <strong>Day {{ next_day }}: {{ next_day_name }}</strong>.</p>
+ <a href="/session" class="btn-primary">BEGIN SESSION</a>
+ </div>
+ {% else %}
+ <div class="status recovering">
+ <h2>RECOVERY IN PROGRESS</h2>
+ <p class="days-remaining">
+ <span class="big-number">{{ days_remaining }}</span>
+ <span class="label">day{{ days_plural }} remaining</span>
+ </p>
+ <p class="next-date">Next session prescribed for <strong>{{ next_date }}</strong>.</p>
+ <p class="recovery-reason">{{ reason }}</p>
+ <a href="/override" class="btn-warning">OVERRIDE RECOVERY</a>
+ </div>
+ {% endif %}
+
+ {% if has_history %}
+ <div class="history">
+ <h3>Recent Sessions</h3>
+ {% for session in sessions %}
+ <div class="history-entry">
+ <span class="history-date">{{ session.date }}</span>
+ <span class="history-day">Day {{ session.day }}: {{ session.day_name }}</span>
+ {% if session.override %}
+ <span class="history-badge override">OVERRIDE</span>
+ {% endif %}
+ </div>
+ {% endfor %}
+ </div>
+ {% endif %}
+
+ <div class="nav-links">
+ <a href="/exercises">Configure Exercises</a>
+ </div>
+
+</section>
+{% endblock %}
+
+{% block quote %}
+{% if ready %}
+<blockquote>
+ &ldquo;Every single workout must be a step forward if you are to get anywhere
+ with your training.&rdquo;
+ <cite>&mdash; Mike Mentzer</cite>
+</blockquote>
+{% else %}
+<blockquote>
+ &ldquo;Rest is not a sign of weakness. It is the very process by which
+ the body grows stronger.&rdquo;
+ <cite>&mdash; Mike Mentzer</cite>
+</blockquote>
+{% endif %}
+{% endblock %}
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">&rarr; {{ 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>
+ &ldquo;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.&rdquo;
+ <cite>&mdash; Mike Mentzer</cite>
+</blockquote>
+{% endblock %}
diff --git a/templates/override.html b/templates/override.html
new file mode 100644
index 0000000..02b6a3c
--- /dev/null
+++ b/templates/override.html
@@ -0,0 +1,33 @@
+{% extends "base.html" %}
+
+{% block title %} — Override Recovery{% endblock %}
+
+{% block content %}
+<section class="override-page">
+ <h2>OVERRIDE RECOVERY GATE</h2>
+
+ <div class="warning-block">
+ <p class="warning-text">{{ warning }}</p>
+ </div>
+
+ <div class="override-info">
+ <p>Days remaining in prescribed recovery: <strong>{{ days_remaining }}</strong></p>
+ <p>Recommended next session: <strong>{{ next_date }}</strong></p>
+ </div>
+
+ <form method="post" action="/override/confirm">
+ <div class="override-actions">
+ <button type="submit" class="btn-danger">I UNDERSTAND. PROCEED.</button>
+ <a href="/" class="btn-secondary">RETURN TO DASHBOARD</a>
+ </div>
+ </form>
+</section>
+{% endblock %}
+
+{% block quote %}
+<blockquote>
+ &ldquo;To act against one&rsquo;s own rational judgment is to act against
+ one&rsquo;s own interests.&rdquo;
+ <cite>&mdash; Mike Mentzer</cite>
+</blockquote>
+{% endblock %}
diff --git a/templates/session-complete.html b/templates/session-complete.html
new file mode 100644
index 0000000..8cd18b3
--- /dev/null
+++ b/templates/session-complete.html
@@ -0,0 +1,46 @@
+{% extends "base.html" %}
+
+{% block title %} — Session Complete{% endblock %}
+
+{% block content %}
+<section class="session-complete">
+ <h2>Session Complete</h2>
+
+ <div class="progression-results">
+ {% for result in results %}
+ <div class="result-entry {{ result.status }}">
+ <span class="exercise-name">{{ result.exercise_name }}</span>
+ <span class="result-text">{{ result.text }}</span>
+ </div>
+ {% endfor %}
+ </div>
+
+ {% if has_increases %}
+ <p class="summary increase">
+ Weight increased on {{ increase_count }} exercise{{ increase_plural }}.
+ </p>
+ {% endif %}
+
+ {% if has_stalls %}
+ <p class="summary stall">
+ {{ stall_count }} stall{{ stall_plural }} detected. Extended recovery is indicated.
+ </p>
+ {% endif %}
+
+ <div class="recovery-info">
+ <h3>Recovery</h3>
+ <p>Your next session is prescribed for <strong>{{ next_date }}</strong>.</p>
+ <p class="recovery-reason">{{ recovery_reason }}</p>
+ </div>
+
+ <a href="/" class="btn-primary">RETURN TO DASHBOARD</a>
+</section>
+{% endblock %}
+
+{% block quote %}
+<blockquote>
+ &ldquo;The muscles grow during rest, not during training. Training is merely
+ the stimulus; rest is where adaptation occurs.&rdquo;
+ <cite>&mdash; Mike Mentzer</cite>
+</blockquote>
+{% endblock %}
diff --git a/templates/session.html b/templates/session.html
new file mode 100644
index 0000000..c419697
--- /dev/null
+++ b/templates/session.html
@@ -0,0 +1,80 @@
+{% extends "base.html" %}
+
+{% block title %} — Day {{ day_number }}: {{ day_name }}{% endblock %}
+
+{% block content %}
+<section class="session">
+ <h2>Day {{ day_number }}: {{ day_name }}</h2>
+
+ <p class="instruction">
+ Perform each set to momentary muscular failure within the prescribed rep range.
+ Record the weight used and repetitions achieved. Do not exceed the prescribed sets.
+ </p>
+
+ <form method="post" action="/session/submit">
+ {% for group in groups %}
+ <fieldset class="exercise-group {{ group.type }}">
+ {% ifequal group.type "superset" %}
+ <legend class="group-label">Pre-Exhaust Superset</legend>
+ {% else %}
+ <legend class="group-label">Straight Set</legend>
+ {% endifequal %}
+
+ {% for exercise in group.exercises %}
+ <div class="exercise-entry">
+ <h3 class="exercise-name">{{ exercise.name }}</h3>
+ <p class="prescription">
+ Target: <strong>{{ exercise.target_weight }} kg</strong> &times;
+ <strong>{{ exercise.rep_low }}&ndash;{{ exercise.rep_high }}</strong> reps
+ </p>
+
+ {% for set in exercise.sets %}
+ <div class="set-row">
+ <span class="set-label">Set {{ set.number }}</span>
+ <input type="hidden" name="exercise-id-{{ set.field_key }}" value="{{ exercise.id }}">
+ <input type="hidden" name="set-number-{{ set.field_key }}" value="{{ set.number }}">
+ <input type="hidden" name="prescribed-weight-{{ set.field_key }}" value="{{ exercise.target_weight }}">
+ <div class="input-group">
+ <input type="number"
+ name="actual-weight-{{ set.field_key }}"
+ value="{{ exercise.target_weight }}"
+ min="0"
+ step="2.5"
+ required>
+ <span class="unit">kg</span>
+ </div>
+ <div class="input-group">
+ <input type="number"
+ name="actual-reps-{{ set.field_key }}"
+ min="0"
+ max="30"
+ placeholder="reps"
+ required>
+ <span class="unit">reps</span>
+ </div>
+ <label class="failure-check">
+ <input type="checkbox"
+ name="to-failure-{{ set.field_key }}"
+ value="1"
+ checked>
+ Failure
+ </label>
+ </div>
+ {% endfor %}
+ </div>
+ {% endfor %}
+ </fieldset>
+ {% endfor %}
+
+ <button type="submit" class="btn-primary">LOG SESSION</button>
+ </form>
+</section>
+{% endblock %}
+
+{% block quote %}
+<blockquote>
+ &ldquo;One set of an exercise, carried to a point of momentary muscular failure,
+ is all that is required to stimulate an increase in strength and size.&rdquo;
+ <cite>&mdash; Mike Mentzer</cite>
+</blockquote>
+{% endblock %}
diff --git a/templates/setup.html b/templates/setup.html
new file mode 100644
index 0000000..3653c06
--- /dev/null
+++ b/templates/setup.html
@@ -0,0 +1,56 @@
+{% extends "base.html" %}
+
+{% block title %} — Setup{% endblock %}
+
+{% block content %}
+<section class="setup">
+ <h2>Begin</h2>
+
+ <p class="instruction">
+ Select your training experience level. This determines your starting weights.
+ The system will correct them rapidly through training — err on the side of
+ caution. Ego has no place here.
+ </p>
+
+ <form method="post" action="/setup/submit">
+ <div class="level-choices">
+ <label class="level-choice">
+ <input type="radio" name="level" value="beginner" checked>
+ <div class="choice-card">
+ <span class="choice-title">NOVICE</span>
+ <span class="choice-desc">Under 1 year of serious training.<br>
+ Learning proper form and building base strength.</span>
+ </div>
+ </label>
+
+ <label class="level-choice">
+ <input type="radio" name="level" value="intermediate">
+ <div class="choice-card">
+ <span class="choice-title">INTERMEDIATE</span>
+ <span class="choice-desc">1&ndash;3 years of consistent training.<br>
+ Comfortable with compound movements under load.</span>
+ </div>
+ </label>
+
+ <label class="level-choice">
+ <input type="radio" name="level" value="advanced">
+ <div class="choice-card">
+ <span class="choice-title">ADVANCED</span>
+ <span class="choice-desc">3+ years of dedicated training.<br>
+ Near or past initial strength plateaus.</span>
+ </div>
+ </label>
+ </div>
+
+ <button type="submit" class="btn-primary">BEGIN TRAINING</button>
+ </form>
+</section>
+{% endblock %}
+
+{% block quote %}
+<blockquote>
+ &ldquo;The first step in any rational endeavor is to identify the facts of reality
+ relevant to one&rsquo;s purpose.&rdquo;
+ <cite>&mdash; Mike Mentzer</cite>
+</blockquote>
+{% endblock %}
Copyright 2019--2026 Marius PETER