Der Marathonplan ist jetzt für jede Zielzeit
Seit dem ersten Post zum Frankfurter Marathonplan habe ich eine Sache immer ein bisschen gestört: Der Plan war technisch eine Vue-App, aber inhaltlich war er trotzdem komplett auf meine Zielzeit 3:30:00 zugeschnitten. Alle Paces in allen Einheitsbeschreibungen — hardcoded. Wer 4:00 anpeilt, musste im Kopf umrechnen.
Das ist jetzt anders.
Was sich geändert hat
Oben rechts im Plan gibt es jetzt ein kleines Badge mit der aktuellen Zielzeit. Draufklicken öffnet ein Overlay.
Dort lässt sich die Zielzeit per Slider von 2:30 bis 5:30 in 5-Minuten-Schritten einstellen. Während man zieht, aktualisiert sich die Pace-Referenztabelle live — man sieht sofort, wie sich Easy-Lauf, Tempo, Marathontempo, Schwelle und VO2max-Pace verschieben.
Auf Bestätigen wird die Einstellung gespeichert — und dann passiert das eigentlich Interessante: alle Einheitsbeschreibungen im gesamten Plan passen sich an. Aus "5×1000m @ 4:42 / 2 min Traben" wird für eine 4:00-Zielzeit "5×1000m @ 5:25 / 2 min Traben". Aus "14 km @ 4:58" wird "14 km @ 5:41". Jede Pace in jeder Woche.
Wie das technisch funktioniert
Das Kernproblem: Die ~150 Workout-Beschreibungen im Plan sind Textstrings mit eingebetteten Pace-Angaben wie "@ 4:48" oder "5:50 min/km". Die einfach per Regex zu ersetzen wäre fragil — zu viele Sonderfälle.
Der Ansatz stattdessen: Jede Pace im Plan hat einen festen Offset zum Marathontempo. 4:42 ist immer MP − 16 Sekunden, egal ob das MP jetzt 4:58 oder 5:41 ist. Daraus ergibt sich eine Substitutions-Map: 29 bekannte Pace-Strings (für 3:30) werden auf ihre Äquivalente für die neue Zielzeit abgebildet.
Die Berechnung selbst nutzt dieselbe Funktion wie der Pace-Rechner: calculatePaceOrSpeedFromTime aus den bestehenden Pace-Utils des Projekts.
Beim Rendern jeder Einheitskarte wird der Beschreibungstext einmalig durch diese Map gejagt — Ranges wie "5:10–5:15" zuerst, damit nicht versehentlich erst "5:10" als Einzelwert ersetzt wird. Die Map wird gecacht solange sich die Zielzeit nicht ändert.
Warum das nützlich sein könnte
Der Plan ist für Oktober 2026 ausgelegt und auf Frankfurt zugeschnitten — die Phaseneinteilung, die Schlüsselläufe, die Gel-Strategie. Das ändert sich nicht. Aber die Zielzeit ist jetzt variabel.
Wer also auch im Herbst einen Marathon läuft und eine ähnliche Struktur nutzen möchte — 3:00, 3:45, 4:15, was auch immer — kann den Plan jetzt zumindest als Ausgangspunkt nehmen, ohne jede Pace im Kopf umzurechnen.
Den Plan gibt es hier: /marathon
Was noch fehlt
Die Wochen-Notizen (der erklärende Text unter jeder Woche) enthalten manchmal ebenfalls Pace-Angaben — die sind noch nicht dynamisch. Das wäre der nächste Schritt, falls sich das als sinnvoll herausstellt.