Die App schreibt Krafttraining mit und rechnet daraus die nächsten Schritte. Kein Konto, kein Server, keine Anmeldung. Alles liegt auf dem Gerät.
Sie kennt 90 Geräte. Für jedes schreibt sie Satz für Satz mit: Gewicht, Wiederholungen und wie schwer der Satz war. Daraus schlägt sie das nächste Gewicht vor, setzt die Pausenlänge, baut Aufwärmsätze und rechnet die Statistik.
Fünf Bereiche: Heute, Geräte, Statistik, Cardio, Profil. Der Heute-Tab beantwortet eine Frage, nämlich was heute dran ist. Trainings- und Körpergewicht gehen an Apple Health.
Die App hat drei Schichten. Views zeigen an. Models halten die Daten in SwiftData. Services rechnen.
Die Regel dahinter trägt das ganze Projekt: ein Service rechnet und kennt das System nicht. Uhr, Ton, Haptik und HealthKit werden als Protokoll hineingegeben. Im Test steht dort ein Ersatz. Deshalb braucht kein Test ein Gerät, eine Uhrzeit oder eine echte Gesundheitsdatenbank.
Das ist der Grund für die 426 Tests. Sie prüfen keine Oberfläche, sondern Rechnungen mit festen Eingaben. Ein Fehler im Gewichtsvorschlag ist damit in Sekunden reproduzierbar statt erst im Gym.
Das ist die eigentliche Substanz der App. Jede Zeile ist ein eigener Service mit eigenen Tests.
| Rechnung | Was sie macht |
|---|---|
ProgressiveOverload | Gewichtsvorschlag. Plus 2,5 kg, wenn alle Sätze gehalten wurden. Ein Deload-Schalter erzwingt leichtere Vorschläge. |
OneRepMax | Geschätztes Ein-Wiederholungs-Maximum nach Epley, je Satz und über den Verlauf. |
RestByRPE | Pausenlänge. Basis plus Zuschlag nach empfundener Anstrengung: fordernd 30 s, am Limit 60 s. Liefert auch die Erklärzeile unter dem Timer. |
WarmupSuggestion | Zwei Aufwärmsätze als Rampe aus dem Arbeitsgewicht. |
MuscleReadiness | Erholung je Muskelgruppe aus dem eigenen Verlauf. Basis der Gruppe mal Satzzahl mal Anstrengung. |
WeeklySetTarget | Arbeitssätze je Muskelgruppe diese Woche gegen den Richtwert. |
FatigueTrend | Erkennt steigende Anstrengung über die letzten Trainingstage. |
WeightTrend | Kilo pro Woche als Regressionssteigung aus dem Health-Gewichtsverlauf. |
DailySuggestion | Der Tagesvorschlag. Fasst Erholung, Anstrengungstrend, offene Wochensätze und Planhistorie zu einem Satz zusammen. |
Ein Backend hätte Synchronisation über mehrere Geräte gebracht. Es hätte auch Konto, Passwort, Server, laufende Kosten und eine Datenschutzerklärung für Trainingsdaten bedeutet. Die App braucht nichts davon, um ihre Aufgabe zu erfüllen. SwiftData auf dem Gerät reicht. Der Server-Pfad liegt im Code und ist in Version 1 abgeschaltet.
Ausgangsfrage war, ob der Hinweis „deine Muskeln brauchen noch Zeit" eine Apple Watch braucht. Für den Körper-Score schon, der lebt von Schlaf, Ruhepuls und Herzratenvariabilität. Für die Muskeln nicht. Wann eine Gruppe zuletzt wie hart dran war, steht längst im eigenen Trainingsverlauf. Es fehlte nur die Rechnung. Beide Werte bleiben getrennt, weil sie Verschiedenes messen.
Wer ein Gerät aus seiner Liste nimmt, blendet es aus. Gelöscht wird nichts. Löschen würde den Namen aus allen alten Einträgen nehmen, und damit wäre der Verlauf kaputt. Die Auswahl-Listen zeigen deshalb nur die behaltenen Geräte, die Nachschlage-Stellen den vollständigen Katalog.
Version 1.2 ist gebaut und noch nicht eingereicht. Sie bringt die Muskel-Erholung in den Heute-Tab. Im Store steht bis zur Freigabe weiter 1.1.
Es gibt Grit auch für Android. Die Fassung ist der Vollständigkeit halber gebaut und hinkt hinterher: kein Play-Eintrag, keine Gesundheitsdaten, keine Widgets. Die Rechenregeln teilen sich beide Apps trotzdem.
Zur Android-Fassung