HoopLab

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

  1. 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.

  2. 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ç.

  3. Kanıt

    Motorun kullandığı her eşik repoda bir kuraldır; her kural DOI ya da PMID ile doğrulanmış kaynaklara işaret eder.

  4. 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.

  5. 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:

research/rules/toparlanma.json
{
  "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-AnalysisManresa-Rocamora et al., 2021, meta-analiz, doi:10.3390/ijerph181910299
  • vesterinen-2016Individual Endurance Training Prescription with Heart Rate VariabilityVesterinen et al., 2016, randomize kontrollü çalışma, doi:10.1249/MSS.0000000000000910
  • buchheit-2014Monitoring training status with HR measures: do all roads lead to Rome?Buchheit, 2014, anlatı derlemesi, doi:10.3389/fphys.2014.00073
  • duking-2021Monitoring and adapting endurance training on the basis of heart rate variability monitored by wearable technologies: A systematic review with meta-analysisDüking et al., 2021, meta-analiz, doi:10.1016/j.jsams.2021.04.012

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

Bugün ekranı: günün durumu Hazır
Hazır
Bugün ekranı: günün durumu Toparlan, nedenleri ve öneri
Toparlan, nedenleriyle
Gece verisi: kişisel bantlı HRV grafiği, nabız, uyku, solunum
Gece verisi
Vücut: döndürülebilir 3D mankende son bir haftanın ağrı haritası
Haftalık ağrı haritası

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.