Files
tabatago/TabataGo_PRD_v1.1.md
Millian Lamiaux 31bdb1586f feat: timer engine + full-screen timer UI
Implement the core timer feature following the src/features/ architecture:

- useTimerEngine hook: drift-free Date.now() delta countdown (100ms tick),
  explicit state machine (IDLE → GET_READY → WORK → REST → COMPLETE),
  event emitter for external consumers (PHASE_CHANGED, ROUND_COMPLETED,
  COUNTDOWN_TICK, SESSION_COMPLETE), auto-pause on AppState interruption
  (phone calls, background), expo-keep-awake during session
- TimerDisplay component: full-screen animated UI with 600ms color
  transitions between phases, pulse animation on countdown, flash red
  on last 3 seconds, round progress dots, IDLE/active/COMPLETE views
- TimerControls component: stop/pause-resume/skip buttons with Ionicons
- Timer route (app/timer.tsx): fullScreenModal wiring hook → display
- Home screen: dark theme with START button navigating to /timer
- Project docs: CLAUDE.md (constitution), PRD v1.1, skill files
- Shared constants: PHASE_COLORS, TIMER_DEFAULTS, formatTime utility
- Types: TimerPhase, TimerState, TimerConfig, TimerActions, TimerEvent

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 19:05:25 +01:00

30 KiB
Raw Blame History

🔥 TABATAGO Application Mobile de Minuterie Tabata Product Requirements Document (PRD) v1.1 Framework : Expo (React Native) · Cible : iOS & Android · Février 2026

1. Résumé Exécutif

TabataGo est une application mobile premium dédiée à l'entraînement par intervalles en méthode Tabata (20 secondes d'effort / 10 secondes de repos). Elle cible les personnes qui veulent des séances courtes, intenses et guidées — sans abonnement à une salle. Le marché des applications de fitness dépasse 1,5 milliard de dollars en revenus annuels et le Tabata reste un mot-clé à forte demande (popularité > 70) avec une difficulté ASO modérée (< 50).

Indicateur Valeur cible
Marché visé Fitness enthousiasts 25-45 ans, Home workout, HIIT lovers
Plateformes iOS (priorité) + Android
Framework Expo (React Native) — SDK 52+
Modèle économique Freemium + Abonnement mensuel/annuel via RevenueCat
Prix cible (US) $4.99/mois ou $29.99/an
Objectif J+30 5 000 téléchargements, taux de conversion essai > 30%
Objectif J+90 MRR $5 000, note App Store ≥ 4.6

2. Fonctionnalités Core — Spécifications Détaillées

TabataGo repose sur trois piliers fonctionnels indissociables : le Timer (moteur de l'expérience), la Musique (moteur émotionnel), et l'Exercice (moteur pédagogique). Ces trois composants doivent fonctionner en parfaite synchronisation.

2.1 Le Timer — Moteur Central

Le timer est la fonctionnalité principale et vitale de l'application. Son implémentation doit être irréprochable : précision, fluidité visuelle, comportement en arrière-plan.

2.1.1 Structure d'une Séance Tabata Standard

Phase Durée par défaut Configurable ? Couleur écran Signal
Préparation (Get Ready) 10 secondes Oui (530s) Jaune #EAB308 Bip court × 3 + vibration légère
Travail (Work) 20 secondes Oui (560s) Orange vif #F97316 Bip long au démarrage + haptique fort
Repos (Rest) 10 secondes Oui (560s) Bleu calme #3B82F6 Double bip court + haptique léger
Fin de round Instantané Flash blanc Son de cloche + vibration
Fin de séance Écran résultat Vert #22C55E Fanfare + longue vibration

2.1.2 Paramètres Configurables du Timer

Paramètre Valeur par défaut Min Max Accès
Durée Work 20s 5s 60s Tous
Durée Rest 10s 5s 60s Tous
Nombre de rounds 8 1 30 Tous
Durée Get Ready 10s 0s 30s Tous
Nombre de cycles 1 1 10 Premium
Pause entre cycles 60s 10s 300s Premium
Cycles de récupération Premium

2.1.3 Affichage Timer — Écran Séance (plein écran)

📱 LAYOUT — Écran Timer Plein Écran
▸ Zone HAUTE (20%) : Nom de l'exercice en cours + numéro de round (ex: "Burpees — Round 3/8")
▸ Zone CENTRALE (50%) : Chiffre du compte à rebours — très grand (96-120px), police monospace, couleur de phase
▸ Zone BASSE HAUTE (15%) : Barre de progression de la séance complète (rounds) + indicateur phase actuelle
▸ Zone BASSE (15%) : Boutons Pause / Stop / Skip — discrets pour ne pas distraire
▸ FOND : Couleur dynamique selon la phase (orange work, bleu rest, jaune prep) avec transition animée
▸ ANIMATION : Pulsation subtile du chiffre à chaque seconde + ring circulaire de progression

2.1.4 Comportement Technique du Timer

  • Précision : Utiliser expo-background-fetch + Date.now() delta pour compenser les drifts — tolérance < 50ms

  • Background : Le timer continue en arrière-plan (notification sticky affichant le compte à rebours)

  • Verrouillage écran : Écran reste allumé pendant la séance (expo-keep-awake)

  • Interruptions : Pause automatique si appel téléphonique entrant (AppState listener)

  • Reprise : Si l'app est tuée, afficher une notification "Séance interrompue — Reprendre ?" au retour

  • OTA update safe : Le state du timer est isolé du cycle de render React pour éviter les glitches

2.2 La Musique — Moteur Émotionnel

La musique transforme une simple minuterie en expérience motivante. Elle doit s'adapter dynamiquement à chaque phase de la séance (work vs rest) et ne jamais entrer en conflit avec la musique de l'utilisateur ou les signaux sonores.

2.2.1 Architecture Sonore

Couche audio Description Technologie Contrôle utilisateur
Musique d'ambiance Tracks BPM-synchronisées intégrées à l'app expo-av (AVAudioSession) Volume indépendant, on/off
Signaux de phase Bips, voix, cloche — changement work/rest expo-av (priorité haute) Volume indépendant, choix du son
Voix coach Annonces vocales (optionnel) : "Go!", "Rest", "Last round!" expo-av (TTS ou fichiers pré-enregistrés) On/off, langue
Haptiques Vibrations synchronisées aux signaux expo-haptics On/off

2.2.2 Catalogue Musical Intégré (Offline)

🎵 TRACKS INTÉGRÉES — 3 ambiances × 3 intensités = 9 tracks minimum
▸ Ambiance ELECTRO : Low (récup), Medium (standard), High (intense) — BPM 120/140/160
▸ Ambiance HIP-HOP : Low (récup), Medium (standard), High (intense) — BPM 85/100/115
▸ Ambiance ROCK/METAL : Low (récup), Medium (standard), High (intense) — BPM 130/150/170
▸ Mode SILENCE : Aucune musique, uniquement les signaux sonores de phase
▸ Mode SPOTIFY/APPLE MUSIC : L'app n'interfère pas avec la musique de l'utilisateur (coexistence audio)
▸ Toutes les tracks sont royalty-free et embarquées dans le bundle — aucun streaming requis

2.2.3 Synchronisation Musique ↔ Timer

  • Phase WORK : Passer automatiquement à la track haute intensité de l'ambiance sélectionnée

  • Phase REST : Transition en fade-out 1s vers la track basse intensité (ambiance calme)

  • Phase GET READY : Intro de 10s sur la track principale

  • Transition douce : Cross-fade 500ms entre les phases pour éviter les coupures brutales

  • BPM adaptatif (Premium) : L'app détecte le rythme de la track et aligne le bip de fin de phase sur le beat

  • Pas de conflit : Si l'utilisateur a sa propre musique, les signaux de phase s'y superposent en ducking audio (baisse temporaire du volume)

2.2.4 Signaux Sonores de Phase — Options

Signal Options disponibles Par défaut Premium uniquement ?
Début Work Bip long, Whistle, Voix "Go!", Air horn, Clap Bip long Non
Début Rest Double bip, Voix "Rest", Bell, Ding Double bip Non
Décompte 3-2-1 Bips courts, Voix "3, 2, 1", Silence Bips courts Non
Fin de round Cloche, Applaudissements, Voix "Round X done!" Cloche Oui
Fin de séance Fanfare, Applaudissements, Voix "Workout complete!" Fanfare Non
Dernier round Voix "Last round!", Alarm, Son spécial Voix Oui

2.2.5 Gestion Technique Audio (expo-av)

  • Session audio iOS : AVAudioSessionCategoryPlayback avec MixWithOthers — permet de jouer avec la musique utilisateur

  • Focus audio Android : AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK pour les signaux

  • Préchargement : Tous les sons de phase sont chargés en mémoire au démarrage de la séance (zéro latence)

  • Mode silencieux iOS : Les signaux de phase respectent le switch mute SAUF si l'utilisateur a activé "override" dans les settings

  • Headphones détection : Si écouteurs branchés, désactiver les haptiques de phase par défaut

2.3 L'Exercice — Moteur Pédagogique

Chaque round du timer doit être associé à un exercice spécifique, affiché clairement pendant la phase de travail. C'est ce qui différencie TabataGo d'une simple minuterie générique.

2.3.1 Bibliothèque d'Exercices

Catégorie Exemples d'exercices Nb exercices V1 Nb exercices V2
Cardio / Full body Burpees, Jumping Jacks, Mountain Climbers, High Knees 8 20
Bas du corps Squats, Fentes, Jump Squats, Glute Bridges, Wall Sit 8 20
Haut du corps Push-ups, Pike Push-ups, Tricep Dips, Shoulder Taps 6 15
Abdos / Core Crunches, Planche, Russian Twists, Bicycle Crunches 6 15
Sans saut (low impact) Slow Squats, Modified Push-ups, Step Touch, March 6 15
Avec matériel Kettlebell Swings, Dumbbell Thrusters, Jump Rope 4 10

2.3.2 Fiche Exercice — Données par Exercice

📋 MODÈLE DE DONNÉES — Exercice
▸ id : identifiant unique (ex: "burpee_classic")
▸ name : Nom localisé (FR: "Burpee", EN: "Burpee", ES: "Burpee")
▸ category : cardio
▸ difficulty : beginner
▸ musclesTargeted : string[] (ex: ["quadriceps", "pectoraux", "cardio"])
▸ description : Instruction courte (max 80 car.) — affichée pendant la phase Rest
▸ cues : string[] — 2-3 points clés de forme (ex: "Dos droit", "Genoux alignés")
▸ gifUrl : Animation GIF courte (1-2s, loop) — 200×200px max — embarquée offline
▸ thumbnailUrl : Image statique pour la bibliothèque
▸ hasModification : bool — si une variante plus facile existe
▸ modificationId : id de l'exercice de remplacement (ex: "burpee_modified")
▸ equipmentNeeded : string[] (ex: [] pour aucun, ["tapis"] pour matériel simple)

2.3.3 Affichage de l'Exercice Pendant la Séance

Phase Affichage exercice Taille Information complémentaire
GET READY (10s) Nom + GIF animé de démonstration Grande — focus total "Voici l'exercice suivant" — prépare mentalement
WORK (20s) Nom en haut + compteur central — GIF en petit coin Nom moyen, timer dominant 1-2 cues de forme affichés sous le nom
REST (10s) Nom de l'EXERCICE SUIVANT + vignette Taille moyenne "Prochain : [Nom]" — anticipation
FIN DE ROUND Résumé rapide du round (1s) Plein écran flash Round X complété + prochain exercice

2.3.4 Types de Programmes Tabata

🗂️ PROGRAMMES DISPONIBLES — V1
▸ MODE 1 — Exercice unique répété : Le même exercice sur les 8 rounds (ex: 8 rounds de Burpees) — Tabata classique
▸ MODE 2 — Circuit 2 exercices : Alternance A/B sur 8 rounds (ex: Squats / Push-ups × 4 répétitions) — Tabata duo
▸ MODE 3 — Circuit 4 exercices : 4 exercices × 2 rounds chacun — Tabata circuit (Premium)
▸ MODE 4 — Programme libre : L'utilisateur assigne manuellement un exercice à chaque round (Premium)
▸ MODE 5 — Programme IA : Sélection automatique selon niveau, objectif et historique (Premium V2)

2.3.5 Créateur de Programme Personnalisé (Premium)

  • Interface drag & drop pour assigner les exercices à chaque round

  • Sauvegarde illimitée de programmes personnalisés (nom, description, tags)

  • Partage de programme par lien deep link (ex: tabatago://program/abc123)

  • Import de programme depuis un lien partagé par un autre utilisateur

  • Favoris : marquer des exercices pour les retrouver rapidement

2.3.6 Contenu Offline & Performance

  • Tous les GIFs d'exercices V1 (38 exercices × 1 GIF ≈ 150KB chacun ≈ ~6MB total) — embarqués dans le bundle

  • Lazy loading pour les exercices V2+ : téléchargement à la demande, mis en cache localement

  • Fallback : Si pas de GIF disponible, afficher une icône + description textuelle

  • Accessibilité : alt text sur chaque GIF pour VoiceOver/TalkBack

2.4 Synchronisation Timer × Musique × Exercice

Les trois composants doivent former une expérience unifiée et cohérente. Ce tableau décrit les événements et leurs effets croisés :

Événement Timer Effet sur la Musique Effet sur l'Exercice Haptique
Début GET READY Fade-in track principale Afficher GIF exercice Round 1 Léger
Décompte 3-2-1 Volume augmente Animation pulsation sur le GIF Bip × 3
Début WORK Switch vers track high BPM Afficher nom + cues en grand Fort
Milieu WORK (10s) Rien "Halfway!" en overlay 1s Aucun
Fin WORK Switch vers track low BPM Afficher exercice SUIVANT Moyen
Début REST Track calme "Next: [Exercice]" + vignette Léger
Dernier round warning Effet sonore spécial Badge "LAST ROUND" sur nom Vibration longue
Fin de séance Fade-out + fanfare Écran résultat avec tous les exercices Célébration

3. Validation du Marché & Stratégie ASO

3.1 Analyse des Mots-Clés Cibles

Les mots-clés suivants ont été validés via Astro (difficulté < 55, popularité > 20) :

Mot-clé Popularité Difficulté Marché
tabata timer 72 48 EN 🇺🇸
hiit timer app 68 52 EN 🇺🇸
minuterie tabata 35 28 FR 🇫🇷
temporizador tabata 41 31 ES 🇪🇸
tabata training timer 55 44 EN 🇬🇧
intervall timer workout 38 29 DE 🇩🇪

3.2 Analyse Concurrentielle

Principaux concurrents identifiés et opportunités de différenciation :

Concurrent Forces Faiblesses (notre opportunité)
Tabata Timer (App Store Top 1) Notoriété, simplicité UI datée, pas de suivi streak, pas de localisation
Seconds Pro Très complet, flexible Trop complexe, prix élevé, courbe d'apprentissage
HIIT Interval Training Timer Gratuit, fonctionnel Pub intrusive, pas d'onboarding émotionnel
Tabata Stopwatch Pro Simple, rapide Pas de personnalisation, no streak, no widget

Notre avantage : onboarding émotionnel fort + design moderne + widgets iOS/Android + streaks + localisation dans 5 langues.

4. Onboarding — La Séquence Critique

L'onboarding est la priorité absolue : 80% des revenus sont générés ici. L'objectif est de créer un investissement émotionnel avant d'afficher le paywall. La séquence suit le schéma : Problème → Empathie → Solution → Moment Wow → Paywall.

4.1 Écrans d'Onboarding (séquence de 6 écrans)

Écran 1 — Le Problème (Identifier la douleur)

🎯 OBJECTIF : Identification
▸ Titre : "Tu n'as pas 1 heure pour la salle. Personne n'en a."
▸ Sous-titre : "Et pourtant tu veux progresser. On a la solution."
▸ Visuel : Animation subtile d'une horloge qui se fragmente puis se reconstruit en 20 min
▸ CTA : "Montre-moi comment" (bouton orange pleine largeur)

Écran 2 — L'Empathie (L'utilisateur se sent compris)

💬 OBJECTIF : Connexion émotionnelle
▸ Titre : "Qu'est-ce qui t'empêche de t'entraîner ?"
▸ Choix interactifs (tap) : Manque de temps / Motivation en berne / Je ne sais pas quoi faire / Je n'ai pas accès à une salle
▸ Mécanisme : stocker la réponse → personnaliser le reste de l'onboarding
▸ Transition : "On a conçu TabataGo exactement pour ça."

Écran 3 — La Solution (Présenter la méthode)

OBJECTIF : Comprendre la valeur
▸ Titre : "4 minutes. Vraiment transformatrices."
▸ Animation interactive : timeline Tabata (20s work / 10s rest × 8 rounds)
▸ Stats affichées : Brûle autant de calories qu'un jogging de 30 min / Prouvé scientifiquement depuis 1996 (Dr. Tabata)
▸ Visuel : compteur animé qui tourne — preview de l'app

Écran 4 — Le Moment "Wow" (Démo interactive)

🔥 OBJECTIF : Engagement actif (ne pas juste regarder)
▸ Titre : "Essaie maintenant. 20 secondes."
▸ Mini-minuterie Tabata LIVE intégrée dans l'écran d'onboarding
▸ L'utilisateur tape sur "Go" et vit 20s de compte à rebours + son + vibration
▸ Après : "Tu viens de faire ta première série Tabata. 7 de plus et c'est une séance complète."
▸ Note : Ce moment est le plus différenciant — créer une mini-expérience réelle

Écran 5 — Personnalisation (Engagement supplémentaire)

⚙️ OBJECTIF : Investissement personnel
▸ Titre : "Configurons ta première semaine."
▸ Sélection : Niveau (Débutant / Intermédiaire / Avancé)
▸ Sélection : Objectif (Perte de poids / Cardio / Force / Bien-être)
▸ Sélection : Fréquence souhaitée (2x / 3x / 5x par semaine)
▸ Résultat : "Ton programme personnalisé est prêt." (sensation de valeur avant paiement)

Écran 6 — Paywall (Après l'investissement émotionnel)

💳 OBJECTIF : Conversion
▸ Titre : "Continue sur ta lancée. Sans limite."
▸ Présenter l'essai gratuit 7 jours en premier (bouton principal orange)
▸ Options : Mensuel $4.99 / Annuel $29.99 (économie 50% mise en évidence)
▸ Garantie visible : "Annule à tout moment" + "Satisfait ou remboursé 30j"
▸ Lien "Continuer sans abonnement" en petit en bas (ne pas le cacher)
▸ Intégration RevenueCat — avec A/B test activé dès le lancement

5. Design & Identité Visuelle

5.1 Palette de Couleurs

Rôle Couleur Hex Usage
Primaire / Action Orange Tabata #F97316 Boutons CTA, accents, timer actif
Fond Dark (défaut) Charcoal Night #1E1E2E Background principal mode sombre
Fond Light Warm White #FFF7ED Background mode clair
Texte principal Dark Stone 900 #1C1917 Titres mode clair
Texte secondaire Stone 600 #57534E Body text, descriptions
Succès / Streak Green 500 #22C55E Streaks, complétion, feedback positif
Danger / Alerte Red 500 #EF4444 Erreurs, derniers secondes

5.2 Typographie

Usage Police Poids Taille
Timer principal Inter (monospace fallback) Black (900) 96-120px
Titres H1 Inter Bold (700) 28-32px
Titres H2 Inter SemiBold (600) 22-24px
Body / Labels Inter Regular (400) 14-16px
Micro-labels Inter Medium (500) 11-12px

5.3 Principes Design

  • Mode sombre par défaut (immersif pendant l'entraînement)

  • Timer en plein écran pendant la séance — aucune distraction

  • Animations fluides (60fps) pour les transitions et le compteur

  • Haptiques natifs : vibration légère à chaque changement de phase

  • Support Dynamic Type (iOS) et font scaling (Android)

  • Icône app : fond noir, lettre T stylisée en orange avec une flamme

6. Architecture Technique & Développement (Expo)

6.1 Stack Technique

Composant Solution choisie Justification
Framework Expo SDK 52 (React Native) Cross-platform, OTA updates, accès natif facile
Navigation Expo Router v3 (file-based) Standard moderne, deep linking natif
State management Zustand + AsyncStorage Léger, performant, persistance simple
Timer engine expo-background-fetch + useInterval custom Précision + exécution background
Audio expo-av Sons de décompte et alertes phase
Haptiques expo-haptics Retour tactile natif iOS/Android
Notifications expo-notifications Rappels d'entraînement + streaks
Widget react-native-widget-extension Widget iOS 14+ (Live Activity)
Paiements react-native-purchases (RevenueCat) Abonnements + A/B testing + analytics
Analytics PostHog (react-native-posthog) Funnel tracking, drop-off analysis
Storage expo-secure-store + AsyncStorage Données utilisateur + préférences
In-App Review expo-store-review Prompt après streak 7 jours

6.2 Features — MoSCoW Priorisation

Must Have (V1 — Lancement)

MUST HAVE — Indispensables au lancement
▸ Timer Tabata complet — voir Section 2.1 (toutes phases, sons, haptiques, background)
▸ Musique intégrée — voir Section 2.2 (3 ambiances × 3 intensités, signaux de phase, coexistence audio)
▸ Exercices avec GIFs — voir Section 2.3 (38 exercices, modes 1 et 2, affichage GET READY/WORK/REST)
▸ Synchronisation Timer × Musique × Exercice — voir Section 2.4
▸ Modes : Tabata classique, HIIT personnalisé, Pause active
▸ Affichage plein écran pendant la séance (mode portrait + paysage)
▸ Historique des séances (date, durée, rounds complétés)
▸ Système de Streak (consécutivité quotidienne, animation de feu)
▸ Notifications de rappel configurables
▸ Onboarding 6 écrans avec mini-démo live
▸ Paywall + RevenueCat (essai 7j, mensuel, annuel)
▸ Dark mode + Light mode
▸ Localisation : EN, FR, ES, DE, PT

Should Have (V1.1 — Semaine 4-8)

🟡 SHOULD HAVE — Valeur ajoutée forte
▸ Widget iOS (Home Screen) — affiche le streak et le dernier entraînement
▸ Widget Android (Glance API)
▸ Bibliothèque de programmes pré-définis (Débutant / Cardio / Force)
▸ Statistiques hebdomadaires et mensuelles avec graphiques
▸ Sons personnalisés (voix, bip, musique d'ambiance)
▸ Integration Apple Health / Google Fit (calories, activité)
▸ Partage social (carte récapitulative de la séance)

Could Have (V2 — Mois 3+)

🔵 COULD HAVE — Différenciation long terme
▸ Mode Coach IA : suggestions de séances basées sur l'historique
▸ Challenges communautaires (leaderboard hebdomadaire)
▸ Apple Watch companion app
▸ Import/Export de programmes (partage entre utilisateurs)
▸ Mode TV / AirPlay pour entraînement sur grand écran

7. Structure de Navigation (Expo Router)

Architecture file-based avec Expo Router v3 :

Route Écran Accès
/ Home — Hub central avec raccourcis et streak Tous
/onboarding Séquence onboarding 6 étapes Nouveaux utilisateurs
/timer Minuterie plein écran — séance active Tous
/programs Bibliothèque de programmes Premium
/history Historique des séances + stats Tous (limité free)
/settings Préférences, sons, notifications, compte Tous
/paywall Écran d'abonnement RevenueCat Free users
/(modals)/review In-App Review prompt Streak 7j

8. Paiements, Pricing & RevenueCat

8.1 Structure des Offres

Offre Prix US Prix FR Prix BR Contenu
Gratuit Free Free Free Timer standard, 7j historique, pas de widget
Essai Premium 7 jours gratuits 7 jours gratuits 7 jours gratuits Accès complet, pas de CB requise si possible
Premium Mensuel $4.99/mois €4.99/mois R$9.99/mois Accès complet illimité
Premium Annuel $29.99/an €27.99/an R$59.99/an Tout Premium — économie 50% mise en avant

Note : Pricing localisé via RevenueCat Purchasing Power Parity (PPP). Adapter automatiquement les prix pour le Brésil, l'Inde, l'Indonésie et l'Europe de l'Est pour maximiser les conversions mondiales.

8.2 Configuration RevenueCat

  • Entitlements : "premium" (accès à toutes les features payantes)

  • Products : tabatago_monthly, tabatago_annual, tabatago_trial_7d

  • A/B Tests dès J+7 : tester $3.99 vs $4.99 vs $6.99 mensuel

  • A/B Tests paywall : liste vs comparaison de plans vs "best value" badge

  • Webhook RevenueCat → PostHog pour corréler revenus et comportement

9. Analytics & Instrumentation (PostHog)

9.1 Événements Critiques à Tracker

Événement Propriétés Objectif
onboarding_step_viewed step_number, step_name Identifier le drop-off
onboarding_demo_started duration_seconds Mesurer l'engagement Wow
onboarding_completed persona, goal, frequency Segmentation
paywall_viewed source, variant Funnel paiement
trial_started plan_selected Conversion essai
subscription_purchased plan, price, currency Revenue
session_started program_id, rounds, duration Engagement produit
session_completed rounds_done, streak_day Rétention
streak_milestone days_count Gamification KPIs
widget_added widget_type Stickiness
notification_tapped notification_type Rappels efficacité

9.2 Funnels à Monitorer

  • Funnel Acquisition : Impression App Store → Téléchargement → Onboarding Start → Onboarding Complete → Paywall View → Trial Start → Purchase

  • Funnel Rétention : J+1 / J+7 / J+30 ouverture de l'app après téléchargement

  • Funnel Engagement : Séance démarrée → Séance complétée → Streak maintenu

Règle d'or : Si impressions mais pas de téléchargements → Réparer screenshots/icône. Si téléchargements mais pas d'essais → Réparer onboarding. Si essais mais pas de paiements → Réparer paywall/pricing.

10. Localisation & Growth Hacking

10.1 Stratégie de Localisation (5 Langues)

Langue Marché cible Mots-clés spécifiques Priorité
Anglais (EN) US, UK, AU, CA tabata timer, hiit timer app 1 — Lancement
Français (FR) France, Belgique, Québec minuterie tabata, chrono hiit 1 — Lancement
Espagnol (ES) Espagne, Mexique, Argentine temporizador tabata, ejercicio hiit 2 — Semaine 2
Allemand (DE) Allemagne, Autriche, CH tabata timer app, intervall training 2 — Semaine 2
Portugais (PT-BR) Brésil timer tabata, treino hiit 3 — Mois 2

10.2 Éléments à Localiser

  • App content : tous les textes UI, onboarding, notifications, erreurs

  • App Store listing : titre, sous-titre, description courte, description longue

  • Screenshots : localisés avec texte natif (utiliser Fastlane Frameit)

  • Prix : PPP via RevenueCat (automatique par pays)

  • Mots-clés App Store : 100 caractères spécifiques par marché

Outil recommandé : i18next + expo-localization pour la gestion des traductions en développement.

11. App Store Optimization (ASO)

11.1 Fiche App Store (iOS — EN)

Champ Valeur optimisée
Nom de l'app (30 car.) TabataGo — HIIT Timer
Sous-titre (30 car.) Tabata & Interval Workout
Mots-clés (100 car.) tabata,hiit,timer,interval,workout,fitness,training,countdown,sport,exercise
Description (1ère ligne) The most motivating Tabata timer. 20 seconds of effort. Life-changing results.
Screenshots (10 max) Voir section 10.2
Preview video 15-30s montrant la minuterie en action + streak + widget

11.2 Plan des Screenshots (6 obligatoires)

# Contenu Message clé Background
1 Timer plein écran en action (20s) "Train smarter, not longer" Dark + orange
2 Écran d'onboarding moment Wow "Your first Tabata in 20 seconds" Gradient sombre
3 Widget iOS home screen "Train from anywhere — even your lock screen" iPhone mockup
4 Historique + Streak en feu "Build the habit. Keep the streak." Dark + vert
5 Bibliothèque de programmes "100+ ready-to-go programs" Gradient
6 Statistiques mensuelles "See your progress. Stay motivated." Fond clair

12. Plan de Lancement en 72h

12.1 Timeline de Développement (72 heures)

Phase Durée Livrables Responsable
Setup & Architecture H0 → H8 Expo project init, navigation, design system, RevenueCat config Dev Lead
Onboarding H8 → H20 6 écrans onboarding + mini-timer démo + animation Dev + Design
Core Timer H20 → H36 Minuterie plein écran, son, haptiques, background timer Dev
Streak + Historique H36 → H48 Système streak, storage, affichage historique, notifications Dev
Paywall + Analytics H48 → H58 RevenueCat paywall, PostHog events, A/B test config Dev
Polish & Testing H58 → H68 Bug fixes, dark/light mode, performance, edge cases Dev + QA
Submission H68 → H72 Screenshots, App Store listing (5 langues), soumission Apple PM + Dev

12.2 Stratégie de Validation Post-Lancement

Profiter du boost de visibilité des 3 premiers jours accordé par l'App Store aux nouvelles applications :

  1. Jour 1-3 : Monitoring organique — Analyser impressions, téléchargements, et premiers essais

  2. Jour 4-7 : Analyse funnel — Identifier le premier point de friction (onboarding? paywall?)

  3. Jour 8-14 : Première itération — Corriger le problème prioritaire et soumettre mise à jour OTA (Expo)

  4. Jour 15-30 : Activation publicité — Apple Search Ads seulement si CVR organique > 15%

  5. Jour 30+ : Scale — Augmenter budget pub sur les marchés qui convertissent le mieux

Règle absolue : Ne jamais dépenser en publicité avant d'avoir validé que le funnel organique convertit.

13. KPIs & Métriques de Succès

Métrique Semaine 1 Mois 1 Mois 3 Outil de mesure
Téléchargements 500+ 5 000+ 20 000+ App Store Connect
Taux conversion Impression→DL > 5% > 8% > 10% App Store Connect
Taux essai démarré > 25% > 30% > 35% RevenueCat + PostHog
Taux conversion essai→payant > 30% > 35% > 40% RevenueCat
Rétention J+7 > 30% > 35% > 40% PostHog
Rétention J+30 > 20% > 25% PostHog
MRR $2 000+ $8 000+ RevenueCat
Note App Store ≥ 4.5 ≥ 4.6 App Store Connect
Streak moyen (actifs) > 5 jours > 10 jours PostHog custom

14. Risques & Mitigations

Risque Probabilité Impact Mitigation
Refus App Store (guidelines) Moyen Élevé Respecter HIG Apple, tester paywall sur TestFlight, pas de dark patterns
Mauvais taux de conversion paywall Moyen Élevé A/B test RevenueCat dès J+7, 3 variantes de prix/layout
Précision du timer en background Faible Élevé expo-background-fetch + notification locale comme fallback
Faible rétention sans streaks Moyen Moyen Streak J+1 core feature, reminder push personnalisé par heure d'entraînement
Concurrence sur mots-clés EN Élevé Moyen Agressivité sur marchés FR/ES/DE dès J+14
Revue Apple lente (> 48h) Faible Faible Soumettre J-5 avant objectif lancement, utiliser Expo OTA pour hotfixes

15. Approbations & Versions

Rôle Nom Date Signature
Product Owner Février 2026
Tech Lead Février 2026
Design Lead Février 2026
Marketing Février 2026

Document créé le 15 février 2026 — TabataGo PRD v1.1