- Endurain ist ein selbst hostbarer Fitness-Tracking-Dienst, der darauf ausgelegt ist, dass Nutzer ihre Daten und Hosting-Umgebung direkt kontrollieren; er ähnelt Strava, legt den Schwerpunkt aber auf Datenschutz und Anpassbarkeit
- Das Frontend basiert auf Vue.js, das Backend auf Python FastAPI; für die Verwaltung von Aktivitätsdaten und grundlegendes Tracking werden unter anderem PostgreSQL, Jaeger, Alembic und SQLAlchemy eingesetzt
- Unterstützt die Anbindung an Strava und Garmin Connect; Aktivitäten können außerdem manuell über
.gpx-,.tcx- und.fit-Dateien hochgeladen werden - Es werden Docker-Images und ein Beispiel
docker-compose.yml.examplebereitgestellt; die Konfiguration erfolgt über Umgebungsvariablen, um Deployment und Anpassung zu erleichtern - Das GitHub-Repository ist ein schreibgeschützter Mirror, die Projektaktivität findet auf Codeberg statt; derzeit gilt ein vorübergehender Feature-Freeze, bei dem der Fokus stärker auf der technischen Basis als auf neuen Funktionen liegt
Welche Funktionen Endurain bietet
- Endurain ist ein selbst hostbarer Fitness-Tracking-Dienst mit dem Ziel, dass Nutzer ihre Daten und Hosting-Umgebung vollständig kontrollieren
- Es ist ein Dienst ähnlich wie Strava, der Fokus liegt jedoch auf Datenschutz und Anpassbarkeit
- Aktivitätsdaten können über die Anbindung externer Dienste oder per Dateiupload importiert werden
- Unterstützung für Strava-Anbindung
- Unterstützung für Garmin-Connect-Anbindung
- Unterstützung für manuellen Upload von
.gpx-,.tcx- und.fit-Dateien
Technischer Aufbau
- Das Frontend besteht aus Vue.js, Notivue und Bootstrap CSS
- Das Backend ist rund um Python FastAPI aufgebaut
- Alembic
- SQLAlchemy
- Apprise
stravalibfür die Strava-Anbindungpython-garminconnectfür die Garmin-Connect-Anbindunggpxpyfür den Import von.gpxtcxreaderfür den Import von.tcxfitdecodefür den Import von.fit
- Als Datenbank wird PostgreSQL verwendet
- Für grundlegendes Tracking und Monitoring wird Jaeger eingesetzt
Deployment und Konfiguration
- Für die Bereitstellung von Endurain werden Docker-Images angeboten
- Das Repository enthält die Datei
docker-compose.yml.example, an der sich ein Deployment-Beispiel orientieren lässt - Die Konfiguration erfolgt über Umgebungsvariablen und bietet dadurch Flexibilität und einfache Anpassbarkeit
- Weitere Informationen finden sich in der Endurain documentation
Demo-Umgebung
- Es gibt eine Demo, mit der sich Endurain ohne Installation ausprobieren lässt
- https://demo.endurain.com
- Benutzername:
admin - Passwort:
admin
- Die Demo-Umgebung wird täglich um Mitternacht in der Zeitzone Europe/Lisbon zurückgesetzt
- In der Demo sollten keine wichtigen Daten gespeichert werden
Projektstatus und Lizenz
- Das GitHub-Repository ist ein schreibgeschützter Mirror; Issues, Pull Requests und Projektaktivitäten werden auf Codeberg verwaltet
- Endurain befindet sich in einem vorübergehenden Feature-Freeze
- Das Projekt ist nicht eingestellt; der Fokus wurde von neuen Funktionen auf die Stärkung der technischen Basis verlagert
- Erläuterungen dazu gibt es in Pausing new features so Endurain can keep growing
- Es gibt Mehrsprachenunterstützung, und über Codeberg Translate kann zur Übersetzung beigetragen werden
- Die Lizenz ist AGPL-3.0
- Endurain® ist eine Marke von João Vitória Silva
- Nicht kommerzielles Self-Hosting sowie die Nutzung von Name und Logo für persönliche, Bildungs-, Forschungs- und Community-Zwecke sind erlaubt
- Eine kommerzielle Nutzung des Namens oder Logos von Endurain, etwa für bezahltes Hosting, Produkte oder Dienstleistungen, ist ohne vorherige schriftliche Genehmigung nicht erlaubt
1 Kommentare
Meinungen auf Hacker News
Ich wechsle nach und nach zu intervals.icu(https://intervals.icu/)
Da es spendenbasiert ist, fühlt es sich gewissermaßen eher nach „Open Source“ an, und ich finde es deutlich besser als Strava
Ich nutze Strava, weil Freunde und Familie mich motivieren, nicht weil ich höhere Leistungs-/Herzfrequenzwerte bekommen will
Als Web-App fehlt eine Funktion: automatisches Tracking von Aktivitäten, die von einer Smartwatch aufgezeichnet wurden, halte ich für schwierig
Der Workaround scheint zu sein, erst automatisch in Strava zu importieren und dann Strava mit Endurain zu verbinden
Garmin bietet eine REST-Schnittstelle für Connect an, um FIT-Aktivitäten zu importieren
https://developer.garmin.com/gc-developer-program/activity-a...
Was fehlt, scheint also eher die Integration zwischen Endurain und den großen Herstellerplattformen zu sein. Ob sie tatsächlich fehlt, habe ich im Code nicht geprüft
Ich meine, dass das auch bei Garmin möglich war, bin mir bei den aktuellen Versionen aber nicht sicher
Wenn man kein professioneller Entwickler ist und nur die Entwicklungskonzepte kennt, die man vor 10 Jahren an der Uni gelernt hat, ist es beachtlich, ein so ausgereift wirkendes System gebaut zu haben
Trotzdem frage ich mich, ob man keine Angst hat, später über Fehler zu stolpern, die einen ausbremsen — ich weiß nicht, ob es der ursprüngliche Entwickler ist. Zum Beispiel Sicherheitsprobleme oder Fehler, die später schwer zu beheben sind
Ich bin der Typ, der wegen eines kleinen Tippfehlers oder eines Bugs, der leicht zu finden sein sollte, eine Stunde verliert
Ich nutze ChatGPT als Projektassistent, zum Generieren von Code und zum Aufzeigen von Problemen im Code
Besonders bei der Implementierung gängiger Funktionen achtet es besser auf Randfälle, als ich es allein tun würde, und wenn ich es bitte, Sicherheitslücken zu schließen, macht es das besser als ich auf meinem Niveau
Erst gestern hat es sieben Strategien vorgeschlagen, um Bots am Ausfüllen eines Formulars zu hindern; nachdem ich einige davon in wenigen Minuten umgesetzt hatte, hörte das Bot-Problem sofort auf
Fehler passieren natürlich, aber AI-Tools helfen dabei, solche Fehler zu reduzieren, wenn man sie zusammen mit dem eigenen kritischen Denken einsetzt. Man bekommt deutlich bessere Antworten, wenn man die AI häufig korrigiert, gezielt um Hilfe aus der Perspektive bittet, bestimmte Problemklassen zu verhindern, oder Prompts auf Basis des eigenen Vorwissens formuliert
Beeindruckend ist, dass hier ein System gebaut und vermutlich für Community-Feedback geöffnet wurde; das kann zu besseren Ergebnissen führen, als wenn ein erfahrener Entwickler aus Sicherheitsbedenken jahrelang allein daran baut
Wichtiger als der Fehler selbst ist meiner Ansicht nach die Geschwindigkeit, mit der man ihn findet und behebt. Und wichtig ist, selbstverstärkende Systeme wie Linter, Unit-Tests, Typsysteme und CI/CD aufzubauen, damit dasselbe nicht wieder passiert. Im Scherz nenne ich das Demut-getriebene Entwicklung
Selbst die erfahrensten Entwickler machen solche Fehler. Wenn man glaubt, über diese Phase hinaus zu sein, braucht man mehr Erfahrung, um die Wahrheit zu sehen
Am besten lernt man, indem man Projekte baut, Fehler macht und herausfindet, wie man sie behebt. Je schwerer etwas zu reparieren ist, desto eher berücksichtigt man es beim nächsten Projekt schon im ursprünglichen Design
Ob AI oder Anfänger — am Ende ist es meiner Meinung nach nur ein Unterschied im Ausmaß dessen, wie falsch man liegt
Der Name ist großartig. Sieht nach einem Wortspiel aus endurance und dem Namen des großen spanischen Radchampions Miguel Induráin aus
https://en.m.wikipedia.org/wiki/Miguel_Indur%C3%A1in
Er arbeitete mit dem EPO-Pionier Dr. Conconi zusammen und wurde nie erwischt, aber die Wahrscheinlichkeit, dass er sauber war, scheint gering
Ist das nicht eher ein alternatives Frontend mit Backup-Funktion?
Am Ende scheint die Struktur zu sein, dass man die Daten zuerst an Strava geben muss, bevor sie in dieses Tool kommen
Es gibt auch eine ziemlich grobe Alternative von mir, die Strava überhaupt nicht braucht: https://github.com/cfe84/gpx-tools/blob/main/README.md
Das ist ein CLI-Befehl, den man in einem Ordner mit GPX-Tracks ausführt; Segmente definiert man selbst in einer JSON-Datei und kann dann die Leistungen pro Segment auflisten
Ich zeichne Aktivitäten mit OsmAnd auf, synchronisiere per foldersync über syncthing und führe es dann im Zielordner aus
Die Segment-Berechnungslogik kann als Referenz dienen. Ich behaupte nicht, dass sie großartig ist, aber sie könnte ein gutes Zusatzfeature für einen Server sein
Ich denke, das Killer-Feature von Strava sind die Segmente.
Selbst wenn man sich nicht für die schnellste Zeit aller Nutzer, also den KOM, interessiert, ist es wertvoll, den eigenen Fortschritt auf einem bestimmten Straßenabschnitt im Lauf der Zeit vergleichen zu können.
Wenn man Herzfrequenz und subjektive Belastung zusammen betrachtet, kann man einschätzen, wie gut die aktuelle Fitness ist oder wie weit man von der Bestform entfernt ist.
Danach bräuchte es Möglichkeiten, bösartige Segmente und Einreicher zu blockieren oder zu entfernen; eventuell wäre auch ein Abstimmungssystem denkbar.
Segmente während einer Aktivität zu erkennen, ist knifflig, und ich wollte dazu noch mehr recherchieren. Vielleicht könnte man sich auch eine Erklärung von ChatGPT zunutze machen, aber ich weiß zumindest, dass dabei wohl Bounding Boxes für Breiten-/Längengrade und die Erkennung von Start- und Endpunkten darin eine Rolle spielen.
Ich erinnere mich vage, dass Strava irgendwelche Patente zu Segmenten hatte.
Ich frage mich, wie sich das mit mobilen Tools wie Gadgetbridge[0] verwenden ließe.
Diese App umgeht die proprietären Apps von Smartwatches und verhindert, dass Gesundheits- und Standortdaten bei kommerziellen Diensten hochgeladen werden.
Allerdings unterstützt sie die wichtigsten Sportuhren von Garmin nicht, sondern nur einige Geräte[1]. Deshalb muss man die Uhr per USB anschließen, Tracks übertragen und sie am Computer auslesen; mobile Unterstützung gibt es nicht.
[0] https://f-droid.org/en/packages/nodomain.freeyourgadget.gadg...
[1] https://gadgetbridge.org/gadgets/
Gibt es eine Integration mit dem Fediverse? Der Hauptgrund, Strava zu nutzen, ist der Social-Network-Charakter.
Garmin Connect hat bessere Analyse-Tools als Strava. Endurain habe ich noch nicht ausprobiert.
Schade, dass Runalyze nicht mehr Open Source ist, aber die alte Version ist noch vorhanden.
https://github.com/Runalyze/Runalyze