Files
neckfireandClaude Opus 4.8 af32669931
Build & Deploy / build (push) Successful in 18s
StreakFit — API Laravel 13 OSDD + Octane/FrankenPHP
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-19 03:00:17 +02:00

3.2 KiB

StreakFit — Thèse produit : rétention & différenciation

Le problème

Les apps fitness meurent de la spirale de culpabilité : rater un jour casse le streak → sentiment d'échec → abandon. La majorité des apps à streak amplifient le churn. StreakFit inverse ça : le streak est indulgent et social.

Les 5 différenciateurs (ordre d'impact rétention)

1. 🔥 Moteur de streak indulgent — LE cœur (couche functional/streaks)

  • Freezes : jetons gagnés par régularité (ex : +1 tous les 7 jours), consommés automatiquement pour couvrir un trou d'1 jour.
  • Jours de repos qui comptent : un streak_day source='rest' entretient la flamme (objectif = régularité, pas surentraînement).
  • Objectif hebdo : atteindre X séances/semaine garde le streak "vivant" même sans séance quotidienne (goals).
  • Streak repair : logger rétroactivement la veille (fenêtre 24-48h) pour réparer une série.
  • Anti-churn by design : la flamme ne meurt pas à cause de la vraie vie.

2. 👥 Streaks de crew — redevabilité sociale (couche functional/crews à venir)

  • Rejoindre un crew/box ; flamme collective (le crew maintient une série commune).
  • Voir les flammes des membres, un mini-classement bienveillant, nudge quand un membre va casser sa série.
  • Le cross-training est communautaire → la pression sociale positive = rétention.

3. Log sans friction (couche tracking + front PWA)

  • Sets en un tap, timer de repos auto, "répéter la dernière séance", pré-remplissage du dernier poids/reps.
  • Offline-first (PWA + background sync) : logger au gym sans réseau, sync au retour.

4. 📈 Célébrer le progrès (couche tracking : personal_records, volume)

  • Confettis/anim sur nouveau PR, courbes force/volume, milestones fun ("12 t déplacées cette semaine"), mensurations.
  • Progrès visible = motivation. Tout est calculé côté back, renvoyé prêt-à-afficher.

5. 🔗 Tout compte — intégrations (couche technical/integrations + futures strava/garmin)

  • Une activité Strava/Garmin entretient le streak (un run compte). Mobilité d'un jour off compte.
  • Le contrat ActivityProvider rend l'ajout d'une source trivial (nouvelle couche, zéro modif du noyau).

Boucle d'engagement (rappels ntfy — couche technical/notifications à venir)

  • Cron quotidien : détecte les streaks "à risque" (pas d'activité aujourd'hui, freeze insuffisant) → push ntfy bienveillant.
  • "🔥 ta série de N jours a besoin d'une séance aujourd'hui" / "😌 tu as gagné un jour de repos" / "🏆 nouveau PR débloqué".
  • Jamais spam : 1 rappel/jour max, désactivable, respect du fuseau (users.timezone).

Identité visuelle

Thème moderne, accent flamme : base claire (off-white) + dark mode, dégradé flamme orange→rouge (#F97316 → #EF4444), ember/amber (#FBBF24) en highlight. La flamme du streak est le héros visuel (taille/intensité ∝ au streak). Typo sans moderne, chiffres en display bold (le compteur de streak). Cartes arrondies, chaleur subtile.

Priorisation build

V1 (MVP sticky) : streaks indulgents + tracking sans friction + exercices + progrès/PR + PWA installable. V1.1 : rappels ntfy + intégrations (1 provider, ex Strava). V1.2 : crews / social.