Run315

Gear & conditions

Shoes

Mileage counted from your own runs

PairDistanceRuns LeftLife
Pegasus 40 replace
2025-09-07 → 2026-07-23
1600 km 138 0 km 800 km limit
Endorphin Speed replace
2025-09-10 → 2026-07-22
781 km 91 0 km 700 km limit
Novablast 4
2026-07-25 → 2026-09-06
392 km 32 408 km 800 km limit

Shoes and their replace-at figures come from Garmin. Where you have not set one, 800 km is assumed — it is a rule of thumb, not a rule.

Pace against the weather

Last 400 days

The same effort is simply slower in the heat. The corrected column is what your summer runs are actually worth, so a July slump stops looking like lost fitness.

ConditionsRunsAverage Raw paceCorrectedWorth
Under 5 C 79 2 C 4:44 /km 4:44 /km
5-13 C 58 9 C 4:45 /km 4:45 /km
13-20 C 54 17 C 4:43 /km 4:42 /km −2s
20-26 C 70 23 C 4:45 /km 4:34 /km −11s
, so the check has to wait for the parsed document. addEventListener('DOMContentLoaded', function () { try { var dm = ['standalone', 'minimal-ui', 'fullscreen', 'window-controls-overlay']; if (!document.getElementById('frozen-note') && (navigator.standalone || dm.some(function (m) { return matchMedia('(display-mode: ' + m + ')').matches; }))) { var pk = 'portal-installed', reg = JSON.parse(localStorage.getItem(pk) || '{}'); reg.Run315 = Date.now(); localStorage.setItem(pk, JSON.stringify(reg)); } } catch (e) { /* private mode - ignore */ } }); // Installable, and readable on the train. See templates/sw.js. if ('serviceWorker' in navigator) { addEventListener('load', function () { navigator.serviceWorker.register('/Run315/sw.js'); }); }
Static demo. A synthetic athlete, frozen to files — every page here is the real app rendering real analysis, but anything that writes (Garmin sync, adding a race, the coach review) is switched off, because a file server has nothing to write to. Source & how to run it for real.