12 puan yazan GN⁺ 2025-06-19 | 1 yorum | WhatsApp'ta paylaş
  • 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

 
GN⁺ 2025-06-19
Hacker News görüşleri
  • Burada kendi uygulamam workout.lol’ü görünce tuhaf bir duyguya kapıldım
    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ş
  • Vincenius’sun!
    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
  • Bu gerçekten çok havalı
    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
  • Acaba sektörden biri ücretsiz bir alternatifi engellemek için satın almış olabilir mi diye merak ettim
    Bu projenin nasıl bir geleceği olacağını görmek istiyorum
  • Bende “error loading exercises” mesajı çıkıyor
    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
  • Yakın zamanda Wget’i denedim ama maalesef tavsiye edemem
    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
  • Bende de aynı hata var
  • Yaklaşık 5 yıldır ağırlık çalışıyorum ve açık kaynak, iyi toparlanmış bir araç görmek hoşuma gitti
    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
  1. Mobil uygulama (veya PWA, benim yaptığım PWA da native uygulama kadar yeterli)
  2. Belirli antrenman rutinlerini uzun süre saklama ve yönetme özelliği
  • İdeal olarak veriler farklı UI’lar arasında dışa aktarılıp paylaşılabilmeli
    https://json-schema.app/view/#?url=https%3A%2F%2Fgist.githubusercontent.com%2Fgavmor%2Fb74c4746aa9f3f63b0f50863a5e62d52%2Fraw%2F01318d1107f67ac83387a905d6556736fa7797ff%2Flifting.json
  • Bunu kullandıktan sonra aklıma takılanları yazıyorum; OP’yi küçümsemek gibi bir niyetim kesinlikle yok
    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
  • Spor salonu tarafında deneyimli birinden bunu duymak gerçekten çok güzel
    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
  • Veri kaynağı arıyorsan bakmaya değer bir proje
    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
  • wrkout.xyz’yi daha önce görmüştüm, gerçekten harika bir proje
    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
  • İşte gerçek katkı tam da bu
    Sadece fikir atmıyorsun, veri setini de toplamışsın; böylece yeni başlayan biri hemen başlayabiliyor
    Gerçekten teşekkürler
  • Dürüst olmak gerekirse bu uygulama beklediğimden daha iyi
    Benim istediğim şey egzersiz başına ağırlık/tekrar önerisi veren bir özellik
    “100 Pushups” adlı fitness programına bakabilirsin
  • Ceza olarak maksimum tekrar yap (ör. 8 şınav gibi)
  • Uygulama bir plan oluşturuyor (3, 4, 3, 3, 5 gibi, aralarda 2 dakika dinlenerek)
  • Kullanıcının seviyesine göre tekrar sayılarını kademeli ve uyarlanabilir biçimde öneriyor
  • Yaklaşık 6. haftada 100’e ulaşacak şekilde ilerliyor
    İlgini çekerse UI tartışmasına da her zaman açığım
  • Backend’den vazgeçmek istersen AT Protocol entegrasyonu da bir fikir olabilir
    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 fikre tamamen hayran kaldım
    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
  • Uygulama güzel görünüyor ama egzersizleri alırken hata veriyor
    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
  • Ayrıntılı rapor için teşekkürler
    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
  • Birkaç teknik sorun yaşadım; yeni bir proje için bunlar anlaşılabilir
    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
  1. Full body istedim ama tek seansta 33 egzersiz önerdi — gerçekçi değil
  2. Egzersiz seçimi kas başına rastgele 3 hareket atıyor; çoklu kas hedefleme ve uygun hacim dağılımını görmezden geliyor
  3. Bilinmeyen ya da verimsiz egzersizler de sık öneriliyor
  4. Bende olmayan ekipmanları da önerdi; ben home gym kullanıyorum, makineler tamamen hariç tutulmalı
  5. Bilinmeyen marka ekipmanlar öneriliyor
  6. Ekipman seçimini değiştirsem de egzersiz önerileri aynı kalıyor
  7. Önerilen egzersizleri silemiyor, yenilerini ekleyemiyorum
  • Ben de benzer düşünüyorum
    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ı
  • Böyle özenli geri bildirim bıraktığın için içtenlikle teşekkür ederim
    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
  1. 33 öneri tam bir aşırılık olmuş (gülüyor)
  2. Evet, şu an kas başına sadece 3 öneri körlemesine geliyor; ileride mantığı güçlendireceğim
  3. Compound/isolation gibi sınıflandırmaların yanında ana/yardımcı kaslar, hareket paternleri, direnç kalitesi ve popülerlik etiketleri için metadata ekliyorum
  4. Makine hariç tutma gibi belirli ekipmanı tamamen dışlama seçeneğini de eklemeyi düşünüyorum
    Dumbbell ve barfiks barı olup cable/machine istemeyen kullanım senaryosunu çok iyi anlıyorum; bunu UI’da daha netleştireceğim
  5. OK
  6. Ekipmanı değiştirince listenin yenilenmemesi bir bug, yakında düzelteceğim
    (Şu an iki kez tekrar gerekiyor, render sorunu var)
  7. Tüm rutini düzenleme desteği yakında gelecek
    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
  • Başkaları da “form düzeltme”nin öneminden bahsetmiş; açık kaynak computer vision ile duruş/form kontrolü yapan bir teknoloji var mı diye merak ediyorum
    Özellikle tüketici donanımında doğrudan dağıtılıp kullanılabilecek bir çözümse daha da ilgimi çeker
  • Ekipman/kas seçimi zorunlu olmasa daha iyi olurdu
    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
  • Aslında ben de bunu düşünmemiştim; mevcut akış başlangıçta fazla bilgi gerektiriyor
    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
  • O zaman ekipman olarak sadece barfiks barını seçsen olmaz mı?
  • Yeni başlayan biri olarak ilk fark ettiğim şey, kas seçimi UI’ının gösterişli ama aynı zamanda kafa karıştırıcı olmasıydı
    İ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
  • Dürüst geri bildirim için teşekkürler
    Ş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
  • kas seçimini isteğe bağlı yapma (veya atlama)
  • yeni başlayanlar için preset’ler (full body, upper body vb.)
  • “göğüs+triceps (push)”, “sırt+biceps (pull)” gibi yardımcı etiketli preset’ler
    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
  • “Push” ve “pull” zor gelebilir ama “legs” de bilinmiyorsa artık o biraz fazla bilgisizlik değil mi (şaka)