11-Month Programme · Al

Tour of the Borders 120km → Loch Ness Etape sub-3:30
Days to ToB 120km
Days to Etape
Current Phase

Today's Session

📅
Workout

Phase Map Phase ?

1 · Base + fat-loss 2 · ToB peak 3 · Muscle build 4 · Etape build + cut 5 · Etape sharpen

Quick Log

Capture today's numbers in <30 seconds. Saves to your browser. Skip fields you don't have.

This week

Drinks (week)
Cycling hrs (week)
Lifts (week)
target 3
Avg sleep score

Targets vs Current

Metric
Now
Phase end
ToB target
Etape target

Weight (kg)

FTP (W) & W/kg

Bench / Trap DL / Squat — est. 1RM (kg)

Drinks per week

Body Battery (wake) — 7-day avg

Resting HR — 7-day avg

Sleep score — 7-day avg (higher = better)

Sleep hours — 7-day avg

HRV (last-night avg)

Stress (daily avg) — 7-day avg (lower = better)

Steps — daily

Body Composition

Tape measure once a week, same time of day. Take 3 readings and average them. Navy formula calculates BF% from waist+neck (and hip for women).

History

Lifting Log

Estimated 1RMs (current bests)

Rides & FTP Tests

Ride history

HR & Power Zones

Set your max HR and FTP and the zones recompute automatically. Run a max HR test in week 2 — see help below.

Heart Rate Zones (Friel — % LTHR)

Best practice: set zones from lactate threshold HR (LTHR), not max. LTHR ≈ avg HR over the last 20 min of an all-out 30-min effort. Approximation: LTHR ≈ ~92% maxHR for trained riders.

Power Zones (Coggan — % FTP)

Update FTP after every test. Zones recompute. Sweet spot = 88–94% FTP. Threshold = 95–105% FTP.

How to test max HR (do in week 2 of Phase 1)

Hill protocol (preferred): 15 min warm-up. Find a 5–7 min steady climb. Ride hard but build for first 3 min, then push to 90% effort, then last 60s flat-out sprint to the top. Repeat once after 5 min recovery. Note peak HR across both efforts.

Trainer protocol: 15 min warm-up. 4 × 4 min hard with 2 min recovery; final interval is all-out, ramping the last 60s to absolute max. Peak HR = max HR.

Don't use 220−age. Margin of error is ±15 bpm. Your real max may surprise you (likely higher than 173 for you).

Settings & Connectors

Garmin auto-sync

Activities + sleep + RHR + HRV + body battery are pulled from Garmin Connect by a GitHub Actions cron (4× daily) and stored in a Cloudflare Worker. The dashboard reads from the Worker on every load. Strava is no longer used.

The Cloudflare Worker that stores your Garmin data. No trailing slash.
Same value set on the Worker (wrangler secret put API_KEY) and as a GitHub Actions secret.
Not configured
Set after week 2 max HR test. Default 180 (you've seen high-170s recently, true max likely 180–185).
Update after every FTP test (or NP from a 60-min hard effort).
Saved