2 points par GN⁺ 2023-12-25 | 1 commentaires | Partager sur WhatsApp
  • Endurain est un service de suivi fitness auto-hébergeable conçu pour permettre aux utilisateurs de contrôler directement leurs données et leur environnement d’hébergement, similaire à Strava mais axé sur la confidentialité et la personnalisation
  • Le frontend repose sur Vue.js, et le backend sur Python FastAPI ; l’ensemble utilise PostgreSQL, Jaeger, Alembic, SQLAlchemy, etc., pour la gestion des données d’activité et le suivi de base
  • Il prend en charge l’intégration avec Strava et Garmin Connect, et permet aussi l’import manuel d’activités via des fichiers .gpx, .tcx, .fit
  • Des images Docker et un exemple docker-compose.yml.example sont fournis, avec une configuration gérée par variables d’environnement pour faciliter le déploiement et la personnalisation
  • Le dépôt GitHub est un miroir en lecture seule et l’activité du projet se déroule sur Codeberg ; le projet est actuellement en gel temporaire des fonctionnalités, avec une priorité donnée au renforcement des bases plutôt qu’aux nouvelles fonctions

Fonctionnalités proposées par Endurain

  • Endurain est un service de suivi fitness auto-hébergeable dont l’objectif est de donner aux utilisateurs un contrôle total sur leurs données et leur environnement d’hébergement
  • C’est un service similaire à Strava, mais centré sur la confidentialité et la personnalisation
  • Les données d’activité peuvent être importées via l’intégration à des services externes ou par téléversement de fichiers
    • Intégration Strava prise en charge
    • Intégration Garmin Connect prise en charge
    • Téléversement manuel de fichiers .gpx, .tcx, .fit pris en charge

Architecture technique

  • Le frontend est construit avec Vue.js, Notivue et Bootstrap CSS
  • Le backend est centré sur Python FastAPI
    • Alembic
    • SQLAlchemy
    • Apprise
    • stravalib pour l’intégration Strava
    • python-garminconnect pour l’intégration Garmin Connect
    • gpxpy pour l’import .gpx
    • tcxreader pour l’import .tcx
    • fitdecode pour l’import .fit
  • La base de données utilise PostgreSQL
  • Jaeger est utilisé pour le suivi et la supervision de base

Déploiement et configuration

  • Des images Docker sont fournies pour déployer Endurain
  • Le dépôt contient un fichier docker-compose.yml.example permettant de voir un exemple de déploiement
  • La configuration est gérée via des variables d’environnement, ce qui offre souplesse et facilité de personnalisation
  • Plus d’informations sont disponibles dans la documentation Endurain

Environnement de démonstration

  • Une démo permettant d’essayer Endurain sans installation est disponible
  • L’environnement de démonstration est réinitialisé chaque jour à minuit, fuseau Europe/Lisbon
  • Il ne faut pas y stocker de données importantes

État du projet et licence

  • Le dépôt GitHub est un miroir en lecture seule ; les issues, pull requests et l’activité du projet sont gérées sur Codeberg
  • Endurain est actuellement en gel temporaire des fonctionnalités
  • Le projet prend en charge plusieurs langues et il est possible de contribuer aux traductions via Codeberg Translate
  • La licence est AGPL-3.0
  • Endurain® est une marque de João Vitória Silva
    • L’auto-hébergement non commercial à des fins personnelles, éducatives, de recherche ou communautaires, ainsi que l’usage du nom et du logo, sont autorisés
    • Toute utilisation commerciale du nom ou du logo Endurain, comme l’hébergement payant, un produit ou un service, n’est pas autorisée sans autorisation écrite préalable

1 commentaires

 
GN⁺ 2023-12-25
Avis sur Hacker News
  • Je migre petit à petit vers intervals.icu(https://intervals.icu/)
    Comme c’est basé sur les dons, c’est assez proche de « l’open source », et je trouve ça bien meilleur que Strava

    • Je ne vois vraiment pas ce que « basé sur les dons, donc proche de l’open source » est censé vouloir dire
    • Je n’arrive pas à trouver de lien vers le code source sur le site ; quelqu’un sait où il faut regarder ?
    • Ce n’est pas tout à fait la même chose. Strava ressemble davantage à une plateforme sociale, tandis qu’intervals.icu est plutôt une plateforme d’entraînement et de suivi des progrès
      Si j’utilise Strava, c’est parce que mes amis et ma famille me motivent, pas parce que je veux obtenir des chiffres de puissance/fréquence cardiaque plus élevés
  • Il manque une fonctionnalité pour une application web : le suivi automatique des activités enregistrées par une montre connectée me semble difficile
    La solution de contournement semble être d’importer automatiquement dans Strava, puis de connecter Strava à Endurain

    • Une application web peut aussi importer automatiquement les activités d’une montre Garmin
      Garmin fournit une interface REST pour Connect afin d’importer les activités FIT
      https://developer.garmin.com/gc-developer-program/activity-a...
    • Les montres connectées n’envoient pas directement les activités vers Strava, si ? En général, elles se connectent au service cloud du fabricant, comme Garmin Connect, puis Strava s’y intègre via API
      Donc ce qui manque semble plutôt être une intégration entre Endurain et les principales plateformes des fabricants. Je n’ai pas vérifié le code pour savoir si c’est vraiment absent
    • Quand je l’utilisais il y a quelque temps, l’application Suunto permettait de configurer un envoi de données personnalisé, et à l’époque l’envoi vers Strava fonctionnait aussi comme ça
      Il me semble que Garmin le permettait aussi, mais je ne sais pas ce qu’il en est dans les versions récentes
    • Une piste pourrait être de l’intégrer à RunGap, qui se connecte à plusieurs services
  • Si la personne n’est pas développeur professionnel et n’a que les notions de développement apprises à l’université il y a 10 ans, avoir construit un système qui paraît aussi abouti est un beau travail
    Cela dit, je ne sais pas si c’est le développeur d’origine, mais je me demande s’il ne craint pas d’avoir fait des erreurs qui lui compliqueront la vie plus tard. Par exemple des problèmes de sécurité ou des erreurs difficiles à corriger ensuite

    • J’ai longtemps été programmeur amateur, mais je n’ai jamais vraiment eu le temps de devenir très bon en code
      Je suis du genre à perdre une heure sur une petite faute de frappe ou un bug qui devrait être facile à trouver
      J’utilise ChatGPT pour m’aider sur les projets, générer du code et signaler des problèmes dans le code
      En particulier, quand il s’agit d’implémenter des fonctionnalités courantes, il gère souvent mieux les cas limites que je ne le ferais seul, et si je lui demande de combler des failles de sécurité, il s’en sort mieux que mon niveau
      Hier encore, il m’a proposé 7 stratégies pour bloquer des bots qui remplissaient un formulaire ; j’en ai appliqué quelques-unes en quelques minutes et le problème des bots s’est arrêté immédiatement
      Des erreurs arrivent évidemment, mais les outils d’IA, utilisés avec son propre esprit critique, aident à les réduire. On obtient de bien meilleures réponses quand on corrige souvent l’IA, qu’on lui demande de l’aide pour prévenir certains types de problèmes, ou qu’on rédige les prompts à partir de ses connaissances existantes
    • Tous les développeurs font des erreurs. L’expérience ne fait que déplacer le seuil des erreurs évidentes vers des erreurs moins évidentes
      Ce qui est impressionnant, c’est d’avoir construit le système et de l’avoir probablement ouvert aux retours de la communauté, ce qui peut mener à un meilleur résultat qu’un développeur expérimenté qui travaillerait seul pendant des années par crainte de la sécurité
      À mon avis, ce qui compte plus que les erreurs elles-mêmes, c’est la vitesse à laquelle on les découvre et les corrige. Et il est important de mettre en place des systèmes qui se renforcent eux-mêmes — linters, tests unitaires, système de types, CI/CD — pour éviter que les mêmes problèmes se reproduisent. Pour plaisanter, j’appelle ça du développement fondé sur l’humilité
    • Si on se laisse gouverner par ce genre de peur, on ne construit en réalité jamais rien
      Même les développeurs les plus expérimentés commettent ce type d’erreurs. Si l’on pense avoir dépassé ce stade, il faut encore plus d’expérience pour voir la vérité
      La meilleure façon d’apprendre est de créer des projets, de faire des erreurs et de trouver comment les corriger. Plus elles sont difficiles à corriger, plus on en tiendra compte dès la conception du projet suivant
    • En parcourant rapidement le PHP, il semble utiliser SHA-2 pour le hachage des mots de passe ; la probabilité qu’il y ait ce genre de problème paraît donc assez élevée
      IA ou débutant, au final ce n’est qu’une question de degré dans l’erreur
    • Je ne vois pas de quoi il faudrait avoir peur. Quel est le risque réel ?
  • Le nom est excellent. On dirait un jeu de mots entre endurance et le nom du grand champion cycliste espagnol Miguel Induráin
    https://en.m.wikipedia.org/wiki/Miguel_Indur%C3%A1in

    • C’était le meilleur parmi les meilleurs à une époque où tout le monde se dopait comme des fous
      Il a travaillé avec le pionnier de l’EPO, le Dr Conconi, et même s’il n’a jamais été contrôlé positif, il paraît peu probable qu’il ait été clean
  • N’est-ce pas plutôt un frontend alternatif avec une fonction de sauvegarde ?
    Au final, on dirait qu’il faut d’abord donner ses données à Strava avant qu’elles arrivent dans cet outil

    • C’est ce qu’il semble. Le problème, c’est que le contrat de l’API Strava (https://www.strava.com/legal/api) interdit explicitement de reproduire les fonctionnalités de Strava
  • J’ai aussi une alternative assez rudimentaire que j’ai faite, sans aucun besoin de Strava : https://github.com/cfe84/gpx-tools/blob/main/README.md
    C’est une commande CLI à exécuter dans un dossier contenant des traces GPX ; les segments sont définis directement dans un fichier JSON, puis on peut lister les performances par segment
    J’enregistre mes activités avec OsmAnd, je les synchronise via syncthing avec foldersync, puis je lance l’outil dans le dossier cible
    La logique de calcul des segments peut servir de référence. Je ne prétends pas qu’elle soit excellente, mais cela pourrait être une bonne fonctionnalité à ajouter au serveur

  • Je pense que la fonctionnalité phare de Strava, ce sont les segments
    Même si l’on ne s’intéresse pas au meilleur temps parmi tous les utilisateurs, c’est-à-dire au KOM, il est intéressant de pouvoir comparer sa progression au fil du temps sur un tronçon de route précis
    En regardant à la fois la fréquence cardiaque et l’effort ressenti, on peut estimer son niveau de forme actuel, ou à quel point on est éloigné de sa meilleure condition

    • Il suffirait que quelqu’un crée un hub central ouvert pour les segments et classements par type d’activité
      Ensuite, il faudrait un moyen de bloquer ou supprimer les segments malveillants et leurs auteurs, et un système de vote pourrait être envisageable
      Détecter les segments pendant une activité est délicat, et j’aurais aimé creuser davantage. Je pourrais sans doute m’appuyer sur une explication de ChatGPT, mais je sais au moins que cela implique des boîtes englobantes en latitude/longitude et la détection des points de départ et d’arrivée à l’intérieur
      J’ai un vague souvenir que Strava détenait un brevet quelconque sur les segments
    • C’est bien une fonctionnalité sympa, mais Strava la pousse assez fortement pour donner envie de payer 80 dollars par an
  • Je me demande comment cela pourrait fonctionner avec des outils mobiles comme Gadgetbridge[0]
    Cette application permet de contourner les applications propriétaires des montres connectées et d’éviter d’envoyer les données de santé et de localisation à des services commerciaux
    Mais elle ne prend pas en charge les principales montres de sport de Garmin, seulement certains appareils[1]. Il faut donc connecter la montre en USB pour transférer les traces et y accéder depuis un ordinateur, sans prise en charge mobile
    [0] https://f-droid.org/en/packages/nodomain.freeyourgadget.gadg...
    [1] https://gadgetbridge.org/gadgets/

  • Est-ce intégré au Fediverse ? La principale raison d’utiliser Strava, c’est son côté réseau social
    Garmin Connect a de meilleurs outils d’analyse que Strava. Je n’ai pas encore essayé Endurain

    • J’aimerais une version FOSS ActivityPub de Strava
  • Dommage que Runalyze ne soit plus open source, mais les anciennes versions existent encore
    https://github.com/Runalyze/Runalyze