- 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
stravalibuntuk integrasi Stravapython-garminconnectuntuk integrasi Garmin Connectgpxpyuntuk impor.gpxtcxreaderuntuk impor.tcxfitdecodeuntuk 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.exampleuntuk 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
- https://demo.endurain.com
- Nama pengguna:
admin - Kata sandi:
admin
- 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
- Proyek ini tidak dihentikan; fokusnya dialihkan dari fitur baru ke penguatan fondasi
- Penjelasan terkait dapat dilihat di Pausing new features so Endurain can keep growing
- 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
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
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
Garmin menyediakan antarmuka REST untuk Connect agar bisa mengambil aktivitas FIT
https://developer.garmin.com/gc-developer-program/activity-a...
Jadi yang hilang tampaknya integrasi antara Endurain dan platform pabrikan utama. Saya belum mengecek kodenya untuk memastikan apakah memang belum ada
Seingat saya Garmin juga bisa, tapi saya kurang tahu untuk versi terbaru
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 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
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
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
Menurut saya, baik AI maupun pemula pada akhirnya hanya berbeda pada tingkat seberapa salahnya saja
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 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
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
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
Sayang Runalyze tidak lagi open source, tetapi versi lamanya masih ada
https://github.com/Runalyze/Runalyze