12 poin oleh GN⁺ 2025-06-19 | 1 komentar | Bagikan ke WhatsApp
  • 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

 
GN⁺ 2025-06-19
Komentar Hacker News
  • Rasanya lucu melihat aplikasi saya workout.lol muncul di sini
    Saya 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
  • Vincenius ya!
    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
  • Ini benar-benar keren
    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 penasaran jangan-jangan orang di industri terkait membeli ini hanya agar alternatif gratisnya terhambat
    Saya jadi ingin melihat masa depan seperti apa yang menanti proyek ini
  • Di saya muncul pesan "error loading exercises"
    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
  • Saya baru-baru ini mencoba Wget, dan sayangnya saya tak bisa merekomendasikannya
    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
  • Saya mengalami error yang sama
  • Saya sudah latihan beban sekitar 5 tahun, dan melihat alat open source yang tersusun rapi seperti ini terasa membanggakan
    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
  1. Aplikasi mobile (atau PWA, PWA yang saya buat sendiri juga cukup setara dengan aplikasi native)
  2. Fitur untuk menyimpan dan mengelola rutinitas latihan tertentu dalam jangka panjang
  • Idealnya data harus bisa diekspor dan dibagikan di antara beberapa UI
    https://json-schema.app/view/#?url=https%3A%2F%2Fgist.githubusercontent.com%2Fgavmor%2Fb74c4746aa9f3f63b0f50863a5e62d52%2Fraw%2F01318d1107f67ac83387a905d6556736fa7797ff%2Flifting.json
  • Ini saya tulis setelah mencobanya, dan sama sekali tidak ada niat untuk menjatuhkan OP
    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
  • Rasanya menyenangkan sekali mendapat pengakuan seperti ini dari seseorang yang berpengalaman di gym
    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
  • Kalau kamu penasaran dengan sumber datanya, ini proyek yang layak dilihat
    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
  • Saya pernah melihat wrkout.xyz sebelumnya, dan itu proyek yang benar-benar keren
    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
  • Inilah yang namanya kontribusi sejati
    Bukan cuma melempar ide, tapi sudah mengumpulkan dataset sehingga pemula pun bisa langsung mulai
    Terima kasih banyak
  • Sejujurnya aplikasi ini lebih bagus daripada dugaan saya
    Yang saya inginkan adalah fitur rekomendasi beban/jumlah repetisi per latihan
    Program fitness bernama '100 Pushups' bisa jadi referensi bagus
  • Hukuman berupa repetisi semaksimal mungkin (misalnya 8 push-up)
  • Aplikasi membuat jadwal (3, 4, 3, 3, 5 dan seterusnya, ulangi dengan jeda 2 menit)
  • Berdasarkan level pengguna, aplikasi merekomendasikan jumlah repetisi secara bertahap dan adaptif
  • Sekitar minggu ke-6, aplikasi mengarahkan agar pengguna bisa mencapai maksimal 100 repetisi
    Kalau tertarik, diskusi UI juga kapan saja sangat saya sambut
  • Kalau ingin meninggalkan backend, integrasi AT Protocol juga bisa jadi ide
    Semua data pengguna disimpan di PDS, jadi tak perlu server terpisah
    Kalau proyek ini sampai terbengkalai lagi pun, datanya tetap akan berfungsi permanen
  • Saya benar-benar kagum dengan idenya
    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
  • Aplikasinya terlihat bagus, tapi terjadi error saat mengambil latihan
    0:{"a":"$@1","f":"","b":"eETmgndxtv4Ar0i8Wync1"}
    1:{"serverError":"An unexpected error occurred."}
    Saya juga membagikan kode permintaannya (termasuk header detail dan informasi)
  • Terima kasih untuk laporan detailnya
    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
  • Saya mengalami beberapa masalah teknis, dan untuk proyek baru hal seperti ini bisa dimaklumi
    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
  1. Saya ingin latihan full-body, tapi direkomendasikan 33 latihan dalam satu sesi—tidak realistis
  2. Pemilihan latihan hanya mengacak 3 per otot, mengabaikan target multi-otot dan distribusi volume yang tepat
  3. Latihan yang asing atau tidak efisien juga sering direkomendasikan
  4. Peralatan yang tidak saya miliki juga direkomendasikan; saya pengguna home gym jadi mesin harus sepenuhnya dikecualikan
  5. Peralatan bermerek yang tidak familier direkomendasikan
  6. Meski pilihan peralatan diubah, rekomendasi latihan tetap sama
  7. Latihan yang direkomendasikan tidak bisa dihapus, dan latihan baru juga tidak bisa ditambahkan
  • Saya juga punya pendapat yang mirip
    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
  • Terima kasih banyak sudah meninggalkan feedback yang begitu teliti
    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
  1. 33 rekomendasi itu benar-benar berlebihan (haha)
  2. Betul, saat ini hanya asal merekomendasikan 3 per otot; ke depan logikanya akan diperkuat
  3. Saya sedang menambahkan metadata seperti klasifikasi compound/isolation, otot utama/pendukung/pola gerak/kualitas resistensi, juga tag popularitas
  4. Saya juga sedang mempertimbangkan opsi untuk mengecualikan total peralatan tertentu seperti mesin
    Saya paham sekali kebutuhan seperti punya dumbbell/pull-up bar tapi tidak ingin memakai cable/machine, jadi UI bagian ini akan dibuat lebih spesifik
  5. OK
  6. Ada bug di mana daftar tidak berubah meski peralatan diganti, itu akan segera diperbaiki
    (Untuk sekarang perlu diulang 2 kali, masalah render)
  7. Edit seluruh rutinitas akan segera didukung
    Saya ingin memperbaikinya berdasarkan prinsip yang baik, dan kalau memungkinkan saya ingin kamu ikut menyumbang ide untuk menentukan arahnya
  • Ada yang lain menyebut pentingnya ‘koreksi postur’; saya penasaran apakah ada teknologi open source computer vision yang bisa memeriksa postur/form
    Akan lebih menarik lagi kalau solusinya bisa langsung dideploy dan dipakai di perangkat keras konsumen
  • Akan lebih baik kalau pemilihan peralatan/otot tidak wajib
    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’
  • Saya juga tidak memikirkan bagian ini, ternyata alur sekarang menuntut terlalu banyak pengetahuan di awal
    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
  • Bukankah kalau begitu kamu tinggal memilih pull-up bar saja sebagai peralatan?
  • Sebagai pemula, hal pertama yang saya rasakan adalah UI pemilihan otot yang sekaligus mencolok dan membingungkan
    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
  • Terima kasih untuk feedback yang jujur
    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
  • pemilihan otot akan dijadikan opsional (atau bisa dilewati)
  • preset untuk pemula (full-body, upper body, dll.)
  • preset dengan label bantuan seperti "dada+trisep (push)", "punggung+bisep (pull)", dll.
    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
  • 'push' dan 'pull' mungkin terasa sulit, tapi kalau tidak tahu 'leg' itu mungkin sudah terlalu tidak tahu ya (canda)