refactor: code quality cleanup — remove any types, add logger, rename Kine to Tabata

- Phase 0: Rename all Kine references to Tabata (types, files, imports, i18n, analytics events)
- Phase 1: Add test coverage for tabataProgramStore, workoutProgramStore, and color utils (47 tests)
- Phase 2: Remove all `any` types from production code with proper typed replacements
- Phase 3: Replace ~60 raw console.* calls with __DEV__-gated logger utility
- Phase 4: Verify .DS_Store housekeeping (already clean)

0 TypeScript errors, 583/583 tests passing.
This commit is contained in:
Millian Lamiaux
2026-04-17 18:56:24 +02:00
parent e0e02c4550
commit 791f432334
176 changed files with 16508 additions and 2305 deletions

View File

@@ -0,0 +1,223 @@
# Script Build in Public — Épisode 01
## Tabata App : Construire une app rentable avec 0€ d'infra
---
## 🎬 INTRO (Slide 1)
*Durée estimée : 30 sec*
**[Face caméra]**
"Salut ! Aujourd'hui je démarre une nouvelle série : Build in Public.
Le concept ? Je vous montre en temps réel comment je construis une app mobile... et pas n'importe laquelle.
Le pitch : créer l'Apple Fitness+ du Tabata. Une app vidéo-first, guidée par des coachs, avec une particularité — **zéro euro de coût d'infrastructure**.
Et le défi ? Tout livrer en **un mois**.
Let's go."
---
## 📌 LE PROBLÈME (Slide 2)
*Durée estimée : 1 min*
**[Transition vers écran partage]**
"Pourquoi cette app ? Regardez le marché des apps Tabata...
Elles proposent toutes la même chose : des minuteurs génériques. Timer, bip bip, c'est fini.
Ce qu'aucune n'a ? **La légitimité médicale.**
Moi, je suis kinésithérapeute. J'ai passé des années à comprendre comment le corps bouge, comment il récupère, comment éviter les blessures.
Cette expertise, vous ne pouvez pas la copier. C'est ma barrière à l'entrée naturelle.
Et l'autre avantage ? Je self-host tout. Serveur chez moi, stockage vidéo sur mon RAID... Résultat : **coût marginal par utilisateur = quasiment zéro**.
Chaque abonné, c'est du revenu presque pur."
---
## 💰 BUSINESS MODEL (Slide 3)
*Durée estimée : 1 min 30*
**[Slide pricing]**
"Parlons business model. J'ai opté pour un freemium à 3 niveaux.
**Niveau 1 — Gratuit à vie.**
Le programme Débutant complet. Minuteurs, vidéos, stats de base. Pourquoi gratuit ? Parce que c'est mon entonnoir d'acquisition.
**Niveau 2 — Premium, 24,99€ par an.**
Soit 2 euros par mois. Là vous débloquez les programmes Intermédiaire, Avancé, Bureau... plus les stats avancées et les nouveaux programmes chaque mois.
**Niveau 3 — Health+, 99,99€ par an.**
C'est pour plus tard. Programmes Post-partum, Seniors... les trucs qui demandent vraiment mon expertise médicale.
La clé ? Le gratuit donne envie. Le premium deliver la valeur. Le Health+ capture la marge maximale."
---
## 🏋️ LE CONTENU (Slide 4)
*Durée estimée : 1 min*
**[Slide programmes]**
"6 programmes au total. Regardez la structure :
- **Débutant** — 4 semaines, zéro impact, gratuit
- **Intermédiaire** — plyométrie progressive
- **Avancé** — pistol squat, fentes bulgares, le vrai challenge
- **Bureau** — 3 formats, zéro sueur visible
- **Post-partum** — protocole inversé, hypopressifs
- **Seniors** — tests cliniques, prévention chutes
Important : **le contenu a été conçu AVANT le code**.
Le contenu, c'est le produit. L'app, c'est juste le vecteur."
---
## 🎯 UX & CONVERSION (Slide 5)
*Durée estimée : 1 min 15*
**[Slide UX]**
"Côté UX, une règle d'or : **zéro friction au départ.**
Première séance ? Pas besoin de créer un compte. 3 questions max, et vous y êtes.
L'inscription vient APRÈS la première réussite. Parce que là, l'utilisateur a quelque chose à perdre.
Ensuite, 3 déclencheurs de conversion :
1. **T1** — Fin du programme Débutant. L'utilisateur est fier, motivé... et se demande "et maintenant ?"
2. **T2** — Blocage sur contenu Premium. Paywall contextuel avec aperçu.
3. **T3** — 5 séances en 7 jours. Là je sors l'offre personnalisée : -20% pendant 24h.
Et l'essai gratuit ? 7 jours, pas 14. Plus court = plus d'urgence. Les数据显示 12% de conversion vs 9%."
---
## 🖥️ INFRASTRUCTURE (Slide 6)
*Durée estimée : 1 min*
**[Slide infra]**
"Passons à l'infrastructure. Tout est self-hosted.
**Le hardware :**
- Ryzen 5500GT, 32 Go RAM
- SSD 256 Go pour l'OS et la base
- 4 To en RAID 5 pour les vidéos
- Fibre 1 Gbps symétrique
**La stack :**
- Traefik en reverse proxy
- Supabase auto-hébergé pour le backend
- Expo pour le mobile
- RevenueCat pour les paiements
- PostHog pour l'analytics
Les vidéos ? Environ 1 Go pour 100 exercices. À partir de 1000 utilisateurs actifs, je passerai sur un CDN. Pour l'instant, zéro coût."
---
## 📊 TECHNICAL (Slide 7)
*Durée estimée : 1 min*
**[Slide PostHog/RevenueCat]**
"Deux outils intégrés dès le jour 1 : RevenueCat et PostHog.
**PostHog** — 12 événements critiques trackés :
- session_started, completed, abandoned → taux de complétion
- paywall_viewed + trigger → quel déclencheur convertit
- trial_started → subscription_purchased → funnel complet
Et un A/B test prêt : paywall_price_variant. 24,99€ vs 29,99€. La réponse en 4-6 semaines.
**RevenueCat** — 2 offres :
- "default" pour Premium (24,99€/an)
- "medical_plus" pour Health+ (99,99€/an)
Webhook vers Supabase Edge Function pour synchroniser les droits."
---
## 📅 ROADMAP (Slide 8)
*Durée estimée : 45 sec*
**[Slide roadmap]**
"La roadmap — 1 mois, 3 phases.
**Semaine 1 — MVP**
Auth Supabase, programme Débutant complet, timer avec vidéo, 12 events PostHog.
**Semaines 2-3 — Core & Monétisation**
RevenueCat, paywall basique, programmes Intermédiaire + Bureau, notifs push.
**Semaine 4 — Lancement**
Post-partum, Seniors, A/B test pricing, soumission App Store.
Une règle : tout ce qui n'est pas critique pour la première conversion est repoussé à la V1.1. Gestion stricte du périmètre."
---
## 💵 PROJECTIONS (Slide 9)
*Durée estimée : 45 sec*
**[Slide financiers]**
"Les projections sur 36 mois.
**Scénario conservateur** — 500 abonnés → 12 480€/an
**Scénario de base** — 1 500 abonnés → 37 440€/an
**Scénario optimiste** — 5 000 abonnés → 124 800€/an
Rappel : 0€ de coût de fonctionnement. Rentable dès le premier abonné.
Target de conversion freemium → premium : 8 à 12%."
---
## 🚀 PROCHAINES ÉTAPES (Slide 10)
*Durée estimée : 30 sec*
**[Face caméra]**
"Alors, ce que je fais maintenant ?
**Jour 1** — Setup Supabase auto-hébergé. Auth, DB schema, Storage.
**Jour 3** — Expo + RevenueCat + PostHog initialisés.
**Jour 7** — Premier vrai utilisateur sur le programme Débutant.
C'est tout pour cet épisode 01. Dans le prochain, je vous montre le setup de l'infra et les premiers écrans Expo.
Abonnez-vous pour suivre l'aventure. À la prochaine !"
---
## 📝 NOTES POUR L'ENREGISTREMENT
### Ton & Style
- Conversationnel, naturel, pas de lecture robotique
- Utiliser les mains, montrer de l'énergie
- Faire des pauses après les points importants
- Varier le rythme : plus lent sur les concepts clés
### Visuels suggérés
- B-roll du serveur/infrastructure (Slide 6)
- Screen recording de l'app en développement (intro + Slide 5)
- Quick cuts entre face caméra et slides
### Durée totale estimée : ~10-12 minutes
---
*Script généré le 2026-04-05*
*Build in Public — Épisode 01*

File diff suppressed because it is too large Load Diff