12 points par GN⁺ 2025-06-19 | 1 commentaires | Partager sur WhatsApp
  • Inclut la génération de programmes d’entraînement, le suivi de la progression, ainsi qu’une vaste base de données d’exercices
  • Le projet est né de l’expérience de l’échec précédent de workout.lol et vise à devenir un projet évolutif durable pour la communauté open source
  • S’appuie sur les principes de Feature-Sliced Design et sur une architecture basée sur Next.js, en mettant l’accent sur l’indépendance par fonctionnalité, l’extensibilité et la maintenabilité du code
  • La base de données d’exercices peut être importée facilement via des fichiers CSV et contient des informations détaillées comme différentes caractéristiques des exercices, des vidéos et les principaux muscles ciblés
  • À l’avenir, les fonctionnalités continueront d’être enrichies avec la participation de la communauté, notamment via une application mobile, des badges/gamification, l’intégration de wearables et un forum communautaire

Aperçu et valeur de Workout-Cool

  • Workout-Cool est une plateforme moderne open source de coaching fitness qui permet aux utilisateurs de générer des programmes d’entraînement personnalisés, de consigner leur progression et d’exploiter largement une riche base de données d’exercices (avec descriptions, vidéos, etc.)
  • Un développeur ayant directement vécu l’abandon et l’arrêt de l’ancien projet workout.lol lui a redonné vie sous la forme d’une plateforme fitness open source plus durable et plus moderne pour la communauté sportive

Démarrage du projet et motivation

  • En tant que contributeur majeur du projet workout.lol, le créateur a rencontré des difficultés liées à l’échec de la collaboration avec un partenaire de fourniture de vidéos et au coût des licences vidéo
  • Après la vente du projet à un tiers, celui-ci a été rapidement abandonné ; malgré plus de 9 mois de tentatives de communication avec le nouveau propriétaire, aucune réponse n’a été obtenue
  • Il a donc été décidé de reconstruire une nouvelle plateforme moderne, améliorée dans son ensemble, afin de ne pas laisser perdre la valeur du projet initial
  • Ce projet n’a pas de but commercial. Il porte l’idée d’une évolution qui promet à la communauté open source une maintenance et un développement fiables

Philosophie de fonctionnement portée par la communauté

  • À la fois développeur et utilisateur réel, le créateur y reflète directement les fonctionnalités et expériences dont la communauté a besoin
  • Les anciens utilisateurs de workout.lol y sont les bienvenus, et les nouveaux utilisateurs peuvent y découvrir la valeur d’une plateforme fitness tournée vers l’avenir
  • Chacun peut contribuer directement et proposer des améliorations

Base de données d’exercices et import

  • Le projet embarque une riche base de données d’exercices
  • Via un format CSV d’exemple, il est possible d’importer de manière personnalisée diverses informations pour chaque exercice : id, nom, description, URL de vidéo, photo, muscle principal ciblé, attributs, etc.
    • Exemples de colonnes principales : id, name, name_en, description, description_en, full_video_url, full_video_image_url, introduction, slug, attribute_name, attribute_value, etc.
    • Exemples de types d’attributs : TYPE(force/cardio/plyométrie/stretching), PRIMARY_MUSCLE, SECONDARY_MUSCLE, EQUIPMENT, MECHANICS_TYPE, etc.
  • Les données peuvent être importées immédiatement avec une simple commande sur une ligne, ce qui offre une excellente extensibilité

Architecture du projet

  • Basé sur le Next.js App Router avec application des principes Feature-Sliced Design (FSD)
    • Met en place une structure indépendante par fonctionnalité et facile à réutiliser
    • Séparation claire des couches métier : shared → entities → features → widgets → app
    • Maintien de la cohérence entre l’interface, la logique métier et la couche de données
  • Exemples d’organisation des fichiers :
    • app/ - routes et layouts Next.js
    • processes/ - flux métier complexes
    • widgets/ - UI composable (ex. : Sidebar, Header)
    • features/ - unités principales (authentification, gestion des exercices, etc.)
    • entities/ - utilisateurs, exercices, workouts, etc.
    • shared/ - code et types communs
    • styles/ - CSS global/thèmes

Développement et déploiement

  • Node.js 18+ requis, ainsi que PostgreSQL (via Docker ou installation directe), et pnpm ou npm
  • Après clonage : installation des dépendances, configuration des variables d’environnement, mise en place de la base de données (automatique ou manuelle), puis accès à http://localhost:3000 dans le navigateur
  • Il est possible d’exécuter directement les migrations de base de données et de lancer le serveur de développement
  • Build de l’image Docker et exécution du conteneur (prévu)

Fonctionnalités prévues

  • Ajout d’exercices/vidéos
  • Application mobile (basée sur React Native)
  • Gamification (système de badges, etc.)
  • Statistiques avancées de progression et visualisation
  • Intégration de wearables (montres/trackers)
  • Support multilingue
  • Authentification OAuth (Google, Apple, etc.)
  • Forum communautaire intégré

1 commentaires

 
GN⁺ 2025-06-19
Avis Hacker News
  • Ça fait une sensation étrange mais amusante de voir mon appli workout.lol ici
    Je l’avais vendue à une personne, puis elle l’a simplement laissée à l’abandon
    Je lui ai envoyé plusieurs messages pour lui dire de me contacter si elle avait besoin d’aide, mais je n’ai jamais reçu la moindre réponse
    Du coup, voir qu’elle est de nouveau maintenue me rend vraiment très heureux
    L’amélioration de l’UI est excellente, très beau travail
  • C’est Vincenius !
    Tu n’imagines même pas à quel point j’étais heureux de voir ton nom apparaître
    Moi aussi, j’ai connu ce sentiment de voir un projet s’arrêter sans rien pouvoir y faire, et ça m’a vraiment brisé le cœur
    C’est finalement ce qui m’a poussé à tout reconstruire de zéro, en gardant l’ouverture d’esprit que tu avais montrée au lancement
    Merci pour le compliment sur l’UI, venant de toi, ça compte énormément
    Si jamais tu veux revenir, tu es le bienvenu à tout moment
    Tes idées, tes avis, ou simplement ta présence auraient déjà beaucoup de valeur
  • C’est vraiment super
    Je travaille sur une API de planification automatique de calendrier qui s’intègre à Apple CalDAV (iCal)
    Je développe une fonction de gestion d’emploi du temps centrée sur les objectifs (avec Google ORTools, je calcule très vite un énorme modèle de contraintes CP-SAT, même un an de calcul en moins de 5 secondes)
    J’y inclus aussi une fonction de repas alignés sur les objectifs nutritionnels
    En réalité, je voulais absolument intégrer un système de programme d’entraînement/exercices comme celui-ci, mais je n’avais aucune idée de quoi utiliser
    Maintenant, c’est enfin clair pour moi
    Merci d’avoir créé ce projet
  • Je me demande si quelqu’un du secteur ne l’avait pas rachetée pour bloquer une alternative gratuite
    J’ai envie de voir quel avenir attend ce projet cette fois
  • Chez moi, j’ai le message « error loading exercises »
    Je me demande ce que tu penses du projet wger
    https://github.com/wger-project est une plateforme FLOSS auto-hébergeable de gestion fitness/exercice/nutrition sous licence AGPL
    Ça doit faire presque 10 ans que ça existe, c’est basé sur une app django, avec aussi une app flutter officielle utilisable sur Android/iOS/Windows/Linux/macOS
    Il prend en charge plusieurs utilisateurs, et peut même servir à gérer une salle de sport
    body.build est un projet FLOSS plus récent, basé navigateur, centré sur la création de programmes de musculation
    L’auteur de body.build contribue aussi à wger
    Après pas mal d’essais et d’erreurs, j’utilise bien wger dans mon homelab
    Il y a plusieurs points à prendre en compte pour l’auto-hébergement, mais ça fonctionne bien
    Son plus gros défaut, c’est l’étendue de la base de données d’exercices, mais heureusement les contributeurs l’élargissent peu à peu
    Si certains peuvent contribuer des données d’exercices (et des médias associés), ce projet AGPL leur en serait certainement reconnaissant
  • J’ai récemment testé Wget, et malheureusement je ne peux pas le recommander
    L’UX du site est catastrophique et l’app mobile (sur iOS) est remplie de bugs
    Lancer un exercice, modifier une charge, enregistrer une séance : peu importe où j’appuie, l’app plante, se fige, ou me déconnecte sans arrêt
    J’utilise LiftLog maintenant, qui couvre tout ce que je veux et qui est FOSS
    https://github.com/LiamMorrow/LiftLog
    Je trouve étonnant qu’alors que le fitness et la musculation sont des loisirs si répandus aujourd’hui, il existe si peu d’apps non commerciales vraiment utilisables et bien maintenues
    C’est la conclusion à laquelle je suis arrivé après avoir testé moi-même des dizaines de projets Github
  • Même erreur chez moi
  • Je fais de la musculation depuis environ 5 ans, et ça fait plaisir de voir un outil open source bien conçu
    Avec l’expérience, on finit par comprendre que plus que les fonctions de l’app, l’important, c’est à quel point on suit régulièrement ses séances pour gérer la surcharge progressive
    Cette app est un bon choix pour qu’un débutant se lance
    Pour une adoption plus large, il lui faut absolument deux choses
  1. Une app mobile (ou une PWA ; la PWA que j’ai faite moi-même suffit largement autant qu’une app native)
  2. Une fonction pour enregistrer et gérer une routine d’entraînement spécifique sur une longue période
  • Idéalement, il faudrait pouvoir exporter et partager les données entre plusieurs UI
    https://json-schema.app/view/#?url=https%3A%2F%2Fgist.githubusercontent.com%2Fgavmor%2Fb74c4746aa9f3f63b0f50863a5e62d52%2Fraw%2F01318d1107f67ac83387a905d6556736fa7797ff%2Flifting.json
  • J’écris ça après l’avoir testé, et je ne veux absolument pas rabaisser l’OP
    Je ne suis pas d’accord avec l’idée que cette app soit un bon choix pour un débutant
    Je salue l’effort, mais l’agencement des exercices recommandés m’inquiète un peu
    Par exemple, si on choisit « dos/biceps », on obtient 9 exercices affichés sans ordre apparent
    Il n’y a aucune attention portée à l’ordre ou à la structure, un mouvement composé peut se retrouver au milieu, ou bien des chin-ups apparaissent trois fois
    Il n’y a pas de calcul de 1RM lié aux répétitions/séries/charges
    Ça recommande des bro splits peu académiques, et le tout devient encore plus dispersé
    Je me dis qu’une app PPL minimale basée sur l’équipement ferait bien mieux que ça
  • Ça fait vraiment plaisir d’être validé par quelqu’un qui a de l’expérience en salle
    Comme toi, plus j’avance, plus je trouve que l’essentiel, c’est vraiment la régularité et le suivi de progression (dans mon cas, c’est surtout pour la santé mentale, donc je me concentre désormais plus sur mon état que sur la performance)
    La sauvegarde de routines et le suivi à long terme font partie de la roadmap
    C’est justement pour ça que l’architecture de « workout session » a été conçue totalement différemment de l’ancienne app
    Je veux permettre aux utilisateurs de créer des blocs d’entraînement individuels, puis de les réutiliser, partager, analyser et faire évoluer de la meilleure manière possible
    Si ça t’intéresse, j’aimerais bien savoir comment tu as abordé cette gestion de routine dans la PWA que tu as créée
    On dirait qu’on a suivi des chemins similaires, donc j’aimerais vraiment que tu partages ton retour
  • Si tu cherches des sources de données, voici des projets qui peuvent être utiles
    https://wrkout.xyz/ (API de base de données ouverte d’exercices avec images/vidéos)
    https://github.com/wrkout/exercises.json (dataset open source d’exercices)
    Je recommande de les utiliser si besoin
  • J’avais déjà vu wrkout.xyz il y a quelque temps, c’est vraiment un super projet
    Cette fois, pour éviter clairement tout problème de licence autour des vidéos, mon partenaire et moi avons entièrement reconstruit le dataset depuis zéro
    Comme ça, on garde le contrôle complet des données, pour pouvoir modifier librement les attributs, les traductions, etc.
    Cela dit, je suis vraiment ravi de voir émerger autant de projets ouverts dans ce domaine
    Et si on peut créer des synergies pour faire grandir les deux communautés, j’aimerais beaucoup explorer ça
    Mes DM sont ouverts
  • Voilà ce que j’appelle une vraie contribution
    Pas juste lancer une idée : tu as déjà rassemblé le dataset, ce qui permet même à un débutant de démarrer immédiatement
    Merci beaucoup
  • Franchement, cette app est meilleure que ce à quoi je m’attendais
    Ce que j’aimerais, c’est une fonction qui recommande les charges et le nombre de répétitions selon l’exercice
    Tu pourrais t’inspirer du programme de fitness « 100 Pushups »
  • Faire un maximum de répétitions en guise de test (par ex. 8 pompes)
  • L’app génère ensuite un planning (3, 4, 3, 3, 5, etc., avec 2 minutes de repos entre les séries)
  • Elle recommande progressivement et de manière adaptative le nombre de répétitions selon le niveau de l’utilisateur
  • Et elle ajuste le parcours pour atteindre 100 répétitions max vers la 6e semaine
    Si ça t’intéresse, je suis aussi partant pour discuter de l’UI
  • Si tu veux abandonner le backend, une autre idée serait l’intégration avec AT Protocol
    Toutes les données utilisateur seraient stockées dans le PDS, donc plus besoin de serveur séparé
    Et même si le projet retombe à l’abandon, les données continueraient à fonctionner de façon pérenne
  • J’adore complètement l’idée
    Je connais cette app, elle est vraiment simple, et sa progression adaptative est particulièrement excellente pour motiver les débutants
    J’aimerais vraiment discuter de l’UI pour mettre en place ce type de routine auto-ajustée et progressive
    Je vais d’abord réfléchir à un algorithme (rudimentaire), donc envoie-moi un DM
  • L’app a l’air bien, mais j’ai eu une erreur pendant le chargement des exercices
    0:{"a":"$@1","f":"","b":"eETmgndxtv4Ar0i8Wync1"}
    1:{"serverError":"An unexpected error occurred."}
    J’ai même partagé le code de la requête, avec les en-têtes détaillés et les infos
  • Merci pour le rapport détaillé
    Le pic soudain de trafic HN a mis le serveur à terre bien plus violemment que prévu
    Je vais bientôt stabiliser tout ça et corriger les bugs
    Merci encore pour les tests et les retours
  • J’ai rencontré plusieurs problèmes techniques, ce qui est compréhensible pour un projet récent
    Mais sur le fond, le système de recommandation d’exercices ne prend pas en compte les éléments essentiels de la conception d’un programme de fitness
    En l’état, je ne peux pas vraiment recommander son utilisation pour concevoir un programme d’entraînement
    À mon avis, il vaudrait mieux se concentrer sur l’enregistrement d’entraînements déjà éprouvés et l’import de templates de routines plutôt que sur la génération de routines (et j’ai vu que tu t’y intéressais déjà)
    Voici la liste des principaux problèmes que j’ai rencontrés
  1. Je voulais un entraînement full body, et on m’a recommandé 33 exercices pour une seule séance — irréaliste
  2. Le choix des exercices attribue aléatoirement seulement 3 exercices par muscle, sans tenir compte des muscles multiples ciblés ni d’une répartition cohérente du volume
  3. Des exercices peu connus ou peu efficaces sont souvent recommandés
  4. Des équipements que je n’ai pas sont quand même recommandés ; j’ai une home gym, donc je dois exclure totalement les machines
  5. Des machines de marques obscures sont recommandées
  6. Même en changeant la sélection d’équipement, les recommandations d’exercices restent identiques
  7. Impossible de supprimer les exercices recommandés ni d’en ajouter de nouveaux
  • Je partage globalement cet avis
    L’UI et les explications sont vraiment bonnes, mais le choix des exercices est flou ou peu rationnel quand il y en a
    Pourquoi ne pas simplement mettre dans la base de données tous les exercices standards principaux/secondaires (barre, haltères, machines), puis laisser les utilisateurs composer eux-mêmes leurs routines ?
    Il serait aussi bien d’avoir des options de remplacement pour certains exercices
    Une fois tout cela prêt, vous pourriez implémenter la génération de routines, puis obtenir le retour de vrais coachs
    Pour l’équipement disponible, mieux vaudrait rester simple et standard, en évitant autant que possible les machines de marque
  • Merci sincèrement d’avoir pris le temps de laisser un retour aussi détaillé
    Ce genre d’avis précis aide énormément, surtout à ce stade précoce
    La logique du programme d’entraînement est encore vraiment très basique
    Elle ne reflète pas encore assez bien les principes d’entraînement (volume, schémas de mouvement, récupération, composé/isolation)
    La version actuelle est vraiment faite pour la découverte, pas du tout pour jouer le rôle d’un coach intelligent
    Je devrais l’indiquer clairement dans l’UI
    Pour répondre point par point
  1. 33 recommandations, c’est complètement excessif (rires)
  2. Oui, pour l’instant ça recommande aveuglément 3 exercices par muscle, mais je vais renforcer la logique
  3. Je travaille à ajouter des métadonnées : classification composé/isolation, muscles principaux/secondaires, schémas de mouvement, qualité de résistance, tags de popularité, etc.
  4. J’envisage d’ajouter une option pour exclure complètement certains équipements, comme les machines
    Je comprends très bien le besoin du type : « j’ai des haltères et une barre de traction, mais je ne veux ni câble ni machine », donc je vais rendre cette partie de l’UI plus précise
  5. OK
  6. Il y a bien un bug qui empêche la liste de se mettre à jour quand on change l’équipement ; ce sera corrigé bientôt
    (Pour l’instant, il faut répéter l’action deux fois, à cause d’un problème de rendu)
  7. L’édition complète de la routine arrive bientôt
    J’aimerais améliorer tout ça selon de bons principes, donc si possible j’aimerais beaucoup que tu participes, ne serait-ce qu’avec des idées pour aider à définir la direction
  • D’autres ont mentionné l’importance de la « correction de posture » ; je me demande s’il existe des technologies open source de computer vision capables de vérifier la posture/la forme
    Je serais encore plus intéressé par une solution qu’on peut déployer et utiliser directement sur du matériel grand public
  • Ce serait mieux si le choix de l’équipement/des muscles n’était pas obligatoire
    Par exemple, j’ai une barre de traction, mais je ne sais pas quels muscles je peux travailler avec
    Une approche par filtres du type « facile pour débuter » serait peut-être préférable
  • Je n’y avais pas pensé non plus, mais le flux actuel demande trop de connaissances dès le départ
    D’autres personnes m’ont fait le même retour
    Je vais rendre ces filtres facultatifs et ajouter des recommandations comme « adapté aux débutants », « exercices populaires », « calisthenics », etc.
    Merci de l’avoir signalé
  • Dans ce cas, il suffit de sélectionner uniquement la barre de traction comme équipement, non ?
  • En tant que débutant, la première chose que j’ai ressentie, c’est que l’UI de sélection des muscles est à la fois tape-à-l’œil et déroutante
    Pendant l’onboarding initial, la sélection des muscles est obligatoire, ce qui crée une barrière d’entrée pour les novices qui ne savent pas quelles routines ciblent quels muscles
    Je vois à peu près ce que sont « push », « pull » et « legs », mais les noms précis des muscles me sont totalement inconnus
    Au final, cette app semble surtout adaptée aux gens prêts à étudier l’anatomie
    Il faut réfléchir à un moyen de rendre l’entrée un peu plus accessible
    Par exemple : groupes musculaires recommandés, presets
  • Merci pour ce retour honnête
    L’onboarding actuel suppose beaucoup trop de connaissances (plus encore que je ne l’imaginais)
    Les débutants ne veulent pas entendre parler de « deltoïde postérieur » ou de « grand dorsal » ; ils veulent juste devenir plus forts et avoir un meilleur physique
    Dans la prochaine mise à jour
  • la sélection des muscles deviendra facultative (ou pourra être ignorée)
  • il y aura des presets pour débutants (full body, haut du corps, etc.)
  • et des labels d’aide comme « poitrine + triceps (push) », « dos + biceps (pull) », etc.
    Le but est de créer une expérience accueillante qui permette de commencer tout de suite, sans avoir à étudier l’anatomie au préalable
    Ton retour m’aide vraiment beaucoup
    Bon courage dans ton parcours fitness
  • « Push » et « pull », je veux bien que ça puisse sembler compliqué, mais si on ne comprend pas « legs », là c’est qu’on ne connaît vraiment rien (je plaisante)