Zurück zu den Analysen
Build-Logs8 Min. Lesezeit

Live-Entwicklung von BJJ Buddy: Eine Speediance-Workout- und KI-Dev-Session

Eine echte Sonntagssession: Supabase-Authentifizierung für BJJ Buddy ausliefern, GLM 4.7 Offload-Probleme debuggen und Speediance-Sätze durchziehen, während Whoop- und Garmin-Daten ausgewertet werden.

Toby 21. September 2026

Die Antwort darauf, wie ein KI-gestützter Build in der Praxis aussieht, lautet: chaotisch, parallel und deutlich nützlicher als eine polierte Demo. Letzten Sonntag habe ich eine Session gestreamt, in der das Ziel zweigeteilt war: das BJJ Buddy-Backend von einem rein lokalen Prototyp zu einer Cloud-synchronisierten Realität zu bringen und mein Trainingsvolumen mithilfe einer Speediance Warrior One-Vorlage aufrechtzuerhalten. Das Ergebnis war eine Session, in der das Gehirn nie wirklich abschaltet – man lässt gerade einen Satz schwerer Curls fallen, geht drei Schritte zum Schreibtisch und entwickelt per Prompt-Engineering eine Lösung für einen fehlgeschlagenen Supabase-Authentifizierungsablauf, bevor der Ruhe-Timer abläuft.

Der technische Build: BJJ Buddy mit der Cloud verbinden

BJJ Buddy entwickelt sich weiter. Bis jetzt war es ein Local-First-Experiment. In dieser Session ging es darum, es für Nutzer real zu machen, indem Supabase durchgängig integriert wurde. Der Übergang zu einem Cloud-synchronisierten Backend ist nie so einfach wie das Drücken eines 'Deploy'-Buttons; er erfordert eine systematische Neugestaltung der Datenflüsse innerhalb der Anwendung.

Die wichtigsten Errungenschaften während des Streams umfassten:

  • Authentifizierungs-Überarbeitung: Implementierung einer vollständigen E-Mail- und Passwort-Authentifizierung. Wir stießen früh auf ein Problem, bei dem die E-Mails zur Kontoerstellung nicht ausgelöst wurden; die anfängliche Verkabelung verlief still, was zu einigen Minuten Debugging der SMTP-Übergabe führte, bevor wir erkannten, dass der Listener nicht ordnungsgemäß initialisiert war.
  • Row Level Security (RLS): In einer Fitness-App ist Datenschutz von höchster Bedeutung. Ich habe einen erheblichen Teil der Session damit verbracht, RLS-Richtlinien für die Trainingssessions, Biometrie und die Haupttabellen des Trainingsprotokolls zu schreiben und zu testen. Dies stellt sicher, dass ein Nutzer – obwohl die Daten in der Cloud liegen – ausschließlich mit seinen eigenen Zeilen interagieren kann.
  • Die UI-Schleife: Ich habe eine funktionale Startansicht, einen schlanken Bildschirm zur Eingabe von Trainingsprotokollen und eine Ansicht für den Sitzungsverlauf erstellt. Das Highlight war hier die 'Inline-Bearbeitung' für historische Sessions, die es Nutzern ermöglicht, Gewichts- oder Wiederholungszahlen zu korrigieren, ohne die Verlaufsliste verlassen zu müssen.
  • Der hybride Demo-Modus: Es war wichtig, einen Demo-Modus beizubehalten. Dieser ermöglicht es potenziellen Nutzern, die Oberfläche zu erkunden und Dummy-Sessions zu protokollieren, ohne sich registrieren zu müssen. Die Logik zu entwickeln, die basierend auf dem Authentifizierungsstatus zwischen lokalem Zustand und Supabase-Zustand wechselt, war ein entscheidender Erfolg für den Abend.

Der interessanteste Teil des Builds war nicht der Code selbst, sondern der Workflow. Nachdem ich einen Speicherablauf zum Trainingsprotokoll hinzugefügt hatte, bemerkte ich einen fehlenden 'Schließen'-Button im Erfolgs-Modal. Anstatt mich selbst ins CSS zu stürzen, nutzte ich meinen KI-Stack, um die Mikroaufgabe zu erledigen. Ich bat ARIA (meinen leitenden KI-Agenten), die Aufgabe an Clarity (einen lokalen Sub-Bot) weiterzugeben.

Clarity startete eine lokale Qwen-3-Coder-Sitzung, identifizierte den Div und pushte den Patch. Die gesamte Übergabe erforderte eine einzige Eingabe in natürlicher Sprache und etwa fünfzehn Sekunden Ausführungszeit.

Der KI-Orchestrierungs-Stack: ARIA, Clarity und Nova

Meine aktuelle Entwicklungsumgebung nutzt ein System, das ich OpenClaw nenne, strukturiert als Hauptsteuerungs-Bot mit spezialisierten Sub-Bots. Diese Architektur wird von einer sehr praktischen Einschränkung getrieben: Kosten- und Token-Effizienz. Ich lag bei ungefähr 47% meiner monatlichen Abonnementnutzung. Wenn ich ein High-End-Modell wie Claude 3.5 Sonnet bitten würde, jede triviale CSS-Korrektur oder kleinere Fehlersuche durchzuführen, würde ich mein Budget bis zur Monatsmitte aufbrauchen.

Stattdessen nutze ich lokale Modelle für die 'Knochenarbeit':

  • ARIA (Der Orchestrator): Das hochgradig schlussfolgernde Remote-Modell, das die Projektarchitektur versteht und Aufgaben delegiert.
  • Clarity (Der Coder): Ein lokaler Sub-Bot, der Qwen 3 Coder ausführt. Er übernimmt die eigentlichen Dateibearbeitungen und die Syntax.
  • Nova (Der Forscher/Debugger): Ein lokaler Bot, der GLM 4.7 Flash ausführt und zum Durchsuchen von Dokumentationen oder zum Nachvollziehen von Fehlerprotokollen verwendet wird.

Während des Streams stieß ich auf eine faszinierende Hardware-Einschränkung: Nova lud immer wieder nicht. Da GLM 4.7 Flash ein neues, größeres Modell ist, sollte es im Unified Memory neben Qwen passen. Jedoch war ein kleineres Qwen-3-Modell, das ich für Hintergrund-Cronjobs laufen hatte, der Übeltäter. Jedes Mal, wenn ein Cronjob ausgelöst wurde, schnappte es sich einen kleinen Teil des VRAM, wodurch das System das größere GLM-Modell aus dem Pool verdrängte, um Platz zu schaffen. Das vollständige Entfernen der 'kleinen' Modelle für alles, was nicht Novas Aufgabe war, löste die Stabilitätsprobleme sofort. Die Lehre: Auf Unified-Memory-Systemen können zwei große lokale Modelle koexistieren, aber ein drittes 'winziges' Modell ist oft der Auslöser für einen Absturz.

Speediance Live: Training in den Lücken

Das Training für den Abend war Warrior One, eine benutzerdefinierte Vorlage, die ich verfeinert habe. Mein aktueller Benchmark liegt bei ungefähr 20 RM für Aufwärmsätze, wobei ich Sätze mit 13 Wiederholungen mache. Selbst mit dem neuesten 3.1-Software-Update weist der Speediance immer noch einen hartnäckigen UX-Reibungspunkt auf: den erzwungenen Pausentimer. Obwohl er dazu gedacht ist, Sie in Bewegung zu halten, zwingt er mich in einer entwicklungsintensiven Sitzung oft, zum Schreibtisch zurückzukehren, eine Eingabe zu machen, und dann zur Maschine zurückzusprinten, bevor sie zur nächsten Bewegung übergeht.

Zwei konkrete Erkenntnisse zur Hardware und Software des Speediance ergaben sich aus dieser Sitzung:

1. Das Safety-Start-Standardproblem: Speediance hat kürzlich eine 'Safety Start'-Funktion für stehende Curls und andere Übungen eingeführt.

Es soll verhindern, dass die Griffe nach vorne gerissen werden oder in die Maschine zurückschnappen. Bei einer High-to-Low-Dehnung (die ich für die Schulterbeweglichkeit nutze) tötet der Safety Start jedoch den Bewegungsumfang. Er stoppt das Seil, bevor du die für die Dehnung erforderliche volle Streckung erreichen kannst. Mein schwerster Satz bei dieser Übung dreht sich nicht um die Last; es geht um die Tiefe. Safety Start verwandelt einen mobilitätsorientierten Lift effektiv in eine standardmäßige Curl mit begrenztem Bewegungsumfang. Dies ist eine Funktion, die ein pro Übung aktivierbarer Schalter sein sollte, nicht eine globale Standardeinstellung. Interessanterweise hat Tonal genau aus diesem Grund nie eine ähnliche Funktion ausgeliefert – sie stört die Physik der Bewegung.

2. Bedenken hinsichtlich des 2S-Einzugs: Mir ist aufgefallen, dass der Seileinzug bei meinem Speediance 2S sich „weicher" anfühlt als beim ursprünglichen Gym Monster. Es gibt eine leichte Verzögerung beim Aufrollen, die bei der früheren Hardware nicht vorhanden war. Speediance kehrt gerade von einem Feiertagsurlaub in China zurück, also bin ich optimistisch, dass ein Firmware-Update die Motorkalibrierung bald beheben könnte.

Positiv zu erwähnen ist, dass die Hardware-Haltbarkeit auf die Probe gestellt wurde, als ich versehentlich einen Satz mit den Smart Handles auf den falschen Seiten startete und eines mitten in der Bewegung fallen ließ. Die Hardware hat keinen Aussetzer gehabt. Es ist ein robustes Gerät, das den gelegentlichen „Livestream-Gehirn"-Fehler übersteht.

Der Wearables-Stack: Garmin vs. Whoop

Während des Lifts habe ich sowohl Garmin als auch Whoop überwacht. Sie dienen in meinem Ökosystem unterschiedlichen Zwecken. Während die Leute oft fragen, welches „besser" ist, hat diese Einheit verdeutlicht, warum ich beide an meinen Handgelenken trage.

Plattform Hauptmetrik Warum es heute Abend wichtig war
Whoop Erholung % & Belastung Whoop zeigte eine 35% Erholung. Das sagte mir, dass ich beim Speediance nicht auf einen neuen Rekord gehen sollte. Ich blieb in der „Erhaltungs"-Volumen-Zone.
Garmin Trainingsbelastungsdiagramm Damit habe ich meine aerobe Grundlagenentwicklung verfolgt. Ich bereite mich gerade auf einen Wettkampf vor, während ich eine erhebliche Masse mitführe, und das 4-Wochen-Belastungsdiagramm ist meine Bibel.
Custom Dash Kombinierter Morgenbericht Dies aggregiert beide, um vorzuschlagen, ob ich morgen laufen sollte. Da die heutige Belastung moderat war, kann ich morgen laufen.

Garmin bleibt eine Studie der Widersprüche. Das „Trainingsbelastungs"-Diagramm ist der mit Abstand wichtigste Bildschirm für meine aktuelle Wettkampfvorbereitung, und dennoch ist es fünf Ebenen tief in der mobilen App vergraben (Leistungsstatistiken > Trainingsstatus > Belastung). Es ist ein erheblicher Produktfehler, dass dieses Signal hinter so viel Rauschen versteckt ist.

Darüber hinaus bietet Garmin nach wie vor keine Möglichkeit, die 'Suggested Workout Adherence' auf einen Blick zu sehen, was es schwierig macht, festzustellen, ob du den Plan über einen Zeitraum von einem Monat tatsächlich einhältst.

Eine entscheidende Korrektur, die ich mitten im Projekt vorgenommen habe: Meine maximale Herzfrequenz war fälschlicherweise auf Basis von Daten vor fast acht Jahren eingestellt. Das führte dazu, dass jedes Workout als 'low anaerobic' registriert wurde. Die Aktualisierung auf meine aktuelle physiologische Realität hat das Lastverteilungsdiagramm sofort korrigiert und die vorgeschlagenen Workouts wieder nutzbar gemacht.

Training für ein Rennen bei meinem höchsten Gewicht

Ich trainiere derzeit für ein Rennen, während ich mein bisher höchstes Körpergewicht habe. Das physiologische Feedback ist faszinierend. Vor sieben Jahren, als ich ausschließlich Läufer war, wäre meine Trainingslastkurve innerhalb von zwei Wochen angestiegen. Jetzt braucht es fast acht Wochen konsequenten Schufterei, um zu sehen, wie sich diese 'green line' nach oben bewegt. Ein schwererer, älterer Körper reagiert langsamer, aber die Daten bestätigen, dass der Fortschritt stabiler ist. Das ist die beste körperliche Form, in der ich seit vor 2022 war, auch wenn die Waage sagt, dass ich für einen traditionellen Läufer 'out of spec' bin.

Wichtigste Erkenntnisse aus der Session

  • Agentic Workflows: Ein Main-Bot-plus-Sub-Bot-Setup ist der einzige Weg, Entwicklung zu skalieren und dabei innerhalb der API-Token-Budgets zu bleiben. Lokale Modelle wie Qwen 3 Coder sind mittlerweile 'good enough' für 80% von UI-Aufgaben.
  • Garmin UX: Die wichtigsten Daten sind oft am schlechtesten platziert. Wenn du dich nicht in die 'Load'-Untermenüs vertiefst, verpasst du den wahren Wert des Garmin-Ökosystems.
  • Speediance Safety: Nutzer sollten bei dem neuen 'Safety Start' vorsichtig sein. Es ist großartig für Anfänger, kann aber fortgeschrittene Bewegungen aktiv behindern, die ein vollständiges Bewegungsumfang-Stretching erfordern.
  • Das parallele Gehirn: Mit KI zu entwickeln während des Trainings geht nicht nur darum, Zeit zu sparen; es geht um 'context-switching'-Ermüdung. KI zur Handhabung der Mikro-Entscheidungen einzusetzen, ermöglicht es dir, deine kognitive Energie für die schweren Sätze und die übergeordnete Architektur aufzusparen.

Die vollständige Session, einschließlich des BJJ Buddy-Backend-Walkthroughs und des Smart Handles-Drops, ist für Abonnenten archiviert. Wenn du den ungeschnittenen Ablauf von Prompts und Wiederholungen sehen möchtest, findest du den Link unten.

Schaue dir die vollständige Build BJJ Buddy Live plus Speediance AI Dev Session auf YouTube an.

#BJJ Buddy#Speediance#Supabase#OpenClaw#Whoop#Garmin