← Alle Projekte

Web-App

coach.

Meine eigene Trainingsplattform für Coach und Athlet. Der Coach plant nach Wochenvolumen, der Athlet loggt offline am Handy, und jeder Satz fließt in den nächsten Plan.

Ansehen
Status
Privat im Einsatz, später auch für andere Coaches
Technik
TypeScript, Preact, Vite, Cloudflare Workers, D1, R2, OpenRouter

Warum ich das baue

Ich trainiere seit Jahren und logge jedes Workout in Hevy. Die App ist gut zum Loggen. Beim Planen hilft sie mir kaum. Ich plane meine Woche nach Sätzen pro Muskelgruppe, und das habe ich bisher im Kopf oder in einer Tabelle zusammengerechnet.

Gerade nutzen coach. nur wir: mein Coach plant, ich trainiere und logge. Es soll aber meine eigene Software werden, die später auch andere Coaches mit ihren Athleten nutzen können.

Mitte Oktober 2026 habe ich angefangen, mir dafür ein Werkzeug zu bauen. Erst nur einen Planer, der meine Übungen aus Hevy lädt und den fertigen Plan als Routine zurück in Hevy schreibt. Zwei Tage später war klar: Wenn ich ohnehin alles selbst plane, will ich auch meine eigenen Daten besitzen.

Was es macht

  • Planen. Der Coach baut Trainingstage gegen das Wochenziel jeder Muskelgruppe und sieht laufend, wie viele Sätze zusammenkommen.
  • Loggen. Der Athlet bekommt jeden Tag als Routine in eine mobile Web-App, die offline im Keller-Gym funktioniert und synchronisiert, sobald wieder Netz da ist.
  • Historie. Alle alten Workouts aus Hevy sind importiert. Pro Übung siehst du, wie sie sich über die Zeit entwickelt hat.
  • Eigene Übungen. Neue Übungen anlegen, mit Bildsuche für das Vorschaubild. Importierte Übungen aus Hevy kannst du bearbeiten, deine Änderung wird zu deiner persönlichen Version.

Die Plattform läuft privat, nur auf Einladung.

Technische Entscheidungen

Hevys Datenmodell übernehmen, statt Hevy abzuschalten. Bevor ich etwas gebaut habe, habe ich die öffentliche Hevy-API prüfen lassen: Lässt sich das Datenmodell sauber nachbauen? Ja. Der Logger speichert alles in einer eigenen Datenbank und bietet nach außen eine API in derselben Form wie Hevy. Der Planer merkt also nicht, ob er mit Hevy oder mit meinem Logger spricht.

Getrennte Module, eine App. Planer und Logger sind eigene Teile mit klarer Grenze, laufen aber als eine Anwendung unter einer Adresse. Das Datenmodell kann von Anfang an mehrere Nutzer. Ich will das später nicht nachrüsten müssen.

Ein Stack für beide. Der Planer war ursprünglich rund 1.800 Zeilen handgeschriebenes Template-Rendering. Bevor neue Features kamen, habe ich ihn auf denselben Stack wie den Logger gezogen: Preact, TypeScript, Vite. Keine neuen Frameworks, nur einer statt zwei.

Lokal wie in Produktion. Die Agenten testen in derselben Laufzeit, die auch live läuft, mit lokaler Datenbank und lokalem Speicher. Kein zweiter Codepfad nur für die Entwicklung.

Aus den Sessions

Der Start war ein einziger Prompt: Bau mir ein Tool, mit dem ich meine Woche nach Sätzen pro Muskelgruppe plane, lade meine Übungen aus Hevy und synchronisiere das Ergebnis später in einen eigenen Ordner in meinem Hevy-Account.

Am 15. Oktober kam die Frage, ob ich Hevy nicht ganz ersetzen kann. Der erste Vorschlag des Agenten war vorsichtig, ich wollte mehr: “architecture wise this should be a different module”. Am selben Tag liefen das Datenmodell, die mobile Logging-App und die gemeinsame Plattform als parallele Threads.

Am 17. Oktober dann die kleinen Dinge, die zeigen, dass ich es wirklich benutze: “why cant i edit exercises that were imported from hevy originally?” Jetzt geht das.

Train ist noch ein Werkzeug für mich. Es soll mehr werden.