Bir sporcunun sayıları, sporcunun kendi geçmişiyle okunur.
HoopLab, profesyonel bir basketbolcunun kendisi için geliştirdiği bir iPhone uygulaması. Fitbit bilekliğin gece verisini ve kısa günlük girdileri alır, her değeri sporcunun kendi baseline'ıyla karşılaştırır ve her eşiği yayımlanmış bir çalışmaya bağlar.
Demo burada, sentetik bir sporcuyla çalışıyor. Tarayıcından hiçbir şey çıkmaz.
Neden
Giyilebilir cihazlar yorumlarını ortalama bir kullanıcıya göre ayarlar. Profesyonel bir sporcunun değerleri bu çerçeveye uymaz: çok düşük dinlenik nabız, yüksek haftalık yük ve uzun toparlanma ihtiyacı yanlış okunur.
Bazı şeyleri saat hiç ölçemez: seansın ne kadar zorladığı, hangi kasın ağrıdığı, sıradaki maçın ne zaman olduğu. HoopLab bunları 30 saniyelik sabah check-in'i ve antrenman sonrası birkaç dokunuşla sorar, sonra her geceyi sporcunun önceki dört haftasıyla karşılaştırır.
Bir sayı ekrana nasıl gelir
Veri
Google Health API her saat senkronlanır: gece HRV'si, uyku nabzı, uyku, SpO2, cilt sıcaklığı ve egzersizler. Sporcu check-in, seans zorluğu, ağrı haritası, öğün, su, maç ve seyahat ekler.
Motor
Deterministik ve testli bir TypeScript paketi baseline'ı, antrenman yükünü, bölge yükünü ve beslenme hedeflerini hesaplar. Aynı girdi, aynı sonuç.
Kanıt
Motorun kullandığı her eşik repoda bir kuraldır; her kural DOI ya da PMID ile doğrulanmış kaynaklara işaret eder.
Yorum
Sabah özetini bir dil modeli, motorun zaten hesapladığı sayılardan yazar. Sunucudaki denetçi alıntısı ya da sayısı tutmayan cümleyi atar.
iPhone
Expo ve React Native. Tahminler "Tahmin" etiketi taşır; kırmızı bayraklarda yorum yerine doktora yönlendirme çıkar.
Her eşiğin bir kaynağı var
Günün durumu kişisel bir banda dayanır: son 7 gün, önceki 28 günle yarım standart sapma payıyla karşılaştırılır. Bu bant uygulamaya sabit yazılmadı. Bir kural dosyasında duruyor ve kural kaynaklarını adıyla veriyor. Repodaki gerçek kural, bu sayfa derlenirken okundu:
{
"id": "toparlanma-bant",
"rolling_days": 7,
"baseline_days": 28,
"sd_multiplier": 0.5,
"metrics": ["hrv", "sleep_hr"],
"sources": [
"manresa-rocamora-2021",
"vesterinen-2016",
"buchheit-2014",
"duking-2021"
]
}
İşaret ettiği 4 kaynak
- manresa-rocamora-2021Heart Rate Variability-Guided Training for Enhancing Cardiac-Vagal Modulation, Aerobic Fitness, and Endurance Performance: A Methodological Systematic Review with Meta-Analysis
- vesterinen-2016Individual Endurance Training Prescription with Heart Rate Variability
- buchheit-2014Monitoring training status with HR measures: do all roads lead to Rome?
- duking-2021Monitoring and adapting endurance training on the basis of heart rate variability monitored by wearable technologies: A systematic review with meta-analysis
Uygulamanın tamamında: 12 modülde 50 kural, arkasında 118 kaynak. DOI ya da PMID'si doğrulanamayan kaynak eklenmez; her push'ta kaynaklar geri çekilme kayıtlarına karşı yeniden denetlenir. Çalışma basketboldan değil de dayanıklılık sporcularından ya da futboldan geliyorsa kural bunu açıkça yazar.
Ekranlar




Demo modu, sentetik sporcu. Görseller açık ya da koyu tema ayarını izler.
Gizlilik
Repo herkese açık ve içinde sporcunun hiçbir verisi yok. Sağlık verisi yalnız sahibinin Supabase projesinde, her tablo tek sahibe kilitli. API anahtarları sunucuda kalır. Bir bekçi her commit'i, her commit mesajını ve bütün git geçmişini sır ve kişisel bilgi için tarar. Ekran görüntüleri, testler ve bu demo yalnız sentetik veri kullanır.
Nasıl geliştiriliyor
Sporcu HoopLab'i Claude Code ile geliştiriyor ve bütün kayıt repoda: seçenekleriyle 53 karar kaydı, 35 oturum raporu, bir dersler dosyası ve her oturumun başladığı tek bir durum belgesi. Tip denetimi, birim testleri, uçtan uca testler ve kaynak denetimi her push'ta çalışır.
Expo SDK 57 ve React Native, strict TypeScript, Expo Router, Supabase (satır düzeyinde güvenlikli Postgres, Edge Functions, pg_cron), Google Health API, yalnız sunucuda Claude API, 3D manken için three.js.