2 poin oleh GN⁺ 2023-12-25 | 1 komentar | Bagikan ke WhatsApp
  • Endurain adalah layanan pelacakan kebugaran self-hosted yang dirancang agar pengguna dapat mengendalikan sendiri data dan lingkungan hosting mereka, mirip Strava tetapi berfokus pada privasi dan kustomisasi
  • Frontend-nya berbasis Vue.js, backend-nya berbasis Python FastAPI, dan menggunakan PostgreSQL, Jaeger, Alembic, SQLAlchemy, serta lainnya untuk mengelola data aktivitas dan pelacakan dasar
  • Mendukung integrasi dengan Strava dan Garmin Connect, serta memungkinkan unggah aktivitas secara manual melalui file .gpx, .tcx, dan .fit
  • Menyediakan image Docker dan contoh docker-compose.yml.example, dengan konfigurasi yang ditangani melalui variabel lingkungan agar deployment dan kustomisasi lebih mudah
  • Repositori GitHub adalah mirror hanya-baca dan aktivitas proyek berlangsung di Codeberg; saat ini proyek berada dalam status pembekuan fitur sementara dengan fokus pada penguatan fondasi

Fitur yang disediakan Endurain

  • Endurain adalah layanan pelacakan kebugaran self-hosted yang bertujuan memberi pengguna kendali penuh atas data dan lingkungan hosting mereka
  • Ini adalah layanan yang mirip Strava, tetapi berfokus pada privasi dan kustomisasi
  • Data aktivitas dapat diimpor melalui integrasi layanan eksternal atau unggah file
    • Mendukung integrasi Strava
    • Mendukung integrasi Garmin Connect
    • Mendukung unggah manual file .gpx, .tcx, .fit

Susunan teknologi

  • Frontend dibangun dengan Vue.js, Notivue, dan Bootstrap CSS
  • Backend dibangun dengan Python FastAPI sebagai inti
    • Alembic
    • SQLAlchemy
    • Apprise
    • stravalib untuk integrasi Strava
    • python-garminconnect untuk integrasi Garmin Connect
    • gpxpy untuk impor .gpx
    • tcxreader untuk impor .tcx
    • fitdecode untuk impor .fit
  • Basis data menggunakan PostgreSQL
  • Jaeger digunakan untuk pelacakan dan pemantauan dasar

Deployment dan konfigurasi

  • Tersedia image Docker untuk deployment Endurain
  • Repositori menyertakan file docker-compose.yml.example untuk melihat contoh deployment
  • Konfigurasi ditangani melalui variabel lingkungan untuk memberikan fleksibilitas dan kemudahan kustomisasi
  • Informasi lebih lanjut tersedia di dokumentasi Endurain

Lingkungan demo

  • Tersedia demo untuk mencoba Endurain tanpa instalasi
  • Lingkungan demo direset setiap hari pada tengah malam berdasarkan zona waktu Europe/Lisbon
  • Jangan menyimpan data penting di lingkungan demo

Status operasional proyek dan lisensi

  • Repositori GitHub adalah mirror hanya-baca, sedangkan issue, pull request, dan aktivitas proyek dikelola di Codeberg
  • Endurain saat ini berada dalam status pembekuan fitur sementara
  • Mendukung banyak bahasa, dan Anda dapat berkontribusi pada terjemahan melalui Codeberg Translate
  • Lisensinya adalah AGPL-3.0
  • Endurain® adalah merek dagang milik João Vitória Silva
    • Self-hosting nonkomersial untuk tujuan pribadi, pendidikan, penelitian, dan komunitas serta penggunaan nama dan logo diperbolehkan
    • Penggunaan nama atau logo Endurain secara komersial, seperti untuk hosting berbayar, produk, atau layanan, tidak diizinkan tanpa izin tertulis sebelumnya

1 komentar

 
GN⁺ 2023-12-25
Komentar Hacker News
  • Sedikit demi sedikit mulai beralih ke intervals.icu(https://intervals.icu/)
    Karena berbasis donasi, rasanya sampai batas tertentu lebih dekat ke “open source”, dan jauh lebih baik daripada Strava

    • Apa sebenarnya maksudnya “berbasis donasi jadi dekat dengan open source”?
    • Saya tidak bisa menemukan tautan kode sumber di situsnya; penasaran harus lihat di mana
    • Itu agak berbeda. Strava lebih dekat ke platform sosial, sedangkan intervals.icu lebih dekat ke platform latihan dan pengelolaan progres
      Alasan memakai Strava adalah karena teman dan keluarga memberi motivasi, bukan karena ingin mendapatkan angka power/detak jantung yang lebih besar
  • Sebagai aplikasi web, ada satu fitur yang hilang: menurut saya pelacakan otomatis aktivitas yang direkam smartwatch sulit dilakukan
    Cara memutarnya tampaknya dengan impor otomatis ke Strava lalu menghubungkan Strava ke Endurain

    • Aplikasi web juga bisa mengambil aktivitas smartwatch Garmin secara otomatis
      Garmin menyediakan antarmuka REST untuk Connect agar bisa mengambil aktivitas FIT
      https://developer.garmin.com/gc-developer-program/activity-a...
    • Bukankah smartwatch tidak mengunggah aktivitas langsung ke Strava? Biasanya ia terhubung ke layanan cloud pabrikan seperti Garmin Connect, lalu Strava melakukan integrasi API dengan layanan itu
      Jadi yang hilang tampaknya integrasi antara Endurain dan platform pabrikan utama. Saya belum mengecek kodenya untuk memastikan apakah memang belum ada
    • Saat dulu saya memakainya, aplikasi Suunto memungkinkan pengaturan unggahan data kustom, dan unggahan ke Strava waktu itu juga dilakukan seperti itu
      Seingat saya Garmin juga bisa, tapi saya kurang tahu untuk versi terbaru
    • Salah satu arahnya mungkin mengintegrasikannya dengan RunGap, yang terhubung ke banyak layanan
  • Kalau bukan developer profesional dan hanya punya konsep pengembangan yang dipelajari di kampus 10 tahun lalu, membuat sistem yang terlihat sematang ini adalah pencapaian bagus
    Namun, entah apakah dia developer aslinya, saya penasaran apakah ia tidak takut membuat kesalahan yang nanti menyulitkan. Misalnya masalah keamanan atau bug yang sulit diperbaiki di kemudian hari

    • Saya sudah lama menjadi programmer amatir, tapi tidak pernah punya waktu untuk benar-benar mahir coding
      Saya tipe orang yang bisa menghabiskan satu jam untuk typo kecil atau bug yang semestinya mudah ditemukan
      Saya memakai ChatGPT untuk membantu proyek, menghasilkan kode, dan menunjukkan masalah pada kode
      Khususnya saat mengimplementasikan fitur umum, ia cenderung lebih baik memperhatikan edge case dibanding kalau saya mengerjakannya sendiri, dan kalau diminta menutup celah keamanan, hasilnya juga lebih baik daripada level saya
      Kemarin saja ia menyarankan 7 strategi untuk menghentikan bot yang mengisi formulir, dan setelah beberapa di antaranya saya terapkan dalam hitungan menit, masalah bot langsung berhenti
      Kesalahan tentu saja tetap terjadi, tetapi tool AI, jika dipakai bersama pemikiran kritis sendiri, membantu mengurangi kesalahan seperti itu. Jika sering mengoreksi AI, meminta bantuan dari sudut pandang pencegahan jenis masalah tertentu, atau menyusun prompt berdasarkan pengetahuan yang sudah ada, jawabannya menjadi jauh lebih baik
    • Semua developer membuat kesalahan. Pengalaman hanya memindahkan garis dasar dari kesalahan yang jelas ke kesalahan yang kurang jelas
      Yang mengesankan adalah ia membangun sistem dan mungkin membukanya untuk masukan komunitas; ini bisa saja menghasilkan sesuatu yang lebih baik daripada developer berpengalaman yang membangunnya sendirian selama bertahun-tahun sambil mengkhawatirkan keamanan
      Menurut saya, yang lebih penting daripada kesalahan itu sendiri adalah kecepatan menemukan dan memperbaikinya. Dan penting juga membangun sistem yang memperkuat diri sendiri, seperti linter, unit test, sistem tipe, dan CI/CD, agar hal yang sama tidak terulang. Sebagai candaan, saya menyebutnya pengembangan berbasis kerendahan hati
    • Kalau dikuasai ketakutan seperti ini, pada praktiknya kita tidak akan membuat apa pun
      Developer paling berpengalaman pun membuat kesalahan seperti ini. Jika merasa sudah melewati tahap itu, berarti masih perlu lebih banyak pengalaman untuk melihat kenyataannya
      Cara terbaik untuk belajar adalah membuat proyek, membuat kesalahan, dan mencari cara memperbaikinya. Semakin sulit diperbaiki, semakin besar kemungkinan hal itu dipertimbangkan sejak desain awal pada proyek berikutnya
    • Setelah sekilas melihat PHP-nya, sepertinya ia memakai SHA-2 untuk hashing kata sandi, jadi kemungkinan masalah semacam itu cukup tinggi
      Menurut saya, baik AI maupun pemula pada akhirnya hanya berbeda pada tingkat seberapa salahnya saja
    • Saya tidak tahu apa yang harus ditakuti. Apa risiko nyatanya?
  • Namanya bagus. Sepertinya permainan kata yang menggabungkan endurance dan nama juara balap sepeda hebat Spanyol, Miguel Induráin
    https://en.m.wikipedia.org/wiki/Miguel_Indur%C3%A1in

    • Ia adalah yang terbaik dari yang terbaik pada masa ketika semua orang melakukan doping habis-habisan
      Ia bekerja dengan pelopor EPO Dr. Conconi, dan meski tidak pernah tertangkap, kecil kemungkinan ia benar-benar bersih
  • Bukankah ini lebih mirip frontend alternatif dengan fitur backup?
    Pada akhirnya sepertinya datanya tetap harus diberikan dulu ke Strava sebelum masuk ke tool ini

  • Saya juga punya alternatif yang cukup kasar buatan sendiri dan sama sekali tidak membutuhkan Strava: https://github.com/cfe84/gpx-tools/blob/main/README.md
    Ini adalah perintah CLI yang dijalankan pada folder berisi track GPX, dan segmennya didefinisikan langsung dalam file JSON, lalu bisa menampilkan performa per segmen
    Saya merekam aktivitas dengan OsmAnd, menyinkronkannya melalui syncthing memakai foldersync, lalu menjalankannya di folder tujuan
    Logika perhitungan segmennya bisa dijadikan referensi. Saya tidak mengklaim ini hebat, tetapi bisa saja menjadi fitur tambahan yang bagus untuk dimasukkan ke server

  • Menurut saya fitur pembunuh Strava adalah segmen
    Bahkan jika tidak tertarik pada catatan tercepat dari seluruh pengguna, yaitu KOM, tetap ada nilai dalam membandingkan progres diri sendiri dari waktu ke waktu pada ruas jalan tertentu
    Jika dilihat bersama detak jantung dan tingkat intensitas yang dirasakan, kita bisa memperkirakan sejauh mana kebugaran saat ini, atau seberapa jauh kita turun dari kondisi terbaik

    • Seseorang perlu membuat hub pusat terbuka untuk segmen dan papan peringkat berdasarkan jenis aktivitas
      Setelah itu, perlu ada cara untuk memblokir atau menghapus segmen dan pengirim yang berbahaya, dan mungkin sistem voting juga bisa digunakan
      Mendeteksi segmen saat beraktivitas itu rumit, jadi saya ingin menelitinya lebih lanjut. Mungkin bisa meminjam penjelasan ChatGPT, tetapi sejauh yang saya tahu ini melibatkan kotak batas lintang/bujur dan pendeteksian titik awal・akhir di dalamnya
      Saya samar-samar ingat Strava pernah punya semacam paten terkait segmen
    • Memang fitur yang keren, tetapi Strava mendorongnya cukup kuat sampai membuat orang ingin membayar 80 dolar per tahun
  • Saya penasaran bagaimana ini bisa dipakai bersama tool mobile seperti Gadgetbridge[0]
    Aplikasi ini memungkinkan kita melewati aplikasi proprietary dari smartwatch dan tidak mengunggah data kesehatan・lokasi ke layanan komersial
    Namun, aplikasi ini tidak mendukung jam tangan olahraga utama Garmin dan hanya mendukung sebagian perangkat[1]. Jadi trek harus dipindahkan dengan menghubungkan jam tangan lewat USB dan diakses dari komputer, tanpa dukungan mobile
    [0] https://f-droid.org/en/packages/nodomain.freeyourgadget.gadg...
    [1] https://gadgetbridge.org/gadgets/

  • Apakah terintegrasi dengan Fediverse? Alasan utama memakai Strava adalah karena sifatnya sebagai jejaring sosial
    Garmin Connect punya alat analisis yang lebih baik daripada Strava. Saya belum mencoba Endurain

    • Saya menginginkan versi FOSS ActivityPub dari Strava
  • Sayang Runalyze tidak lagi open source, tetapi versi lamanya masih ada
    https://github.com/Runalyze/Runalyze