Endurain: kendi kendine barındırılabilen Strava benzeri hizmet
(github.com/joaovitoriasilva)- 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,.fitdosyaları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,.fitdosyaları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 .gpxiçe aktarma içingpxpy.tcxiçe aktarma içintcxreader.fitiçe aktarma içinfitdecode
- 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.exampledosyası 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
- https://demo.endurain.com
- Kullanıcı adı:
admin - Parola:
admin
- 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
- Proje durdurulmuş değildir; odak, yeni özelliklerden çok altyapıyı güçlendirmeye kaymıştır
- İlgili açıklama Pausing new features so Endurain can keep growing bağlantısında bulunabilir
- Ç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
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
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
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...
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
Garmin’in de mümkün olduğunu hatırlıyorum ama güncel sürümde durum nedir bilmiyorum
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
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
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
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
Yapay zeka da olsa acemi de olsa, sonuçta mesele ne kadar yanıldıklarıyla ilgili bir derece farkı diye düşünüyorum
İ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
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
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
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
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
Runalyze’ın artık açık kaynak olmaması üzücü, ama eski sürüm hâlâ duruyor
https://github.com/Runalyze/Runalyze