- 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
Avis Hacker News
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
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
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
J’ai envie de voir quel avenir attend ce projet cette fois
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
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
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
https://json-schema.app/view/#?url=https%3A%2F%2Fgist.githubusercontent.com%2Fgavmor%2Fb74c4746aa9f3f63b0f50863a5e62d52%2Fraw%2F01318d1107f67ac83387a905d6556736fa7797ff%2Flifting.json
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
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
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
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
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
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 »
Si ça t’intéresse, je suis aussi partant pour discuter de l’UI
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
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
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
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
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
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
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
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
(Pour l’instant, il faut répéter l’action deux fois, à cause d’un problème de rendu)
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
Je serais encore plus intéressé par une solution qu’on peut déployer et utiliser directement sur du matériel grand public
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
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é
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
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
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