2 puan yazan GN⁺ 2023-12-25 | 1 yorum | WhatsApp'ta paylaş
  • Endurain, kullanıcıların verileri ve barındırma ortamı üzerinde doğrudan denetim sahibi olması için tasarlanmış, kendi kendine barındırılabilen bir fitness takip hizmetidir; Strava'ya benzer, ancak gizlilik ve özelleştirmeye odaklanır
  • Ön yüz Vue.js, arka uç ise Python FastAPI tabanlıdır; PostgreSQL, Jaeger, Alembic, SQLAlchemy ve benzeri araçlarla aktivite verisi yönetimi ve temel izleme sağlanır
  • Strava ve Garmin Connect entegrasyonunu destekler; ayrıca .gpx, .tcx, .fit dosyalarıyla aktiviteler elle de yüklenebilir
  • Docker imajları ve docker-compose.yml.example örneği sunulur; yapılandırma ortam değişkenleriyle yapılır, böylece dağıtım ve özelleştirme kolaylaşır
  • GitHub deposu salt okunur bir aynadır ve proje faaliyetleri Codeberg üzerinde yürütülür; şu anda yeni özelliklerden çok altyapıyı güçlendirmeye odaklanan geçici bir özellik dondurma durumundadır

Endurain'in sunduğu özellikler

  • Endurain, kullanıcıların verileri ve barındırma ortamı üzerinde tam denetim sahibi olmasını hedefleyen, kendi kendine barındırılabilen bir fitness takip hizmetidir
  • Strava'ya benzer bir hizmettir, ancak odak noktası gizlilik ve özelleştirmedir
  • Aktivite verileri, harici hizmet entegrasyonu veya dosya yükleme yoluyla içe aktarılabilir
    • Strava entegrasyonu desteği
    • Garmin Connect entegrasyonu desteği
    • .gpx, .tcx, .fit dosyalarının elle yüklenmesi desteği

Teknik yapı

  • Ön yüz Vue.js, Notivue ve Bootstrap CSS ile oluşturulmuştur
  • Arka uç, Python FastAPI etrafında yapılandırılmıştır
    • Alembic
    • SQLAlchemy
    • Apprise
    • Strava entegrasyonu için stravalib
    • Garmin Connect entegrasyonu için python-garminconnect
    • .gpx içe aktarma için gpxpy
    • .tcx içe aktarma için tcxreader
    • .fit içe aktarma için fitdecode
  • Veritabanı olarak PostgreSQL kullanılır
  • Temel izleme ve gözlemlenebilirlik için Jaeger kullanılır

Dağıtım ve yapılandırma

  • Endurain'in dağıtımı için Docker imajları sunulur
  • Depoda, dağıtım örneğini görmek için docker-compose.yml.example dosyası bulunur
  • Yapılandırma, esneklik ve özelleştirme kolaylığı sağlamak için ortam değişkenleri üzerinden yapılır
  • Ayrıntılı bilgiye Endurain documentation üzerinden ulaşılabilir

Demo ortamı

  • Kurulum yapmadan Endurain'i denemek için bir demo sunulur
  • Demo ortamı, Europe/Lisbon saat dilimine göre her gün gece yarısında sıfırlanır
  • Demoda önemli veriler saklanmamalıdır

Proje durumu ve lisans

  • GitHub deposu salt okunur bir aynadır; issue'lar, pull request'ler ve proje faaliyetleri Codeberg üzerinde yönetilir
  • Endurain şu anda geçici özellik dondurma durumundadır
  • Çok dilli destek vardır ve Codeberg Translate üzerinden çeviriye katkı sağlanabilir
  • Lisans AGPL-3.0'dır
  • Endurain®, João Vitória Silva'nın ticari markasıdır
    • Kişisel, eğitim, araştırma ve topluluk amaçlı ticari olmayan self-hosting ile isim ve logonun kullanımına izin verilir
    • Endurain adının veya logosunun ücretli barındırma, ürün ya da hizmet sunumu gibi ticari kullanımı, önceden yazılı izin olmadan kabul edilmez

1 yorum

 
GN⁺ 2023-12-25
Hacker News yorumları
  • Yavaş yavaş intervals.icu(https://intervals.icu/) tarafına geçiyorum
    Bağış temelli olduğu için bir ölçüde “açık kaynak”a yakın ve Strava’dan çok daha iyi olduğunu düşünüyorum

    • “Bağış temelli olduğu için açık kaynağa yakın” tam olarak ne demek, anlamadım
    • Sitede kaynak kodu bağlantısı bulamıyorum; nereye bakmam gerektiğini merak ediyorum
    • Bu biraz farklı. Strava daha çok bir sosyal platform, intervals.icu ise daha çok antrenman ve ilerleme yönetimi platformu
      Strava kullanma sebebim arkadaşlarımın ve ailemin beni motive etmesi; daha yüksek güç/nabız değerleri elde etmek istemem değil
  • Bir web uygulaması olarak eksik kalan bir özellik var: akıllı saatin kaydettiği aktivitelerin otomatik izlenmesinin zor olduğunu düşünüyorum
    Dolaylı çözüm, aktiviteleri Strava’ya otomatik içe aktarıp sonra Strava’yı Endurain’e bağlamak gibi görünüyor

    • Web uygulamaları da Garmin akıllı saat aktivitelerini otomatik olarak içe aktarabilir
      Garmin, FIT aktivitelerini içe aktarmak için Connect’e yönelik bir REST arayüzü sunuyor
      https://developer.garmin.com/gc-developer-program/activity-a...
    • Akıllı saat aktiviteleri doğrudan Strava’ya yüklemiyor değil mi? Genelde Garmin Connect gibi üreticinin bulut servisine bağlanıyor, Strava da onunla API entegrasyonu yapıyor olmalı
      Dolayısıyla eksik olan şey Endurain ile başlıca üretici platformları arasındaki entegrasyon gibi görünüyor. Gerçekten eksik mi, koda bakmadım
    • Eskiden kullandığımda Suunto uygulamasında özel veri yükleme ayarlanabiliyordu; o dönemde Strava’ya yükleme de bu şekildeydi
      Garmin’in de mümkün olduğunu hatırlıyorum ama güncel sürümde durum nedir bilmiyorum
    • Bir yön, birçok servisle entegre olan RunGap ile bütünleştirmek olabilir
  • Profesyonel geliştirici değilsen ve geliştirme kavramların 10 yıl önce üniversitede öğrendiklerinden ibaretse, bu kadar tamamlanmış görünen bir sistem yapman iyi iş
    Yine de asıl geliştirici misin bilmiyorum ama sonradan ayağına dolanacak hatalar yapmış olmaktan korkmuyor musun merak ediyorum. Örneğin güvenlik sorunları ya da sonradan düzeltilmesi zor hatalar gibi

    • Uzun süre amatör programcı olarak kaldım ama kodlamada gerçekten ustalaşacak zamanım olmadı
      Ufak bir yazım hatasına ya da kolayca bulunması gereken bir bug’a bir saat harcayan tiplerdenim
      ChatGPT’yi proje asistanı, kod üretimi ve koddaki sorunları işaret etme gibi işler için kullanıyorum
      Özellikle yaygın özellikleri uygularken sınır durumlarını tek başıma yaptığımdan daha iyi ele alıyor; güvenlik açıklarını kapatmasını istediğimde de benim seviyemden daha iyi hallediyor
      Daha dün form dolduran botları engellemek için 7 strateji önerdi; birkaçını birkaç dakika içinde uygulayınca bot sorunu hemen durdu
      Hatalar elbette olur, ama yapay zeka araçları kendi eleştirel düşüncenle birlikte kullanıldığında bu hataları azaltmaya yardımcı olur. Yapay zekayı sık sık düzelttiğinde, belirli sorun türlerini engelleme açısından yardım istediğinde ya da mevcut bilgine dayanarak prompt yazdığında çok daha iyi yanıtlar alırsın
    • Tüm geliştiriciler hata yapar. Deneyim yalnızca bariz hataların çıtasını daha az bariz hatalara doğru taşır
      Etkileyici olan, sistemi yapmış ve muhtemelen topluluk geri bildirimine açmış olması; bu, deneyimli bir geliştiricinin güvenlik kaygısıyla yıllarca tek başına geliştirmesinden daha iyi sonuçlara yol açabilir
      Bence hatanın kendisinden daha önemli olan şey bulma ve düzeltme hızı. Ayrıca aynı şeyin tekrar olmaması için linter, birim testleri, tip sistemi, CI/CD gibi kendini güçlendiren sistemler kurmak önemli. Şaka yollu buna alçakgönüllülük temelli geliştirme diyorum
    • Bu tür korkuların seni yönetmesine izin verirsen pratikte hiçbir şey yapamazsın
      En deneyimli geliştiriciler bile bu hataları yapar. Kendinin o aşamayı aştığını düşünüyorsan, gerçeği görmek için daha fazla deneyime ihtiyacın var
      Öğrenmenin en iyi yolu proje yapmak, hata yapmak ve düzeltmenin yolunu bulmaktır. Düzeltmesi ne kadar zorsa, sonraki projede bunu daha en baştan tasarımda dikkate alırsın
    • PHP’ye kabaca baktım; parola hash’lemede SHA-2 kullanıyor gibi görünüyor, bu yüzden böyle sorunların olma ihtimali epey yüksek
      Yapay zeka da olsa acemi de olsa, sonuçta mesele ne kadar yanıldıklarıyla ilgili bir derece farkı diye düşünüyorum
    • Neden korkulması gerektiğini anlamıyorum. Gerçek risk ne?
  • İsim harika. Endurance ile İspanya’nın büyük bisiklet şampiyonu Miguel Induráin adını birleştiren bir kelime oyunu gibi görünüyor
    https://en.m.wikipedia.org/wiki/Miguel_Indur%C3%A1in

    • Herkesin çılgınca doping yaptığı bir dönemin en iyilerinin en iyisiydi
      EPO öncüsü Dr. Conconi ile çalıştı; hiç yakalanmadı ama temiz kalmış olma ihtimali düşük görünüyor
  • Bu, yedekleme işlevi eklenmiş bir alternatif ön yüze daha yakın değil mi?
    Sonuçta veriyi bu araca gelmeden önce önce Strava’ya vermek gerekiyor gibi görünüyor

    • Öyle görünüyor. Sorun şu ki Strava API sözleşmesi (https://www.strava.com/legal/api) Strava’nın sahip olduğu işlevleri kopyalamayı açıkça yasaklıyor
  • Strava’ya hiç ihtiyaç duymayan, benim yaptığım epey kaba bir alternatif de var: https://github.com/cfe84/gpx-tools/blob/main/README.md
    GPX izlerinin bulunduğu klasörde çalıştırılan bir CLI komutu; segmentler JSON dosyasında doğrudan tanımlanıyor ve segment bazında performanslar listelenebiliyor
    Aktiviteleri OsmAnd ile kaydediyorum, foldersync ile syncthing üzerinden senkronize edip hedef klasörde çalıştırarak kullanıyorum
    Segment hesaplama mantığını referans alabilirsiniz. Harika olduğunu iddia etmiyorum ama sunucuya eklenebilecek iyi bir özellik olabilir

  • Strava’nın öldürücü özelliğinin segmentler olduğunu düşünüyorum
    Tüm kullanıcılar arasındaki en hızlı dereceyle, yani KOM ile ilgilenmeseniz bile belirli bir yol kesiminde zaman içinde kendi ilerlemenizi karşılaştırabilmek değerli
    Nabız ve algılanan eforla birlikte bakınca mevcut kondisyonunuzun ne düzeyde olduğunu ya da en iyi formunuzdan ne kadar uzaklaştığınızı kestirebiliyorsunuz

    • Birinin etkinlik türlerine göre segmentler ve liderlik tabloları için açık, merkezi bir hub oluşturması yeterli
      Sonrasında kötü niyetli segmentleri ve gönderenleri engellemenin ya da kaldırmanın bir yolu gerekir; bir oylama sistemi de mümkün olabilir
      Etkinlik sırasında segmentleri algılamak zor olduğu için bunu daha fazla araştırmak istemiştim. Belki ChatGPT’nin açıklamasından yararlanılabilir, ama en azından enlem/boylam sınırlayıcı kutularının ve bunların içinde başlangıç-bitiş noktalarını algılama yönteminin işin içinde olduğunu biliyorum
      Strava’nın segmentler konusunda bir tür patente sahip olduğunu belli belirsiz hatırlıyorum
    • Harika bir özellik olduğu doğru, ama Strava bunu oldukça güçlü biçimde öne çıkarıp yılda 80 dolar ödemek istemenizi sağlıyor
  • Gadgetbridge[0] gibi mobil araçlarla birlikte nasıl kullanılabileceğini merak ediyorum
    Bu uygulama, akıllı saatin tescilli uygulamasını devre dışı bırakıp sağlık ve konum verilerini ticari servislere yüklememenizi sağlıyor
    Ancak Garmin’in başlıca spor saatlerini desteklemiyor, yalnızca bazı cihazları destekliyor[1]. Bu yüzden saati USB ile bağlayıp rotaları aktarmak ve bilgisayardan erişmek gerekiyor; mobil destek yok
    [0] https://f-droid.org/en/packages/nodomain.freeyourgadget.gadg...
    [1] https://gadgetbridge.org/gadgets/

  • Fediverse ile entegre oluyor mu? Strava’yı kullanmanın başlıca nedeni sosyal ağ niteliği
    Garmin Connect’in analiz araçları Strava’dan daha iyi. Endurain’i henüz denemedim

    • Strava’nın FOSS ActivityPub sürümünü istiyorum
  • Runalyze’ın artık açık kaynak olmaması üzücü, ama eski sürüm hâlâ duruyor
    https://github.com/Runalyze/Runalyze