- Mencakup fitur pembuatan rencana latihan, pelacakan progres, dan penyediaan basis data latihan yang luas
- Dimulai berdasarkan pengalaman kegagalan workout.lol sebelumnya, dengan tujuan menjadi proyek evolusioner yang berkelanjutan untuk komunitas open source
- Menggunakan arsitektur berbasis Feature-Sliced Design dan Next.js, dengan penekanan pada kemandirian per fitur, skalabilitas, dan kemudahan pemeliharaan kode
- Basis data latihan dapat diimpor dengan mudah melalui file CSV, serta mencakup detail seperti berbagai karakteristik latihan, video, otot target utama, dan informasi lainnya
- Ke depannya, fitur akan terus diperluas berdasarkan partisipasi komunitas, termasuk aplikasi mobile, badge/gamifikasi, integrasi wearable, dan forum komunitas
Gambaran umum dan nilai Workout-Cool
- Workout-Cool adalah platform coaching kebugaran open source modern yang memungkinkan pengguna membuat rencana latihan yang dipersonalisasi, mencatat progres mereka, dan memanfaatkan basis data latihan yang kaya (termasuk deskripsi, video, dan lainnya) secara luas
- Dikembangkan kembali oleh pengembang yang mengalami sendiri penelantaran dan penghentian proyek workout.lol yang lama, sebagai platform kebugaran open source yang lebih berkelanjutan dan modern untuk komunitas olahraga
Awal proyek dan motivasi
- Sebagai kontributor utama proyek workout.lol, pengembang mengalami kesulitan seperti gagalnya kolaborasi dengan mitra penyedia video dan masalah biaya lisensi video
- Setelah proyek dijual kepada pihak lain dan segera dihentikan, ia mencoba berkomunikasi dengan pemilik baru selama lebih dari 9 bulan namun tidak mendapat respons
- Demi tidak menyia-nyiakan nilai proyek sebelumnya, diputuskan untuk membangun platform modern baru yang ditingkatkan secara menyeluruh
- Proyek ini bukan untuk tujuan komersial. Proyek ini membawa makna evolusi yang menjanjikan pemeliharaan dan pengembangan yang tepercaya bagi komunitas open source
Filosofi operasional berbasis komunitas
- Sebagai pengembang sekaligus pengguna nyata, ia secara langsung mencerminkan fitur dan pengalaman yang dibutuhkan komunitas
- Pengguna workout.lol lama akan disambut, sementara pengguna baru dapat merasakan nilai dari platform kebugaran masa depan
- Siapa pun dapat berkontribusi langsung dan mengajukan saran perbaikan
Basis data latihan dan impor
- Proyek ini dilengkapi dengan basis data latihan yang kaya
- Dalam format CSV contoh, berbagai informasi untuk tiap latihan dapat diimpor secara kustom, seperti id, nama, deskripsi, URL video, foto, otot target utama, atribut, dan lain-lain
- Contoh kolom utama: id, name, name_en, description, description_en, full_video_url, full_video_image_url, introduction, slug, attribute_name, attribute_value, dll.
- Contoh tipe atribut: TYPE(kekuatan/kardio/pliometrik/peregangan), PRIMARY_MUSCLE, SECONDARY_MUSCLE, EQUIPMENT, MECHANICS_TYPE, dll.
- Data dapat langsung diimpor dengan perintah satu baris, sehingga sangat baik untuk skalabilitas data
Arsitektur proyek
- Berbasis Next.js App Router dengan penerapan prinsip Feature-Sliced Design(FSD)
- Mewujudkan struktur yang independen untuk tiap fitur dan mudah digunakan kembali
- Pemisahan lapisan domain yang jelas: shared → entities → features → widgets → app
- Menjaga konsistensi antara lapisan UI, logika bisnis, dan data
- Contoh pemisahan file:
app/ - route dan layout Next.js
processes/ - alur bisnis kompleks
widgets/ - UI komposit (misalnya Sidebar, Header)
features/ - unit utama (autentikasi, pengelolaan latihan, dll.)
entities/ - pengguna, latihan, workout, dll.
shared/ - kode dan tipe umum
styles/ - CSS/tema global
Pengembangan dan deployment
- Memerlukan Node.js 18+, PostgreSQL (Docker atau instalasi langsung), serta pnpm atau npm
- Setelah clone, instal dependensi, atur environment variable, siapkan basis data (otomatis atau manual), lalu akses http://localhost:3000 di browser
- Migrasi basis data manual dan menjalankan server pengembangan secara langsung juga dimungkinkan
- Build image Docker dan menjalankan container (direncanakan)
Fitur yang direncanakan
- Penambahan latihan/video
- Aplikasi mobile (berbasis React Native)
- Gamifikasi (sistem badge, dll.)
- Statistik progres lanjutan dan visualisasi
- Integrasi wearable (jam/tracker)
- Dukungan multibahasa
- Autentikasi OAuth (Google, Apple, dll.)
- Forum komunitas bawaan
1 komentar
Komentar Hacker News
workout.lolmuncul di siniSaya pernah menjual aplikasi itu ke seseorang, lalu orang tersebut malah membiarkannya begitu saja
Saya beberapa kali bahkan mengirim pesan, bilang untuk menghubungi saya kalau butuh bantuan, tapi tak pernah sekali pun mendapat balasan
Tetap saja, melihat sekarang aplikasi itu dikelola lagi membuat saya benar-benar sangat senang
Peningkatan UI-nya juga luar biasa, kerja yang sangat keren
Kamu tak akan bisa membayangkan betapa senangnya saya saat melihat nama kamu muncul
Saya juga pernah merasakan hati rasanya runtuh saat melihat proyek berhenti tanpa hasil berarti
Pada akhirnya hal seperti itulah yang mendorong saya untuk membongkar semuanya dan membangun ulang, sambil mempertahankan sikap terbuka yang kamu tunjukkan saat pertama memulainya
Terima kasih untuk pujian soal UI, mendengar itu dari kamu sangat berarti
Kalau suatu saat ingin kembali, kamu selalu diterima
Ide, pendapat, atau sekadar kehadiranmu saja sudah sangat berarti
Saya sedang mengerjakan API penjadwalan kalender otomatis yang terhubung dengan Apple CalDAV(iCal)
Saya membuat fitur pengelolaan jadwal berbasis tujuan (menggunakan Google ORTools untuk menghitung model constraint CP-SAT yang sangat besar dengan sangat cepat, bahkan perhitungan setahun selesai dalam kurang dari 5 detik)
Termasuk juga fitur pola makan yang menyesuaikan target asupan nutrisi
Sebenarnya saya memang sangat ingin memasukkan sistem rencana olahraga/latihan seperti ini, tapi bahkan tak punya gambaran harus memakai apa
Sekarang akhirnya jelas apa yang akan saya gunakan
Terima kasih sudah membuat proyek ini
Saya jadi ingin melihat masa depan seperti apa yang menanti proyek ini
Saya penasaran bagaimana pendapatmu tentang proyek wger
https://github.com/wger-project adalah platform self-hosted manajemen kebugaran/latihan/nutrisi berbasis FLOSS dengan lisensi AGPL
Sepertinya sudah hampir 10 tahun, berbasis aplikasi django, dan juga punya aplikasi flutter resmi sehingga bisa dipakai di Android/iOS/Windows/Linux/macOS
Mendukung banyak pengguna, bahkan bisa dipakai untuk mengelola gym
body.build adalah proyek FLOSS baru yang berbasis browser dan berfokus pada penyusunan program latihan beban
Penulis body.build juga berkontribusi ke wger
Setelah banyak trial and error, saya kini memakai wger dengan cukup baik di homelab
Ada cukup banyak hal yang perlu dipertimbangkan saat self-hosting, tapi berjalan dengan baik
Kekurangan terbesarnya adalah kelengkapan database latihan, tapi untungnya para kontributor perlahan terus memperluasnya
Kalau ada yang bisa berkontribusi data latihan (dan media latihan), proyek AGPL ini pasti akan sangat berterima kasih
UX situs webnya buruk sekali dan aplikasi mobile-nya (di iOS) penuh bug
Menekan mulai latihan/mengubah beban/mencatat sesi, apa pun itu, aplikasi terus crash atau hang, dan saya juga berulang kali logout
Sekarang saya memakai LiftLog, yang mendukung semua yang saya inginkan dan juga FOSS
https://github.com/LiamMorrow/LiftLog
Aneh juga bahwa meski fitness dan latihan beban sekarang menjadi hobi yang umum, hampir tak ada aplikasi nonkomersial yang benar-benar layak pakai dan terawat
Itu kesimpulan saya setelah mencoba langsung puluhan proyek Github
Setelah pengalaman bertambah, yang lebih penting daripada fitur aplikasi pada akhirnya adalah seberapa konsisten kita mencatat untuk mengelola progressive overload
Aplikasi ini pilihan yang bagus untuk pemula memulai
Agar bisa dipakai lebih luas, ada tepat 2 hal yang mutlak dibutuhkan
https://json-schema.app/view/#?url=https%3A%2F%2Fgist.githubusercontent.com%2Fgavmor%2Fb74c4746aa9f3f63b0f50863a5e62d52%2Fraw%2F01318d1107f67ac83387a905d6556736fa7797ff%2Flifting.json
Saya tidak bisa setuju bahwa aplikasi seperti ini adalah pilihan yang baik untuk pemula
Saya mengapresiasi usahanya, tetapi susunan latihan yang direkomendasikan agak mengkhawatirkan
Misalnya, saat memilih ‘punggung/bisep’, muncul 9 latihan yang tidak tertata
Tidak ada perhatian terhadap urutan atau susunan latihan; compound lift bisa muncul di tengah, atau chin-up muncul sampai tiga kali
Tidak ada perhitungan 1RM terkait repetisi/set/beban
Yang direkomendasikan justru bro split yang bukan pendekatan dasar, dan malah lebih membingungkan
Rasanya kalau membuat aplikasi PPL minimal berdasarkan peralatan, hasilnya bisa jauh lebih baik daripada ini
Saya juga sama, setelah pengalaman bertambah yang benar-benar penting pada akhirnya adalah konsistensi dan pencatatan progres (kalau saya pribadi, tujuannya untuk menjaga mental, jadi sekarang lebih fokus memantau kondisi daripada pencapaian)
Penyimpanan rutinitas + pelacakan jangka panjang sudah masuk roadmap
Karena itu arsitektur 'workout session' dirancang benar-benar berbeda dari aplikasi lama
Saya ingin membuka jalan agar pengguna bisa membuat blok latihan individual dan mendapatkan pengalaman terbaik untuk memakai ulang, berbagi, menganalisis, dan mengembangkannya
Kalau boleh, saya ingin dengar bagaimana kamu menangani pengelolaan rutinitas seperti ini di PWA yang kamu buat
Rasanya kita pernah menempuh jalur yang mirip, jadi saya benar-benar ingin mendengar dan membagikan pengalaman
https://wrkout.xyz/ (API database latihan terbuka dengan gambar/video)
https://github.com/wrkout/exercises.json (dataset latihan open source)
Direkomendasikan untuk dimanfaatkan bila perlu
Kali ini saya menyusun dataset sepenuhnya dari nol bersama partner supaya jelas menghindari masalah lisensi terkait video
Dengan begitu saya punya kendali atas data sehingga semua atribut/terjemahan dan sebagainya bisa diubah sesuka kebutuhan
Meski begitu, saya sangat senang melihat berbagai proyek terbuka muncul di bidang ini
Kalau kedua komunitas bisa sama-sama berkembang, saya sangat ingin mencari sinergi
DM selalu disambut
Bukan cuma melempar ide, tapi sudah mengumpulkan dataset sehingga pemula pun bisa langsung mulai
Terima kasih banyak
Yang saya inginkan adalah fitur rekomendasi beban/jumlah repetisi per latihan
Program fitness bernama '100 Pushups' bisa jadi referensi bagus
Kalau tertarik, diskusi UI juga kapan saja sangat saya sambut
Semua data pengguna disimpan di PDS, jadi tak perlu server terpisah
Kalau proyek ini sampai terbengkalai lagi pun, datanya tetap akan berfungsi permanen
Saya tahu aplikasi itu, sangat sederhana, dan cara progres adaptifnya benar-benar luar biasa untuk memotivasi pemula
Saya sangat ingin berdiskusi soal UI untuk rutinitas yang menyesuaikan diri~bertahap seperti itu
Saya akan coba pikirkan dulu algoritme (yang masih kasar), jadi kirim DM ya
0:{"a":"$@1","f":"","b":"eETmgndxtv4Ar0i8Wync1"}
1:{"serverError":"An unexpected error occurred."}
Saya juga membagikan kode permintaannya (termasuk header detail dan informasi)
Server benar-benar kewalahan akibat lonjakan trafik dari HN yang tidak terduga
Stabilisasi dan perbaikan bug akan segera dilakukan
Terima kasih sekali lagi atas pengujian dan feedback-nya
Namun secara mendasar, sistem rekomendasi latihannya belum mempertimbangkan inti desain program fitness
Dalam kondisi saat ini, saya sulit merekomendasikannya untuk tujuan merancang program latihan
Akan lebih baik jika fokus pada pencatatan latihan yang sudah matang atau impor template rutinitas ketimbang pembuatan rutinitas otomatis (saya lihat memang sudah ada minat ke arah ini)
Daftar masalah utama yang saya alami
UI dan penjelasannya benar-benar bagus, tapi pemilihan latihannya (bahkan saat tersedia) terasa samar atau tidak rasional
Bagaimana kalau semua latihan primary/secondary standar (bar, dumbbell, machine) dimasukkan dulu ke database, lalu pengguna membangun rutinitas mereka sendiri
Akan bagus juga kalau ada opsi pengganti untuk latihan tertentu
Setelah semua itu siap barulah implementasi pembuatan rutinitas, dan akan sangat bagus kalau trainer sungguhan bisa memberi feedback
Peralatan yang tersedia sebaiknya dibuat simpel/standar, dan mesin bermerek sebisa mungkin dikeluarkan
Pendapat sedetail ini sangat berarti, terutama di tahap awal seperti sekarang
Logika program latihannya saat ini memang masih sangat dasar
Masih banyak kekurangan dalam mencerminkan prinsip latihan (volume, pola gerak, siklus pemulihan, compound/isolation)
Versi sekarang benar-benar hanya untuk 'eksplorasi', belum sama sekali menjadi pelatih yang pintar
Fakta ini seharusnya disampaikan dengan jelas di UI
Jawaban untuk pertanyaan spesifik
Saya paham sekali kebutuhan seperti punya dumbbell/pull-up bar tapi tidak ingin memakai cable/machine, jadi UI bagian ini akan dibuat lebih spesifik
(Untuk sekarang perlu diulang 2 kali, masalah render)
Saya ingin memperbaikinya berdasarkan prinsip yang baik, dan kalau memungkinkan saya ingin kamu ikut menyumbang ide untuk menentukan arahnya
Akan lebih menarik lagi kalau solusinya bisa langsung dideploy dan dipakai di perangkat keras konsumen
Misalnya, saya punya pull-up bar tapi tidak tahu otot apa yang bisa saya latih dengannya
Bagaimana kalau memakai sistem filter seperti ‘mudah untuk pemula’
Beberapa orang lain juga memberi feedback serupa
Filter akan dijadikan opsional, dan saya berencana menambahkan rekomendasi seperti 'ramah pemula', 'latihan populer', 'calisthenics', dan sebagainya
Terima kasih sudah memberi tahu
Di onboarding awal, pemilihan otot wajib dilakukan, dan dari sudut pandang pemula yang belum tahu rutinitas mana menargetkan otot apa, ini jadi hambatan masuk
Saya kurang lebih tahu "push", "pull", "leg", tapi nama-nama otot yang spesifik terasa asing
Pada akhirnya aplikasi ini jadi terasa cocok hanya untuk orang yang mau belajar anatomi
Perlu dipikirkan cara agar masuknya bisa sedikit lebih mudah
Misalnya: kelompok otot rekomendasi, preset
Onboarding sekarang terlalu banyak mengasumsikan pengetahuan (lebih banyak dari yang saya perkirakan)
Pemula bukan ingin tahu soal "rear delt" atau "lat", mereka cuma ingin jadi lebih kuat dan terlihat lebih bugar
Di update berikutnya
Tujuannya adalah menciptakan pengalaman yang ramah sehingga orang bisa langsung mulai tanpa harus belajar anatomi dulu
Feedback kamu sangat membantu
Semoga perjalanan fitness-mu lancar