Skip to content

Commit 784b546

Browse files
OneMuppetclaude
andcommitted
Add Foundation Milestones section to Levels page
- F1 (Foundation): Chair Sit-to-Stand, Wall Push-up, Farmer's Carry, Walk 500m. Standing only, no floor work, no gym. - F2 (Moving): Air Squat (Partial), Incline Push-up, Standing Hip Hinge, Forearm Plank 30s, Walk 1km. Floor work introduced. - F3 (Ready): Air Squat (Full), Knee Push-up, Dead Hang 15s, Forearm Plank 60s, Jog 1500m. Prepares for gym onboarding. - Visual progression path F1 > F2 > F3 > Beginner - Anchor link at /levels#foundations - FAQ JSON-LD for Foundation Milestones - Updated milestones.json and progressions.json to match - All metric, no imperial units Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 113c64e commit 784b546

5 files changed

Lines changed: 292 additions & 215 deletions

File tree

data/milestones.json

Lines changed: 40 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
{
2-
"version": "1.1.0",
3-
"description": "Foundation Milestones are trackable micro-achievements within the Beginner level. They provide progress feedback for athletes who are below the OP Beginner benchmarks. Milestones are NOT levels -- they are pre-level markers that apps can use to show early progress. Estimated timelines assume a healthy but sedentary adult training 3x/week. For deconditioned, frail, or post-injury individuals, timelines may be 2-3x longer (ICFSR consensus: 3-5 months for meaningful functional improvement).",
2+
"version": "1.2.0",
3+
"description": "Foundation Milestones are trackable micro-achievements below the Beginner level. They provide progress feedback for athletes who are below the OP Beginner benchmarks. Milestones are NOT levels. They are pre-level markers that apps can use to show early progress. Estimated timelines assume a healthy but sedentary adult training 3x/week.",
44
"milestones": [
55
{
66
"id": "F1",
77
"name": "Foundation",
88
"shortName": "F1",
99
"color": "#86EFAC",
10-
"description": "Can perform basic human movements safely. Ready to start a bodyweight exercise program.",
10+
"description": "Can perform basic human movements safely. Standing movements only, no floor work. A chair and household items are all you need.",
1111
"estimatedWeeks": "1-2",
1212
"requirements": [
1313
{
@@ -24,44 +24,37 @@
2424
"criteria": { "type": "reps", "target": 10 },
2525
"description": "10 push-ups against a wall with full range of motion"
2626
},
27-
{
28-
"movement": "glute_bridge",
29-
"name": "Glute Bridge",
30-
"category": "pulling",
31-
"criteria": { "type": "reps", "target": 10 },
32-
"description": "10 glute bridges with full hip extension"
33-
},
3427
{
3528
"movement": "farmers_carry_30s",
3629
"name": "Farmer's Carry",
37-
"category": "gymnastics",
30+
"category": "carrying",
3831
"criteria": { "type": "time", "target": 30, "unit": "seconds" },
39-
"description": "Carry two heavy bags or water bottles (approx. 5kg each) while walking for 30 seconds"
32+
"description": "Carry two heavy bags or water bottles while walking for 30 seconds"
4033
},
4134
{
42-
"movement": "walk_1km",
43-
"name": "Walk 1km",
35+
"movement": "walk_500m",
36+
"name": "Walk 500m",
4437
"category": "monostructural",
4538
"criteria": { "type": "completion" },
46-
"description": "Walk 1 kilometer without stopping"
39+
"description": "Walk 500 meters without stopping"
4740
}
4841
],
49-
"sources": ["rikli_jones_2013", "jones_rikli_1999", "nsca_essentials_2016", "bohannon_2019", "who_physical_activity_2020", "chodzko_zajko_2009"]
42+
"sources": ["rikli_jones_2013", "jones_rikli_1999", "nsca_essentials_2016", "bohannon_2019", "who_physical_activity_2020"]
5043
},
5144
{
5245
"id": "F2",
5346
"name": "Moving",
5447
"shortName": "F2",
5548
"color": "#4ADE80",
56-
"description": "Can perform bodyweight exercises with good form. Building functional capacity for daily activities and exercise.",
49+
"description": "Can perform bodyweight exercises with good form. Floor work introduced, still no gym needed.",
5750
"estimatedWeeks": "2-4",
5851
"requirements": [
5952
{
6053
"movement": "air_squat_partial",
6154
"name": "Air Squat (Partial Depth)",
6255
"category": "squatting",
63-
"criteria": { "type": "reps", "target": 20 },
64-
"description": "20 bodyweight squats to approximately parallel"
56+
"criteria": { "type": "reps", "target": 15 },
57+
"description": "15 bodyweight squats to approximately parallel"
6558
},
6659
{
6760
"movement": "incline_push_up",
@@ -71,35 +64,35 @@
7164
"description": "10 push-ups with hands on a bench-height surface"
7265
},
7366
{
74-
"movement": "hip_hinge_pvc",
75-
"name": "Hip Hinge (Broomstick)",
67+
"movement": "standing_hip_hinge",
68+
"name": "Standing Hip Hinge",
7669
"category": "pulling",
7770
"criteria": { "type": "reps", "target": 10 },
78-
"description": "10 hip hinges with broomstick along spine maintaining 3 points of contact"
71+
"description": "10 bodyweight hip hinges with flat back, hands sliding down thighs to just below knee"
7972
},
8073
{
8174
"movement": "plank_30s",
82-
"name": "Plank Hold",
83-
"category": "bodyweight",
75+
"name": "Forearm Plank",
76+
"category": "core",
8477
"criteria": { "type": "time", "target": 30, "unit": "seconds" },
8578
"description": "Hold a forearm plank for 30 seconds with neutral spine"
8679
},
8780
{
88-
"movement": "walk_run_intervals",
89-
"name": "Walk/Run 800m",
81+
"movement": "walk_1km",
82+
"name": "Walk 1km",
9083
"category": "monostructural",
91-
"criteria": { "type": "completion", "details": "800m of walk/run combination" },
92-
"description": "Complete 800 meters of walking and running in any combination"
84+
"criteria": { "type": "completion" },
85+
"description": "Walk 1 kilometer without stopping"
9386
}
9487
],
95-
"sources": ["nsca_essentials_2016", "mcgill_2015", "strand_2014", "acsm_guidelines", "fragala_2019"]
88+
"sources": ["nsca_essentials_2016", "mcgill_2015", "strand_2014", "acsm_guidelines"]
9689
},
9790
{
9891
"id": "F3",
9992
"name": "Ready",
10093
"shortName": "F3",
10194
"color": "#22C55E",
102-
"description": "Movement quality and base fitness sufficient for structured training with equipment. Ready for gym onboarding and barbell introduction.",
95+
"description": "Movement quality and base fitness sufficient for structured training. Ready for gym onboarding and barbell introduction.",
10396
"estimatedWeeks": "4-8",
10497
"requirements": [
10598
{
@@ -110,45 +103,35 @@
110103
"description": "20 bodyweight squats below parallel with good form"
111104
},
112105
{
113-
"movement": "push_up_single",
114-
"name": "Full Push-up",
106+
"movement": "knee_push_up",
107+
"name": "Knee Push-up",
115108
"category": "pressing",
116-
"criteria": { "type": "reps", "target": 1 },
117-
"description": "1 full push-up with chest to floor and full lockout"
109+
"criteria": { "type": "reps", "target": 10 },
110+
"description": "10 push-ups from knees with chest to floor and full lockout"
118111
},
119112
{
120-
"movement": "rdl_bodyweight",
121-
"name": "Romanian Deadlift (Bodyweight)",
113+
"movement": "dead_hang_15s",
114+
"name": "Dead Hang",
122115
"category": "pulling",
123-
"criteria": { "type": "reps", "target": 10 },
124-
"description": "10 bodyweight Romanian deadlifts with neutral spine"
116+
"criteria": { "type": "time", "target": 15, "unit": "seconds" },
117+
"description": "Hang from a bar for 15 seconds with straight arms"
125118
},
126119
{
127-
"movement": "dead_hang_or_carry",
128-
"name": "Dead Hang OR Farmer's Carry",
129-
"category": "gymnastics",
130-
"criteria": { "type": "either", "options": [
131-
{ "movement": "dead_hang_30s", "type": "time", "target": 30, "unit": "seconds" },
132-
{ "movement": "farmers_carry_60s", "type": "time", "target": 60, "unit": "seconds" }
133-
]},
134-
"description": "Hang from a bar for 30 seconds, OR carry two heavy bags (approx. 8kg each) for 60 seconds"
120+
"movement": "plank_60s",
121+
"name": "Forearm Plank",
122+
"category": "core",
123+
"criteria": { "type": "time", "target": 60, "unit": "seconds" },
124+
"description": "Hold a forearm plank for 60 seconds with neutral spine"
135125
},
136126
{
137-
"movement": "run_mile_any_pace",
138-
"name": "Run 1 Mile",
127+
"movement": "jog_1500m",
128+
"name": "Jog 1500m",
139129
"category": "monostructural",
140130
"criteria": { "type": "completion" },
141-
"description": "Run 1 mile (1609m) without walking breaks, at any pace"
142-
},
143-
{
144-
"movement": "plank_60s",
145-
"name": "Plank Hold (60 Seconds)",
146-
"category": "bodyweight",
147-
"criteria": { "type": "time", "target": 60, "unit": "seconds" },
148-
"description": "Hold a forearm plank for 60 seconds with neutral spine"
131+
"description": "Jog 1500 meters without walking breaks, at any pace"
149132
}
150133
],
151-
"sources": ["nsca_essentials_2016", "mcgill_2015", "strand_2014", "acsm_guidelines", "bohannon_2019", "runninglevel", "fragala_2019"]
134+
"sources": ["nsca_essentials_2016", "mcgill_2015", "strand_2014", "acsm_guidelines", "bohannon_2019"]
152135
}
153136
]
154137
}

data/progressions.json

Lines changed: 20 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -82,36 +82,26 @@
8282
{
8383
"targetMovement": "deadlift",
8484
"targetCategory": "pulling",
85-
"description": "Hip hinge progression from floor-based glute activation through barbell deadlift pattern",
85+
"description": "Hip hinge progression from standing bodyweight pattern through barbell deadlift",
8686
"steps": [
8787
{
8888
"step": 1,
89-
"movement": "glute_bridge",
90-
"name": "Glute Bridge",
91-
"description": "Lying on back, feet flat on floor, drive hips to full extension. Foundational hip extension pattern used in lower back and post-pregnancy rehab.",
92-
"equipment": "none",
93-
"criteria": { "type": "reps", "target": 10 },
94-
"milestone": "F1",
95-
"sources": ["nsca_essentials_2016"]
96-
},
97-
{
98-
"step": 2,
99-
"movement": "hip_hinge_pvc",
100-
"name": "Hip Hinge (PVC/Broomstick)",
101-
"description": "Standing hip hinge with a PVC pipe or broomstick along the spine (contact at head, upper back, sacrum). Teaches neutral spine and hip-dominant movement.",
89+
"movement": "standing_hip_hinge",
90+
"name": "Standing Hip Hinge",
91+
"description": "Standing bodyweight hip hinge with flat back, hands sliding down thighs to just below the knee. Teaches the hip-dominant movement pattern without any equipment.",
10292
"equipment": "none",
10393
"criteria": { "type": "reps", "target": 10 },
10494
"milestone": "F2",
10595
"sources": ["nsca_essentials_2016"]
10696
},
10797
{
108-
"step": 3,
109-
"movement": "rdl_bodyweight",
110-
"name": "Romanian Deadlift (Bodyweight)",
111-
"description": "Standing hip hinge with arms extended, lowering hands toward shins. No external load. Establishes the RDL pattern and hamstring flexibility.",
98+
"step": 2,
99+
"movement": "glute_bridge",
100+
"name": "Glute Bridge",
101+
"description": "Lying on back, feet flat on floor, drive hips to full extension. Reinforces hip extension pattern and glute activation.",
112102
"equipment": "none",
113-
"criteria": { "type": "reps", "target": 10 },
114-
"milestone": "F3",
103+
"criteria": { "type": "reps", "target": 15 },
104+
"milestone": null,
115105
"sources": ["nsca_essentials_2016"]
116106
},
117107
{
@@ -439,13 +429,13 @@
439429
{
440430
"targetMovement": "run_mile",
441431
"targetCategory": "monostructural",
442-
"description": "Running progression from short walks through walk/run intervals to continuous running. More gradual than Couch to 5K, which has high dropout rates partly due to large progression jumps.",
432+
"description": "Running progression from short walks through walk/run intervals to continuous jogging.",
443433
"steps": [
444434
{
445435
"step": 1,
446-
"movement": "walk_10min",
447-
"name": "Walk 10 Minutes Continuously",
448-
"description": "Walk at any pace for 10 minutes without sitting down. The absolute starting point for sedentary adults. WHO and ACSM recommend replacing sedentary time with any activity as a first step.",
436+
"movement": "walk_500m",
437+
"name": "Walk 500m",
438+
"description": "Walk 500 meters without stopping. The starting point for sedentary adults.",
449439
"equipment": "none",
450440
"criteria": { "type": "completion" },
451441
"milestone": "F1",
@@ -458,48 +448,28 @@
458448
"description": "Continuous walking for 1 kilometer at any pace (approximately 10-15 minutes). Baseline cardiovascular and musculoskeletal capacity.",
459449
"equipment": "none",
460450
"criteria": { "type": "completion" },
461-
"milestone": "F1",
451+
"milestone": "F2",
462452
"sources": ["who_physical_activity_2020"]
463453
},
464454
{
465455
"step": 3,
466456
"movement": "walk_run_intervals",
467457
"name": "Walk/Run Intervals",
468-
"description": "Alternating 1 minute running with 2 minutes walking, repeated 8 times (24 minutes total). More gradual than Couch to 5K Week 1. Standard return-to-running protocol.",
458+
"description": "Alternating 1 minute running with 2 minutes walking, repeated 8 times (24 minutes total). Standard return-to-running protocol.",
469459
"equipment": "none",
470460
"criteria": { "type": "completion", "details": "8 rounds of 1 min run / 2 min walk" },
471-
"milestone": "F2",
461+
"milestone": null,
472462
"sources": ["acsm_guidelines", "who_physical_activity_2020"]
473463
},
474464
{
475465
"step": 4,
476-
"movement": "run_400m",
477-
"name": "Run 400m Without Stopping",
478-
"description": "Continuous running for 400 meters (one standard track lap) at any pace.",
479-
"equipment": "none",
480-
"criteria": { "type": "completion" },
481-
"milestone": "F2",
482-
"sources": ["acsm_guidelines"]
483-
},
484-
{
485-
"step": 5,
486-
"movement": "run_800m",
487-
"name": "Run 800m Without Stopping",
488-
"description": "Continuous running for 800 meters at any pace. A meaningful aerobic milestone for previously sedentary adults.",
466+
"movement": "jog_1500m",
467+
"name": "Jog 1500m",
468+
"description": "Jog 1500 meters without walking breaks, at any pace. At this point the athlete has the aerobic base for structured training.",
489469
"equipment": "none",
490470
"criteria": { "type": "completion" },
491471
"milestone": "F3",
492472
"sources": ["acsm_guidelines"]
493-
},
494-
{
495-
"step": 6,
496-
"movement": "run_mile_any_pace",
497-
"name": "Run 1 Mile (Any Pace)",
498-
"description": "Continuous running for 1 mile (1609m) without walking breaks. At this point the athlete is ready for the timed OP benchmark.",
499-
"equipment": "none",
500-
"criteria": { "type": "completion" },
501-
"milestone": "F3",
502-
"sources": ["acsm_guidelines", "runninglevel"]
503473
}
504474
]
505475
},

0 commit comments

Comments
 (0)