12 Punkte von GN⁺ 2025-06-19 | 1 Kommentare | Auf WhatsApp teilen
  • Enthält Funktionen zur Erstellung von Trainingsplänen, Fortschrittsverfolgung und eine umfangreiche Trainingsdatenbank
  • Baut auf den Erfahrungen mit dem Scheitern von workout.lol auf und verfolgt das Ziel eines nachhaltigen, sich weiterentwickelnden Projekts für die Open-Source-Community
  • Nutzt eine auf den Prinzipien von Feature-Sliced Design und Next.js basierende Architektur und betont die Unabhängigkeit einzelner Funktionen, Skalierbarkeit und Wartbarkeit des Codes
  • Die Trainingsdatenbank lässt sich einfach per CSV-Datei importieren und enthält detaillierte Informationen wie verschiedene Übungsmerkmale, Videos und primär angesprochene Muskeln
  • Künftig sollen Funktionen wie Mobile App, Badges/Gamification, Wearable-Integration und Community-Forum auf Basis der Community-Beteiligung kontinuierlich erweitert werden

Überblick und Nutzen von Workout-Cool

  • Workout-Cool ist eine moderne Open-Source-Fitness-Coaching-Plattform, mit der Nutzer individuelle Trainingspläne erstellen, ihren Fortschritt dokumentieren und eine umfangreiche Trainingsdatenbank mit Beschreibungen, Videos und mehr breit nutzen können
  • Ein Entwickler, der die Vernachlässigung und Einstellung des früheren Projekts workout.lol selbst erlebt hat, hat es als nachhaltigere und modernere Open-Source-Fitness-Plattform für die Fitness-Community neu ins Leben gerufen

Projektstart und Motivation

  • Als zentraler Mitwirkender am Projekt workout.lol hatte der Entwickler mit Problemen wie einer gescheiterten Zusammenarbeit mit einem Partner für Videobereitstellung und den Kosten für Videolizenzen zu kämpfen
  • Nachdem das Projekt an Dritte verkauft worden war, wurde es schnell eingestellt; trotz mehr als neun Monaten Kommunikationsversuchen mit dem neuen Eigentümer gab es keine Antwort
  • Um den Wert des bisherigen Projekts nicht verloren gehen zu lassen, fiel die Entscheidung, eine insgesamt verbesserte und moderne Plattform neu aufzubauen
  • Dieses Projekt verfolgt keine kommerziellen Ziele. Es steht für eine Weiterentwicklung mit dem Versprechen verlässlicher Wartung und kontinuierlicher Verbesserung für die Open-Source-Community

Community-getragene Betriebsphilosophie

  • Als Entwickler und gleichzeitiger aktiver Nutzer fließen die von der Community benötigten Funktionen und Erfahrungen direkt ein
  • Ehemalige workout.lol-Nutzer sind willkommen, und neue Nutzer können den Wert einer zukunftsorientierten Fitness-Plattform erleben
  • Jede und jeder kann direkt beitragen und Verbesserungsvorschläge einreichen

Trainingsdatenbank und Import

  • Das Projekt verfügt über eine umfangreiche Trainingsdatenbank
  • Über ein beispielhaftes CSV-Format lassen sich vielfältige Informationen zu jeder Übung individuell importieren, darunter id, Name, Beschreibung, Video-URL, Bild, primär angesprochener Muskel und weitere Attribute
    • Beispiele wichtiger Spalten: id, name, name_en, description, description_en, full_video_url, full_video_image_url, introduction, slug, attribute_name, attribute_value usw.
    • Beispiele für Attributtypen: TYPE(Kraft/Cardio/Plyometrics/Stretching), PRIMARY_MUSCLE, SECONDARY_MUSCLE, EQUIPMENT, MECHANICS_TYPE usw.
  • Mit einem Ein-Zeilen-Befehl lassen sich Daten direkt importieren, was eine hohe Erweiterbarkeit der Daten ermöglicht

Projektarchitektur

  • Basierend auf dem Next.js App Router unter Anwendung der Prinzipien von Feature-Sliced Design (FSD)
    • Für jede Funktion wird eine unabhängige und leicht wiederverwendbare Struktur umgesetzt
    • Klare Trennung der Domain-Schichten: shared → entities → features → widgets → app
    • Wahrung der Konsistenz zwischen UI-, Business-Logik- und Datenebene
  • Beispiele für die Dateiaufteilung:
    • app/ - Next.js-Routen und Layouts
    • processes/ - komplexe Business-Flows
    • widgets/ - zusammensetzbare UI (z. B. Sidebar, Header)
    • features/ - zentrale Einheiten (Authentifizierung, Trainingsverwaltung usw.)
    • entities/ - Benutzer, Übungen, Workouts usw.
    • shared/ - gemeinsamer Code und Typen
    • styles/ - globale CSS/Themes

Entwicklung und Deployment

  • Erforderlich sind Node.js 18+, PostgreSQL (Docker oder direkte Einrichtung) sowie pnpm oder npm
  • Nach dem Klonen: Abhängigkeiten installieren, Umgebungsvariablen setzen, Datenbank einrichten (automatisch oder manuell) und im Browser http://localhost:3000 aufrufen
  • Datenbankmigrationen können direkt ausgeführt und der Entwicklungsserver gestartet werden
  • Build des Docker-Images und Ausführung des Containers (geplant)

Geplante Funktionen

  • Übungen/Videos hinzufügen
  • Mobile App (auf React Native basierend)
  • Gamification (Badge-System usw.)
  • Erweiterte Fortschrittsstatistiken und Visualisierung
  • Wearable-Integration (Uhren/Tracker)
  • Mehrsprachige Unterstützung
  • OAuth-Authentifizierung (Google, Apple usw.)
  • Integriertes Community-Forum

1 Kommentare

 
GN⁺ 2025-06-19
Hacker-News-Kommentare
  • Es ist ein seltsames Gefühl, hier meine App workout.lol zu sehen
    Ich hatte die App an jemanden verkauft, und dann erlebt, wie sie einfach liegen gelassen wurde
    Ich habe mehrmals per SMS geschrieben, dass man sich melden soll, falls Support nötig ist, aber nie eine Antwort bekommen
    Umso glücklicher bin ich jetzt, zu sehen, dass sie wieder gepflegt wird
    Auch die UI-Verbesserungen sind großartig, wirklich tolle Arbeit
  • Vincenius!
    Du kannst dir gar nicht vorstellen, wie sehr ich mich gefreut habe, deinen Namen zu sehen
    Ich kenne dieses Gefühl auch, wenn man zusieht, wie ein Projekt ohne großen Ertrag zum Stillstand kommt und es einem das Herz bricht
    Genau das hat mich letztlich dazu gebracht, alles komplett neu aufzuziehen und dabei die Offenheit beizubehalten, die du ganz am Anfang gezeigt hast
    Danke für das Lob zur UI, das bedeutet aus deiner Perspektive besonders viel
    Falls du irgendwann zurückkommen willst, bist du jederzeit willkommen
    Schon Ideen, Meinungen oder einfach nur deine Anwesenheit wären viel wert
  • Das ist wirklich cool
    Ich arbeite gerade an einer automatischen Kalender-Scheduling-API mit Integration in Apple CalDAV(iCal)
    Ich baue eine zielorientierte Planungsfunktion (mit Google ORTools wird ein riesiges CP-SAT-Constraint-Modell sehr schnell berechnet, selbst ein ganzes Jahr in unter 5 Sekunden)
    Dazu kommt auch eine Ernährungsfunktion, die auf Nährstoffziele abgestimmt ist
    Ich wollte unbedingt auch so ein Trainings-/Workout-Plan-System einbauen, hatte aber nicht die geringste Ahnung, was ich dafür nutzen sollte
    Jetzt ist endlich klar, was ich verwenden werde
    Danke, dass du dieses Projekt gebaut hast
  • Ich frage mich, ob das vielleicht jemand aus der Branche gekauft hat, um eine kostenlose Alternative zu blockieren
    Jetzt bin ich gespannt, welche Zukunft dieses Projekt haben wird
  • Bei mir erscheint die Meldung "error loading exercises"
    Mich würde interessieren, was du vom wger-Projekt hältst
    https://github.com/wger-project ist eine selbst hostbare Fitness-/Workout-/Ernährungsplattform auf FLOSS-AGPL-Basis
    Scheint es schon seit fast 10 Jahren zu geben, basiert auf einer django-App und hat auch offizielle flutter-Apps, nutzbar auf Android/iOS/Windows/Linux/macOS
    Es unterstützt mehrere Nutzer und kann sogar für den Betrieb eines Fitnessstudios verwendet werden
    body.build ist ein neueres FLOSS-Projekt, browserbasiert und auf den Aufbau von Krafttrainingsprogrammen fokussiert
    Der Autor von body.build trägt ebenfalls zu wger bei
    Nach viel Ausprobieren nutze ich wger inzwischen erfolgreich in meinem Homelab
    Beim Self-Hosting gibt es einiges zu beachten, aber es funktioniert gut
    Der größte Nachteil ist die geringe Vollständigkeit der Übungsdatenbank, aber zum Glück bauen Mitwirkende sie nach und nach aus
    Falls jemand Übungsdaten (und Übungsmedien) beitragen kann, wäre dieses AGPL-Projekt dafür sicher sehr dankbar
  • Ich habe Wget vor Kurzem ausprobiert und kann es leider nicht empfehlen
    Die UX der Website ist furchtbar, und die mobile App ist (unter iOS) voller Bugs
    Egal ob Trainingsstart, Gewichtsänderung oder Sitzungsprotokollierung, ständig stürzt etwas ab oder friert ein, dazu werde ich immer wieder ausgeloggt
    Ich nutze jetzt LiftLog, das unterstützt alles, was ich möchte, und ist FOSS
    https://github.com/LiamMorrow/LiftLog
    Erstaunlich, dass es trotz der heutigen Verbreitung von Fitness und Krafttraining als Hobby so wenige brauchbare und gut gepflegte nichtkommerzielle Apps gibt
    Das ist mein Fazit, nachdem ich dutzende Github-Projekte selbst ausprobiert habe
  • Gleicher Fehler bei mir
  • Ich trainiere seit etwa fünf Jahren mit Gewichten, und es macht mich irgendwie stolz, ein gut aufgebautes Open-Source-Tool dafür zu sehen
    Sobald man etwas Erfahrung hat, sind die App-Features am Ende weniger wichtig als konsequentes Logging, um progressive Überlastung zu steuern
    Für Einsteiger ist diese App ein guter Start
    Damit sie breiter genutzt wird, braucht sie aber unbedingt zwei Dinge
  1. Eine mobile App (oder eine PWA, meine selbstgebaute PWA reicht völlig an native Apps heran)
  2. Eine Funktion, um bestimmte Trainingsroutinen langfristig zu speichern und zu verwalten
  • Idealerweise sollte man Daten zwischen verschiedenen UIs exportieren und teilen können
    https://json-schema.app/view/#?url=https%3A%2F%2Fgist.githubusercontent.com%2Fgavmor%2Fb74c4746aa9f3f63b0f50863a5e62d52%2Fraw%2F01318d1107f67ac83387a905d6556736fa7797ff%2Flifting.json
  • Ich schreibe das nach dem Testen, und ich will den OP wirklich überhaupt nicht kleinreden
    Aber ich kann nicht zustimmen, dass so eine App für Anfänger eine gute Wahl ist
    Respekt für die Mühe, aber die Anordnung der empfohlenen Übungen macht mir Sorgen
    Zum Beispiel: Wenn man „Rücken/Bizeps“ auswählt, bekommt man neun Übungen ungeordnet angezeigt
    Es gibt keinerlei Überlegung zur Reihenfolge oder Struktur, Compound Lifts tauchen mitten drin auf, oder Chin-ups gleich dreimal
    Es gibt keine 1RM-Berechnung für Wiederholungen/Sätze/Gewichte
    Empfohlen werden unübliche Bro-Splits, was alles eher noch unübersichtlicher macht
    Ich glaube, man könnte mit einer minimalistischen PPL-App auf Basis vorhandener Ausrüstung deutlich besser fahren
  • Es fühlt sich wirklich gut an, so etwas von jemandem mit Erfahrung im Gym-Bereich zu hören
    Ich sehe das genauso: Mit wachsender Erfahrung zählt am Ende vor allem echte Konsequenz und das Festhalten des Fortschritts (bei mir inzwischen mehr fürs Mentale als für Leistung, also eher Zustandskontrolle)
    Das Speichern von Routinen und langfristiges Tracking stehen bereits auf der Roadmap
    Deshalb ist die Architektur der "workout session" auch völlig anders aufgebaut als in der alten App
    Ich möchte es so aufziehen, dass Nutzer einzelne Trainingsblöcke erstellen und sie optimal wiederverwenden, teilen, analysieren und weiterentwickeln können
    Mich würde interessieren, wie du dieses Routine-Management in deiner PWA angegangen bist
    Es klingt, als wären wir einen ähnlichen Weg gegangen, deshalb würde ich das sehr gern hören
  • Falls du dich für Datenquellen interessierst, hier ein paar Projekte als Referenz
    https://wrkout.xyz/ (offene Übungsdatenbank-API mit Bildern/Videos)
    https://github.com/wrkout/exercises.json (Open-Source-Übungsdatensatz)
    Kannst du bei Bedarf vielleicht nutzen
  • Ich habe mir wrkout.xyz früher schon einmal angesehen, wirklich ein großartiges Projekt
    Diesmal habe ich den Datensatz zusammen mit einem Partner komplett von Grund auf neu aufgebaut, um Lizenzprobleme rund um Videos klar zu vermeiden
    So haben wir volle Kontrolle über die Daten und können Eigenschaften, Übersetzungen usw. nach Belieben anpassen
    Trotzdem freue ich mich sehr darüber, dass in diesem Bereich so viele offene Projekte entstehen
    Wenn sich für beide Communities eine Weiterentwicklung ergibt, würde ich gern nach Synergien suchen
    DMs sind willkommen
  • Das ist echte Contribution
    Nicht nur Ideen in den Raum werfen, sondern schon einen Datensatz zusammentragen, mit dem Einsteiger direkt loslegen können
    Wirklich vielen Dank
  • Ehrlich gesagt ist die App besser als erwartet
    Was ich mir wünschen würde, wäre eine Funktion, die Gewichte/Wiederholungen pro Übung empfiehlt
    Das Fitnessprogramm "100 Pushups" wäre dafür ein gutes Vorbild
  • Als Bestrafung so viele Wiederholungen wie möglich machen (z. B. 8 Push-ups)
  • Die App erstellt dann einen Plan (3, 4, 3, 3, 5 usw., jeweils 2 Minuten Pause und wiederholen)
  • Je nach Leistungsstand des Nutzers werden die Wiederholungszahlen schrittweise und adaptiv empfohlen
  • Gegen Woche 6 hin steuert alles auf das Ziel von maximal 100 Wiederholungen zu
    Wenn du Interesse hast, diskutiere ich auch gern über die UI
  • Falls du das Backend loswerden willst, wäre auch eine Integration mit dem AT Protocol eine Idee
    Alle Nutzerdaten würden dann im PDS gespeichert, ein separater Server wäre nicht nötig
    Selbst wenn das Projekt wieder aufgegeben würde, würden die Daten dauerhaft weiter funktionieren
  • Ich bin total begeistert von der Idee
    Ich kenne diese App, sie ist wirklich simpel, und gerade ihr adaptiver Fortschrittsansatz motiviert Anfänger hervorragend
    Ich würde die UI für so eine selbstregulierende, progressive Routine sehr gern mit dir besprechen
    Ich denke zuerst über einen (groben) Algorithmus nach, also schick mir gern eine DM
  • Die App sieht gut aus, aber beim Laden der Übungen tritt ein Fehler auf
    0:{"a":"$@1","f":"","b":"eETmgndxtv4Ar0i8Wync1"}
    1:{"serverError":"An unexpected error occurred."}
    Es wurden sogar der Request-Code (mit detaillierten Headern und Informationen) geteilt
  • Danke für den detaillierten Bericht
    Der plötzliche HN-Traffic hat den Server unerwartet komplett überrollt
    Stabilisierung und Bugfixes folgen in Kürze
    Danke nochmals fürs Testen und für das Feedback
  • Ich hatte mit mehreren technischen Problemen zu kämpfen, und das ist bei einem jungen Projekt verständlich
    Grundsätzlich berücksichtigt das Übungsempfehlungssystem aber nicht die Kernelemente des Fitness-Programmdesigns
    Im aktuellen Zustand würde ich die Nutzung zur Trainingsplanung daher nicht empfehlen
    Statt Routinegenerierung wäre es vermutlich besser, sich auf solides Workout-Logging und den Import bestehender Routinenvorlagen zu konzentrieren (ich habe gesehen, dass daran bereits Interesse besteht)
    Hier die wichtigsten Probleme, die ich erlebt habe
  1. Ich wollte ein Ganzkörpertraining, empfohlen wurden aber 33 Übungen in einer Session — völlig unrealistisch
  2. Die Übungsauswahl weist pro Muskel einfach zufällig drei Übungen zu und ignoriert Mehrmuskelziele sowie sinnvolle Volumenverteilung
  3. Es werden oft ungewöhnliche oder ineffiziente Übungen empfohlen
  4. Auch nicht vorhandene Geräte werden empfohlen; ich trainiere im Homegym und muss Maschinen komplett ausschließen können
  5. Es werden unbekannte Markengeräte empfohlen
  6. Selbst wenn ich die Geräteauswahl ändere, bleiben die Übungsempfehlungen gleich
  7. Ich kann empfohlene Übungen weder löschen noch neue hinzufügen
  • Ich sehe das ähnlich
    UI und Beschreibungen sind wirklich gut, aber die Übungsauswahl ist, selbst wenn sie überhaupt auftaucht, fragwürdig oder unlogisch
    Wie wäre es, zunächst einfach alle Standardübungen der primären/sekundären Kategorien (Langhantel, Kurzhantel, Maschine) in die Datenbank aufzunehmen und die Nutzer ihre Routinen selbst bauen zu lassen
    Dazu noch Ersatzoptionen für bestimmte Übungen
    Erst wenn das steht, dann Routinegenerierung — und es wäre großartig, wenn echte Trainer dazu Feedback geben könnten
    Die verfügbaren Geräte sollten schlicht und standardisiert sein, gebrandete Maschinen möglichst vermeiden
  • Vielen Dank, dass du dir die Zeit für so sorgfältiges Feedback genommen hast
    Solche detaillierten Hinweise sind gerade in dieser frühen Phase besonders wertvoll
    Die Logik des Trainingsprogramms ist derzeit wirklich noch sehr einfach
    Trainingsprinzipien wie Volumen, Bewegungsmuster, Erholungszyklen und Compound-/Isolationsverhältnis sind noch nicht ausreichend berücksichtigt
    Die aktuelle Version ist wirklich eher zum „Entdecken“ gedacht und ganz sicher noch kein intelligenter Coach
    Das sollte ich in der UI deutlicher kommunizieren
    Zu deinen konkreten Punkten
  1. 33 Empfehlungen sind völlig überzogen (haha)
  2. Stimmt, aktuell werden pro Muskel einfach blind drei Übungen vorgeschlagen; die Logik wird weiter ausgebaut
  3. Ich arbeite gerade daran, Metadaten wie Compound/Isolation, Haupt-/Hilfsmuskeln, Bewegungsmuster, Widerstandsqualität und Popularitäts-Tags hinzuzufügen
  4. Ich denke auch über eine Option nach, bestimmte Geräte komplett auszuschließen, etwa Maschinen
    Ich verstehe den Bedarf vollkommen: Hanteln und Klimmzugstange sind okay, aber Kabelzüge/Maschinen sollen raus; das muss in der UI konkreter werden
  5. OK
  6. Es gibt einen Bug, durch den sich die Liste nach Geräteänderungen nicht aktualisiert; wird bald behoben
    (Aktuell muss man es zweimal wiederholen, ein Render-Problem)
  7. Das Bearbeiten kompletter Routinen wird bald unterstützt
    Ich möchte das entlang guter Prinzipien verbessern und würde mich freuen, wenn du, wenn möglich, schon bei der Richtungsfindung mit Ideen hilfst
  • Andere haben die Bedeutung von „Haltungskorrektur“ angesprochen; ich frage mich, ob es Open-Source-Computer-Vision-Technik gibt, die Haltung/Form prüfen kann
    Noch interessanter wäre eine Lösung, die sich direkt auf Consumer-Hardware deployen und nutzen lässt
  • Es wäre besser, wenn die Auswahl von Geräten/Muskeln nicht verpflichtend wäre
    Zum Beispiel habe ich eine Klimmzugstange, weiß aber nicht, welche Muskeln ich damit trainieren kann
    Wie wäre stattdessen ein Filter wie „einsteigerfreundlich“
  • Darüber hatte ich selbst noch gar nicht nachgedacht, aber der aktuelle Flow verlangt am Anfang wirklich zu viel Vorwissen
    Ähnliches Feedback kam auch von anderen
    Ich werde die Filter optional machen und Empfehlungen wie „einsteigerfreundlich“, „beliebte Übungen“ und „Calisthenics“ hinzufügen
    Danke für den Hinweis
  • Könnte man dann nicht einfach bei den Geräten nur die Klimmzugstange auswählen?
  • Als Anfänger ist mir zuerst aufgefallen, wie flashy und gleichzeitig verwirrend die UI zur Muskelauswahl ist
    Wenn die Muskelauswahl schon im Onboarding verpflichtend ist, entsteht für Anfänger eine Einstiegshürde, weil sie gar nicht wissen, welche Routinen welche Muskeln ansprechen
    „Push“, „Pull“ und „Legs“ kenne ich ungefähr, aber konkrete Muskelnamen sagen mir kaum etwas
    Am Ende ist diese App damit eher auf Leute zugeschnitten, die Anatomie lernen wollen
    Es braucht einen Weg, den Einstieg etwas leichter zu machen
    Zum Beispiel: empfohlene Muskelgruppen, Presets
  • Danke für das ehrliche Feedback
    Das aktuelle Onboarding setzt wirklich viel zu viel Wissen voraus (mehr als erwartet)
    Anfänger wollen nicht wissen, was der „hintere Deltamuskel“ oder der „Latissimus“ ist — sie wollen einfach stärker werden und besser aussehen
    Im nächsten Update werde ich
  • die Muskelauswahl optional machen (oder überspringbar)
  • Presets für Anfänger hinzufügen (Ganzkörper, Oberkörper usw.)
  • Presets mit Hilfslabels wie „Brust + Trizeps (Push)“ und „Rücken + Bizeps (Pull)“ ergänzen
    Ziel ist eine einsteigerfreundliche Erfahrung, bei der man loslegen kann, ohne zuerst Anatomie lernen zu müssen
    Dein Feedback hilft wirklich sehr
    Viel Erfolg auf deiner Fitnessreise
  • „Push“ und „Pull“ mögen schwer wirken, aber wenn man „Legs“ nicht kennt, weiß man vielleicht wirklich zu wenig (Scherz)