- Antrenman planı oluşturma, ilerleme takibi ve geniş bir egzersiz veritabanı sunma özelliklerini içerir
- Geçmişteki workout.lol başarısızlığı deneyiminden yola çıkarak başlatıldı ve açık kaynak topluluğu için sürdürülebilir, evrimsel bir proje olmayı hedefler
- Feature-Sliced Design ilkeleri ve Next.js tabanlı mimari kullanılarak, özellik bazında bağımsızlık, ölçeklenebilirlik ve kodun bakım kolaylığı vurgulanır
- Egzersiz veritabanı CSV dosyalarıyla kolayca içe aktarılabilir ve çeşitli egzersiz özellikleri, videolar, ana hedef kaslar gibi ayrıntıları içerir
- İleride mobil uygulama, rozet/oyunlaştırma, giyilebilir cihaz entegrasyonu, topluluk forumu gibi özellikler topluluk katılımı temelinde sürekli genişletilecek
Workout-Cool genel bakış ve değeri
- Workout-Cool, kullanıcıların kişiselleştirilmiş antrenman planları oluşturmasına, kendi ilerleme durumlarını kaydetmesine ve zengin bir egzersiz veritabanını (açıklamalar, videolar vb. ile) kapsamlı biçimde kullanmasına olanak tanıyan modern bir açık kaynak fitness koçluğu platformudur
- Eski workout.lol projesinin ihmal edilmesini ve terk edilmesini bizzat yaşayan geliştirici, bunu antrenman topluluğu için daha sürdürülebilir ve modern bir açık kaynak fitness platformu olarak yeniden hayata geçirdi
Projenin başlangıcı ve motivasyonu
- workout.lol projesinin ana katkıcılarından biri olarak, video sağlayıcı partnerle iş birliğinin başarısız olması ve video lisans maliyetleri gibi sorunlar yaşadı
- Proje başka birine satıldıktan sonra hızla terk edildi; 9 aydan uzun süre yeni sahibiyle iletişim kurmaya çalıştı ancak yanıt alamadı
- Mevcut projenin değerini boşa çıkarmamak için, genel olarak iyileştirilmiş modern bir platformu sıfırdan kurmaya karar verdi
- Bu proje ticari amaçlı değildir. Açık kaynak topluluğuna güvenilir bakım ve gelişim sözü veren bir evrim anlamı taşır
Topluluk odaklı işletim felsefesi
- Hem geliştirici hem de gerçek kullanıcı olarak, topluluğun ihtiyaç duyduğu özellikleri ve deneyimi doğrudan yansıtır
- Geçmişte workout.lol kullanıcısı olanlar memnuniyetle karşılanır; yeni kullanıcılar ise geleceğe dönük bir fitness platformunun değerini deneyimleyebilir
- Herkes doğrudan katkıda bulunabilir ve iyileştirme önerileri sunabilir
Egzersiz veritabanı ve içe aktarma
- Projede zengin bir egzersiz veritabanı yer alır
- Örnek CSV formatıyla, her egzersizin id, adı, açıklaması, video URL’si, görseli, ana hedef kası, özellikleri gibi çeşitli bilgiler özelleştirilmiş biçimde içe aktarılabilir
- Başlıca sütun örnekleri: id, name, name_en, description, description_en, full_video_url, full_video_image_url, introduction, slug, attribute_name, attribute_value
- Özellik türü örnekleri: TYPE(güç/kardiyo/pliometrik/esneme), PRIMARY_MUSCLE, SECONDARY_MUSCLE, EQUIPMENT, MECHANICS_TYPE
- Veriler tek satırlık bir komutla hemen import edilebilir; bu da yüksek veri genişletilebilirliği sağlar
Proje mimarisi
- Feature-Sliced Design(FSD) ilkelerinin uygulandığı Next.js App Router tabanlı yapı
- Her özelliğe göre bağımsız ve yeniden kullanılabilir bir yapı uygular
- Net alan katmanı ayrımı: shared → entities → features → widgets → app
- UI, iş mantığı ve veri katmanında tutarlılık korunur
- Dosya ayrımı örnekleri:
app/ - Next.js rotaları ve layout’lar
processes/ - Bileşik iş akışları
widgets/ - Birleştirilebilir UI (ör. Sidebar, Header)
features/ - Ana birimler (kimlik doğrulama, egzersiz yönetimi vb.)
entities/ - kullanıcı, egzersiz, workout vb.
shared/ - ortak kod ve tipler
styles/ - global CSS/tema
Geliştirme ve dağıtım
- Node.js 18+ gerekir; PostgreSQL (Docker veya doğrudan kurulum), pnpm ya da npm gereklidir
- Klonlamadan sonra bağımlılıkların kurulması, ortam değişkenlerinin ayarlanması, veritabanı kurulumu (otomatik veya manuel) ve tarayıcıdan http://localhost:3000 adresine erişim
- Veritabanı migration işlemleri doğrudan yapılabilir ve geliştirme sunucusu çalıştırılabilir
- Docker imajı oluşturma ve container çalıştırma (planlanıyor)
Planlanan özellikler
- Egzersiz/video ekleme
- Mobil uygulama (React Native tabanlı)
- Oyunlaştırma (rozet sistemi vb.)
- Gelişmiş ilerleme istatistikleri ve görselleştirme
- Giyilebilir cihazlar (saat/takip cihazı) entegrasyonu
- Çoklu dil desteği
- OAuth kimlik doğrulama (Google, Apple vb.)
- Yerleşik topluluk forumu
1 yorum
Hacker News görüşleri
Uygulamayı birine satmıştım ama o kişi sonra tamamen kendi hâline bıraktı
Destek gerekirse ulaşsın diye birkaç kez mesaj da attım ama bir kez bile yanıt alamadım
Yine de tekrar ilgilenildiğini görmek beni gerçekten çok mutlu etti
UI iyileştirmeleri de harika, gerçekten çok iyi iş
Adını görünce ne kadar sevindiğimi tahmin bile edemezsin
Ben de hiçbir şey yapamadan projenin durup kalmasını izlerken içimin parçalandığı hissini yaşadım
Sonunda bu durum beni her şeyi yıkıp yeniden yapmaya, senin ilk başta gösterdiğin açık fikirliliği koruyarak baştan inşa etmeye itti
UI övgüsü için teşekkürler, bunu senden duymak benim için gerçekten anlamlı
Bir gün geri dönmek istersen kapı her zaman açık
Fikirlerin, görüşlerin, hatta sadece varlığın bile çok şey ifade ediyor
Ben de Apple CalDAV(iCal) ile entegre çalışan otomatik takvim planlama API’si üzerinde çalışıyorum
Hedef odaklı bir planlama özelliği yapıyorum (Google ORTools ile çok büyük bir CP-SAT kısıt modelini çok hızlı çözüyor, 1 yıllık hesaplamayı bile 5 saniyenin altında yapıyor)
Beslenme hedeflerine uygun öğün planı özelliği de içinde var
Aslında böyle bir egzersiz/antrenman planı sistemini kesinlikle eklemek istiyordum ama ne kullanacağımı hiç bilmiyordum
Şimdi sonunda ne kullanmam gerektiği netleşti
Bu projeyi yaptığın için teşekkürler
Bu projenin nasıl bir geleceği olacağını görmek istiyorum
Bu arada wger projesi hakkında ne düşündüğünü merak ediyorum
https://github.com/wger-project FLOSS AGPL lisanslı, self-host edilebilen bir fitness/egzersiz/beslenme yönetim platformu
Neredeyse 10 yıllık gibi duruyor; bir django uygulaması ve resmi flutter uygulaması var, bu yüzden Android/iOS/Windows/Linux/macOS’ta kullanılabiliyor
Çok kullanıcılı destekliyor, hatta spor salonu işletmek için bile kullanılabiliyor
body.build ise daha yeni bir FLOSS proje; tarayıcı tabanlı ve ağırlık antrenmanı programı oluşturmaya odaklı
body.build’ün yazarı wger’a da katkı veriyor
Ben uzun deneme-yanılma sürecinden sonra wger’ı homelab’imde gayet iyi şekilde kullanır oldum
Self-host etme sürecinde düşünülmesi gereken epey şey var ama çalışıyor
En büyük eksisi egzersiz veritabanının kapsamı, ama neyse ki katkıcılar bunu yavaş yavaş genişletiyor
Egzersiz verisi (ve egzersiz medyası) katkısı yapabilecek biri varsa, bu AGPL proje kesinlikle minnettar olacaktır
Web sitesinin UX’i çok kötü ve mobil uygulama da (iOS’ta) bug dolu
Antrenman başlatma/ağırlık düzenleme/seans kaydı fark etmeksizin nereye dokunsam çöküyor ya da donuyor, sürekli çıkış yaptırıyor
Şu anda LiftLog kullanıyorum; istediğim her şeyi destekliyor ve FOSS
https://github.com/LiamMorrow/LiftLog
Fitness ve ağırlık antrenmanının bu kadar yaygın bir hobi olmasına rağmen işe yarar ve bakımı iyi yapılan ticari olmayan uygulamaların neredeyse hiç olmaması ilginç
Onlarca GitHub projesini bizzat deneyip vardığım sonuç bu
Tecrübe arttığında, bir uygulamanın özelliklerinden daha önemli olan şeyin aslında ne kadar düzenli kayıt tuttuğun ve progressive overload’ı nasıl yönettiğin olduğunu görüyorsun
Bu uygulama yeni başlayan biri için başlamak adına iyi bir seçenek
Daha yaygın kullanılacaksa tam olarak 2 şeye ihtiyaç var
https://json-schema.app/view/#?url=https%3A%2F%2Fgist.githubusercontent.com%2Fgavmor%2Fb74c4746aa9f3f63b0f50863a5e62d52%2Fraw%2F01318d1107f67ac83387a905d6556736fa7797ff%2Flifting.json
Yeni başlayanlar için bunun iyi bir uygulama olduğu fikrine katılmıyorum
Verilen emeği takdir ediyorum ama önerilen egzersiz dizilimi biraz endişe verici
Örneğin “sırt/biceps” seçince 9 egzersiz düzensiz biçimde geliyor
Egzersiz sırasına ya da düzenine dair bir düşünce yok; compound lift ortada beliriyor ya da chin-up üç kez çıkabiliyor
Tekrar/set/ağırlıkla ilgili 1RM hesabı da yok
Standart olmayan bro split öneriyor ve bu da işi daha da dağınık hâle getiriyor
Ekipman bazlı, minimum kurulumlu bir PPL uygulaması yapılsa bundan çok daha iyi olabilir diye düşünüyorum
Benim için de tecrübe arttıkça asıl önemli olan şeyin gerçekten düzenlilik ve ilerlemeyi takip etmek olduğunu gördüm (benim durumumda bu artık performanstan çok mental durum takibi için)
Rutin kaydetme + uzun dönem takip zaten yol haritasında var
Bu yüzden “workout session” mimarisi eski uygulamadan tamamen farklı tasarlandı
Kullanıcıların tek tek antrenman blokları oluşturabilmesini ve bunları yeniden kullanma, paylaşma, analiz etme ve geliştirme konusunda en iyi deneyimi sunmasını istiyorum
Hazır konu açılmışken, kendi yaptığın PWA’da bu rutin yönetimine nasıl yaklaştığını duymayı çok isterim
Benzer bir yoldan geçmiş gibiyiz, o yüzden bunu gerçekten paylaşmanı isterim
https://wrkout.xyz/ (görsel/video içeren açık egzersiz veritabanı API’si)
https://github.com/wrkout/exercises.json (açık kaynak egzersiz veri seti)
İhtiyaç olursa kullanmanı tavsiye ederim
Bu sefer videolarla ilgili lisans sorunlarından tamamen kaçınmak için ortağımla birlikte veri setini sıfırdan kurduk
Böylece özellikler, çeviriler vs. üzerinde istediğimiz gibi değişiklik yapabilecek veri kontrolüne sahip oluyoruz
Ama bu alanda farklı açık projelerin ortaya çıkması beni çok sevindiriyor
İki topluluğun da gelişebileceği bir sinerji varsa kesinlikle değerlendirmek isterim
DM atabilirsin
Sadece fikir atmıyorsun, veri setini de toplamışsın; böylece yeni başlayan biri hemen başlayabiliyor
Gerçekten teşekkürler
Benim istediğim şey egzersiz başına ağırlık/tekrar önerisi veren bir özellik
“100 Pushups” adlı fitness programına bakabilirsin
İlgini çekerse UI tartışmasına da her zaman açığım
Kullanıcı verisi tamamen PDS’de tutulur, ayrı bir sunucu gerekmez
Proje tekrar terk edilse bile veriler kalıcı olarak çalışmaya devam eder
Bu uygulamayı biliyorum; gerçekten sade ve özellikle uyarlanabilir ilerleme yaklaşımı yeni başlayanları motive etmekte çok başarılı
Kendi kendini ayarlayan ve kademeli ilerleyen rutinler için UI üzerine konuşmayı çok isterim
Önce (biraz kaba) bir algoritma düşüneyim, bana DM at
0:{"a":"$@1","f":"","b":"eETmgndxtv4Ar0i8Wync1"}
1:{"serverError":"An unexpected error occurred."}
İstek kodunu da ayrıntılı header ve bilgilerle birlikte paylaştım
HN trafiğindeki ani patlama sunucuyu beklenmedik şekilde dağıttı
Stabilizasyon ve bug düzeltmeleri çok yakında geliyor
Test ettiğin ve geri bildirim verdiğin için tekrar teşekkürler
Ama daha temel mesele şu ki egzersiz öneri sistemi, fitness programı tasarımının özünü henüz hesaba katmıyor
Şu hâliyle bunu egzersiz programı tasarlamak için tavsiye etmek zor
Bence rutin üretmeye odaklanmak yerine, oturmuş egzersiz kayıtları/rutin şablonları içe aktarmaya yönelmek daha iyi olurdu (zaten buna ilgi gösterdiğini de gördüm)
Karşılaştığım başlıca sorunlar şunlar
UI ve açıklamalar gerçekten iyi ama egzersiz seçimi, olduğunda bile, belirsiz ya da mantıksız
Veritabanına standart primary/secondary (bar, dumbbell, machine) egzersizleri eksiksiz koyup kullanıcıların kendi rutinlerini oluşturmasına izin vermek nasıl olurdu
Belirli egzersizler için alternatif seçenekler de güzel olurdu
Rutin üretimi ancak bunlar hazır olduktan sonra uygulanmalı ve gerçek antrenörlerden geri bildirim gelirse harika olur
Mevcut ekipman seçenekleri sade ve standart olmalı, markalı makineler mümkün olduğunca dışarıda bırakılmalı
Bu kadar ayrıntılı yorumlar özellikle bu erken aşamada çok değerli
Egzersiz programı mantığı şu anda gerçekten çok temel düzeyde
Antrenman ilkeleri (hacim, hareket paternleri, toparlanma döngüsü, compound/isolation) hâlâ yeterince yansıtılmıyor
Şu anki sürüm gerçekten sadece “keşif amaçlı”; akıllı bir koç değil
Bunu UI’da daha açık ifade etmem gerekiyor
Sorularına tek tek yanıt vereyim
Dumbbell ve barfiks barı olup cable/machine istemeyen kullanım senaryosunu çok iyi anlıyorum; bunu UI’da daha netleştireceğim
(Şu an iki kez tekrar gerekiyor, render sorunu var)
Bunu doğru ilkeler üzerine inşa ederek geliştirmek istiyorum; müsaitsen yön belirleme konusunda fikir bile paylaşsan çok değerli olur
Özellikle tüketici donanımında doğrudan dağıtılıp kullanılabilecek bir çözümse daha da ilgimi çeker
Mesela bende barfiks barı var ama hangi kasları çalıştırabileceğimi bilmiyorum
Belki bunun yerine “başlangıç dostu” gibi bir filtre yaklaşımı olabilir
Başkalarından da benzer geri bildirim aldım
Filtreleri isteğe bağlı yapıp “başlangıç dostu”, “popüler egzersizler”, “calisthenics” gibi öneriler eklemeyi planlıyorum
Bunu söylediğin için teşekkürler
İlk onboarding’de kas seçimi zorunlu ve bir rutin hangi kasları hedefliyor bilmiyorsan, bu baştan bir bariyer oluşturuyor
“Push”, “pull”, “legs” gibi şeyleri kabaca biliyorum ama spesifik kas adları bana tamamen yabancı
Sonuç olarak bu uygulama, sanki anatomi çalışacak insanlar için yapılmış gibi hissettiriyor
İçeri girişi biraz daha kolaylaştırmanın bir yolunu düşünmek gerek
Örneğin önerilen kas grupları, preset’ler
Şu anki onboarding bilgi düzeyi konusunda fazla varsayım yapıyor (hem de tahmin ettiğimden çok daha fazla)
Yeni başlayanlar “arka omuz” ya da “lat” öğrenmek istemiyor; sadece güçlenmek ve daha fit görünmek istiyor
Bir sonraki güncellemede
Anatomi çalışmadan doğrudan başlanabilecek, daha dostane bir ilk deneyim oluşturmak istiyorum
Geri bildirimin gerçekten çok yardımcı oldu
Fitness yolculuğunda başarılar