2 पॉइंट द्वारा GN⁺ 2023-12-25 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Endurain एक self-hosted fitness tracking service है जिसे users को अपने data और hosting environment पर सीधा control देने के लिए बनाया गया है; यह Strava जैसा है, लेकिन privacy protection और customization पर केंद्रित है
  • frontend Vue.js पर और backend Python FastAPI पर आधारित है, और PostgreSQL, Jaeger, Alembic, SQLAlchemy आदि का उपयोग करके activity data management और basic tracing तैयार करता है
  • Strava और Garmin Connect integration support करता है, और .gpx, .tcx, .fit files के जरिए activities को manually upload करना भी संभव है
  • Docker image और docker-compose.yml.example example उपलब्ध हैं, और settings environment variables से handle की जाती हैं ताकि deployment और customization आसान रहे
  • GitHub repository read-only mirror है और project activity Codeberg पर होती है; फिलहाल यह नई features के बजाय foundation मजबूत करने पर केंद्रित temporary feature freeze स्थिति में है

Endurain क्या-क्या features देता है

  • Endurain एक self-hosted fitness tracking service है, जिसका लक्ष्य users को अपने data और hosting environment पर पूरा control देना है
  • यह Strava जैसी service है, लेकिन focus privacy protection और customization पर है
  • activity data को external service integration या file upload के जरिए import किया जा सकता है
    • Strava integration support
    • Garmin Connect integration support
    • .gpx, .tcx, .fit files का manual upload support

Technical stack

  • frontend Vue.js, Notivue, Bootstrap CSS से बना है
  • backend मुख्य रूप से Python FastAPI पर आधारित है
    • Alembic
    • SQLAlchemy
    • Apprise
    • Strava integration के लिए stravalib
    • Garmin Connect integration के लिए python-garminconnect
    • .gpx import के लिए gpxpy
    • .tcx import के लिए tcxreader
    • .fit import के लिए fitdecode
  • database के लिए PostgreSQL इस्तेमाल होता है
  • basic tracing और monitoring के लिए Jaeger इस्तेमाल होता है

Deployment और configuration

  • Endurain deployment के लिए Docker image उपलब्ध है
  • repository में docker-compose.yml.example file है, जिससे deployment example देखा जा सकता है
  • settings environment variables के जरिए handle की जाती हैं, जिससे flexibility और customization में सुविधा मिलती है
  • अधिक जानकारी Endurain documentation में देखी जा सकती है

Demo environment

  • Endurain को install किए बिना आज़माने के लिए demo उपलब्ध है
  • demo environment Europe/Lisbon timezone के अनुसार हर दिन midnight पर reset होता है
  • demo में important data save नहीं करना चाहिए

Project status और license

  • GitHub repository read-only mirror है, और issues, pull requests व project activity Codeberg पर manage होते हैं
  • Endurain temporary feature freeze स्थिति में है
    • project बंद नहीं हुआ है; focus नई features से हटकर foundation मजबूत करने पर गया है
    • संबंधित explanation Pausing new features so Endurain can keep growing में देखी जा सकती है
  • multilingual support है और Codeberg Translate के जरिए translation में contribute किया जा सकता है
  • license AGPL-3.0 है
  • Endurain® João Vitória Silva का trademark है
    • personal, educational, research और community purposes के लिए non-commercial self-hosting और name/logo usage allowed है
    • paid hosting, products या services देने जैसे Endurain name या logo के commercial use की अनुमति पहले से लिखित permission के बिना नहीं है

1 टिप्पणियां

 
GN⁺ 2023-12-25
Hacker News की राय
  • धीरे-धीरे intervals.icu(https://intervals.icu/) की तरफ शिफ्ट हो रहा/रही हूँ
    यह donation-based है, इसलिए कुछ हद तक “open source” के करीब लगता है, और Strava से कहीं बेहतर महसूस होता है

    • “donation-based होने से open source के करीब” होने का आखिर मतलब क्या है, समझ नहीं आता
    • साइट पर source code link नहीं मिला; जानना चाहूँगा कि कहाँ देखना चाहिए
    • वह थोड़ा अलग है। Strava ज़्यादा एक social platform जैसा है, जबकि intervals.icu training और progress management platform के ज़्यादा करीब है
      Strava इस्तेमाल करने की वजह यह है कि दोस्त और परिवार motivate करते हैं, न कि इसलिए कि बड़े power/heart-rate numbers चाहिए
  • web app के तौर पर एक feature गायब है: मुझे लगता है smartwatch द्वारा रिकॉर्ड की गई activities की automatic tracking मुश्किल होगी
    workaround शायद यह है कि पहले Strava में automatic import हो, फिर Strava को Endurain से connect किया जाए

    • web app भी Garmin smartwatch activities को automatically import कर सकता है
      Garmin, FIT activities import करने के लिए Connect का REST interface देता है
      https://developer.garmin.com/gc-developer-program/activity-a...
    • smartwatch सीधे Strava पर activities upload नहीं करती, है न? आमतौर पर वह Garmin Connect जैसी manufacturer cloud service से connect होती है, और Strava उस service के साथ API integration करता है
      इसलिए जो चीज़ missing है वह Endurain और प्रमुख manufacturer platforms के बीच integration लगती है। असल में missing है या नहीं, code नहीं देखा
    • पहले जब मैंने इस्तेमाल किया था, Suunto app में custom data upload set किया जा सकता था, और तब Strava upload भी ऐसे ही होता था
      याद है Garmin में भी संभव था, लेकिन latest version के बारे में ठीक से नहीं पता
    • एक दिशा यह हो सकती है कि इसे RunGap में integrate किया जाए, जो कई services से integrate होता है
  • अगर कोई professional developer नहीं है और development concepts बस 10 साल पहले university में सीखे स्तर तक हैं, तो इतना polished दिखने वाला system बनाना वाकई अच्छी बात है
    हालांकि पता नहीं original developer हैं या नहीं, लेकिन क्या उन्हें डर नहीं लगता कि कहीं ऐसी mistakes कर दी हों जो बाद में मुश्किल बनें? जैसे security issues या ऐसे errors जिन्हें बाद में ठीक करना कठिन हो

    • मैं लंबे समय से amateur programmer रहा हूँ, लेकिन coding में सचमुच निपुण होने का समय नहीं मिला
      मैं ऐसा व्यक्ति हूँ जो मामूली typo या ऐसे bug पर एक घंटा गंवा देता है जो आसानी से मिल जाना चाहिए था
      मैं ChatGPT को project assistance, code generation, और code issues point out करने के लिए इस्तेमाल कर रहा हूँ
      खासकर common features implement करते समय, यह मेरे अकेले करने की तुलना में edge cases बेहतर संभालता है, और security holes बंद करने को कहूँ तो मेरे स्तर से बेहतर करता है
      कल ही इसने form भरने वाले bots को रोकने की 7 strategies सुझाईं, और उनमें से कुछ को कुछ मिनटों में लागू करते ही bot problem तुरंत रुक गई
      गलतियाँ तो स्वाभाविक हैं, लेकिन AI tools को अपनी critical thinking के साथ इस्तेमाल करने पर वे ऐसी mistakes कम करने में मदद करते हैं। अक्सर AI को correct करना, किसी खास तरह की समस्या रोकने के नजरिए से मदद माँगना, या existing knowledge के आधार पर prompt बनाना—इनसे बहुत बेहतर जवाब मिलते हैं
    • हर developer गलतियाँ करता है। experience बस obvious mistakes की baseline को कम obvious mistakes की तरफ खिसका देता है
      impressive बात यह है कि उसने system बनाया और शायद community feedback के लिए खोल दिया, जो किसी experienced developer के security की चिंता में सालों तक अकेले बनाने से बेहतर नतीजा दे सकता है
      मेरे हिसाब से mistake से ज्यादा अहम है उसे खोजने और ठीक करने की speed। और वही चीज़ दोबारा न हो, इसके लिए linters, unit tests, type system, CI/CD जैसे self-reinforcing systems बनाना ज़रूरी है। मज़ाक में मैं इसे humility-driven development कहता हूँ
    • अगर ऐसे डर के अधीन हो जाएँ, तो असल में कुछ भी बना नहीं पाएँगे
      सबसे experienced developers भी ऐसी mistakes करते हैं। अगर आपको लगता है कि आप उस stage से आगे निकल चुके हैं, तो सच देखने के लिए आपको और experience चाहिए
      सीखने का सबसे अच्छा तरीका है project बनाना, mistakes करना, और उन्हें ठीक करने का तरीका खोजना। जितना मुश्किल fix होगा, अगले project में उतना ही आप उसे शुरू की design से consider करेंगे
    • PHP को सरसरी तौर पर देखने पर लगता है कि password hashing के लिए SHA-2 इस्तेमाल हो रहा है, इसलिए ऐसी problems होने की संभावना काफी ज्यादा लगती है
      AI हो या beginner, आखिर फर्क बस इस बात की degree का है कि कितना गलत है
    • समझ नहीं आता किससे डरना चाहिए। actual risk क्या है?
  • नाम शानदार है। लगता है endurance और Spain के महान cycling champion Miguel Induráin के नाम को मिलाकर बनाया गया pun है
    https://en.m.wikipedia.org/wiki/Miguel_Indur%C3%A1in

    • उस दौर में वह best of the best था जब हर कोई पागलों की तरह doping कर रहा था
      उसने EPO pioneer Dr. Conconi के साथ काम किया, और कभी पकड़ा नहीं गया, लेकिन उसके clean होने की संभावना कम लगती है
  • क्या यह backup feature वाला alternative frontend ज्यादा नहीं है?
    आखिर इस tool तक आने से पहले data पहले Strava को देना पड़ता है, ऐसा structure लगता है

    • लगता तो ऐसा ही है। समस्या यह है कि Strava API agreement(https://www.strava.com/legal/api) साफ तौर पर Strava के features replicate करने पर रोक लगाता है
  • Strava की बिल्कुल जरूरत न रखने वाला, मेरा बनाया हुआ काफी rough alternative भी है: https://github.com/cfe84/gpx-tools/blob/main/README.md
    यह GPX tracks वाले folder में चलाया जाने वाला CLI command है, और segments को सीधे JSON file में define करके segment-wise performance list की जा सकती है
    मैं activities OsmAnd से record करता हूँ, foldersync से syncthing के जरिए sync करता हूँ, फिर target folder में इसे run करके इस्तेमाल करता हूँ
    segment calculation logic reference के तौर पर काम आ सकता है। मैं दावा नहीं करूँगा कि यह बेहतरीन है, लेकिन server में जोड़ने लायक अच्छा extra feature हो सकता है

  • मुझे लगता है कि Strava का killer feature segments है
    सभी users में सबसे तेज़ रिकॉर्ड, यानी KOM, में दिलचस्पी न भी हो, तब भी किसी खास road segment पर समय के साथ अपनी प्रगति की तुलना कर पाना मूल्यवान है
    heart rate और perceived exertion को साथ देखकर अंदाज़ा लगाया जा सकता है कि अभी fitness किस स्तर पर है, या peak condition से कितने नीचे हैं

    • किसी को activity type के हिसाब से segments और leaderboards के लिए एक open central hub बनाना चाहिए
      उसके बाद malicious segments और submitters को block या remove करने का तरीका चाहिए होगा, और शायद voting system भी संभव हो
      activity के दौरान segments detect करना tricky है, इसलिए इस पर और research करना चाहता था। शायद ChatGPT की explanation का सहारा लिया जा सकता है, लेकिन इतना जानता हूँ कि इसमें latitude/longitude bounding box और उसके अंदर start/end points detect करने जैसा कुछ शामिल होता है
      धुंधला-सा याद है कि Strava के पास segments को लेकर कोई patent था
    • यह निश्चित रूप से एक शानदार feature है, लेकिन Strava इसे काफी जोर से push करता है ताकि सालाना 80 डॉलर देने का मन हो
  • Gadgetbridge[0] जैसे mobile tools के साथ इसे कैसे इस्तेमाल किया जा सकता है, यह जानने की उत्सुकता है
    यह app smartwatch की proprietary app को bypass करने और health/location data को commercial services पर upload न करने में मदद करता है
    लेकिन यह Garmin की प्रमुख sports watches को support नहीं करता और सिर्फ कुछ devices को support करता है[1]। इसलिए watch को USB से जोड़कर tracks transfer करने पड़ते हैं और computer से access करना पड़ता है; mobile support नहीं है
    [0] https://f-droid.org/en/packages/nodomain.freeyourgadget.gadg...
    [1] https://gadgetbridge.org/gadgets/

  • क्या यह Fediverse के साथ integrate होता है? Strava इस्तेमाल करने की मुख्य वजह उसका social network जैसा होना है
    Garmin Connect के analysis tools Strava से बेहतर हैं। Endurain अभी इस्तेमाल नहीं किया है

    • मैं Strava का FOSS ActivityPub version चाहता हूँ
  • दुख है कि Runalyze अब open source नहीं है, लेकिन पुराने versions अभी भी मौजूद हैं
    https://github.com/Runalyze/Runalyze