# TabataFit — CLAUDE.md > "Apple Fitness+ for Tabata" — Lis ce fichier EN ENTIER avant chaque session. --- ## 🎯 Vision **TabataFit est l'Apple Fitness+ du Tabata.** Une expérience premium, video-first, guidée par des coachs, qui transforme 4 minutes d'exercice en une expérience de fitness immersive. *"Workouts that work. Beautifully."* --- ## 📱 Produit ### Positionnement - **Analogy** : "If Apple made a Tabata app" - **Focus** : Tabata/HIIT uniquement (pas multi-activité) - **Durée** : 4-20 min (format Tabata) - **Différenciateur** : Video-led + Coaching audio + Timer intelligent ### Stack Technique | Domaine | Solution | |---------|----------| | Framework | Expo SDK 52 (managed) | | Navigation | Expo Router v3 | | State | Zustand + AsyncStorage | | Video | expo-av → HLS streaming | | Audio | expo-av (coaching + music) | | Animations | React Native Animated | | Payments | RevenueCat | | Analytics | PostHog | --- ## 📚 Documentation | Document | Description | |----------|-------------| | `TabataFit_PRD_v2.0.md` | Product Requirements — features, roadmap | | `TabataFit_PDD_v2.0.md` | Product Design — screens, UX, flows | | `TabataFit_BDSD_v2.0.md` | Brand Design — colors, typography, style | **TOUJOURS lire ces documents avant de développer.** --- ## 🏗️ Architecture ``` src/ features/ home/ # Home tab - For You, Continue, Collections workouts/ # Workouts tab - Categories, workout list player/ # Active workout - Video, timer, stats activity/ # Activity tab - Stats, trends, calendar browse/ # Browse tab - Filters, trainers profile/ # Profile tab - Settings, achievements shared/ components/ # Button, Card, VideoPlayer, etc. hooks/ # useTimer, useVideo, useHaptics utils/ # formatTime, etc. constants/ # colors, typography, spacing app/ # Expo Router routes (tabs)/ index.tsx # Home workouts.tsx # Workouts activity.tsx # Activity browse.tsx # Browse profile.tsx # Profile player/ [id].tsx # Workout player ``` --- ## 🎨 Design System ### Couleurs Principales ```typescript BACKGROUND: '#000000' // Pure black SURFACE: '#1C1C1E' // Charcoal BRAND: '#FF6B35' // Flame orange REST: '#5AC8FA' // Ice blue SUCCESS: '#30D158' // Energy green ``` ### Phase Colors (Critique) ```typescript PREP: '#FF9500' // Orange-yellow WORK: '#FF6B35' // Flame orange REST: '#5AC8FA' // Ice blue COMPLETE: '#30D158' // Green ``` ### Typography - **Font**: Inter (Google Fonts) - **Timer**: 96px, Black weight - **Titles**: 34px/28px/22px - **Body**: 17px --- ## 📋 Priorités Développement ### Phase 1 — MVP (Semaines 1-4) 1. ✅ Design system setup 2. 🔲 Home tab (Featured, Continue Watching) 3. 🔲 Workouts tab (Categories) 4. 🔲 Pre-workout detail screen 5. 🔲 Video player avec timer overlay 6. 🔲 Workout complete screen 7. 🔲 20 workouts (mock data) ### Phase 2 — Core (Semaines 5-8) 1. 🔲 Activity tab (Stats, Calendar) 2. 🔲 Browse tab (Filters, Trainers) 3. 🔲 Profile tab (Settings) 4. 🔲 Apple Watch integration 5. 🔲 50 workouts total ### Phase 3 — Premium (Semaines 9-12) 1. 🔲 Offline downloads 2. 🔲 Burn Bar 3. 🔲 Subscription system 4. 🔲 Achievements 5. 🔲 100+ workouts --- ## 🧪 Test Environment **Expo Go sur device physique** — pas de simulateur. 1. `npx expo start` 2. Scanner le QR code avec Expo Go 3. Même réseau Wi-Fi requis --- ## 📝 Règles de Code 1. **Un fichier = une responsabilité** 2. **Toute logique métier dans les hooks** 3. **Components = JSX uniquement** 4. **TypeScript strict** — pas de `any` 5. **Styles avec StyleSheet.create()** 6. **Dark mode only** — pas de light mode --- ## 🎬 Contenu Video ### Format Workout Video - **Resolution**: 1080p minimum - **Duration**: Match workout duration - **Structure**: - Intro (5s): Trainer greeting - Prep (3s): 3-2-1 countdown - Work (20s): Exercise demonstration - Rest (10s): Recovery, next exercise preview - Repeat for each round - Outro (5s): Celebration, trainer sign-off ### Trainers (5 au launch) 1. **Emma** — Energy queen, beginner-friendly 2. **Jake** — Strength focus 3. **Mia** — Form perfectionist 4. **Alex** — Cardio beast 5. **Sofia** — Chill but effective --- ## 💰 Monetization ### Free Tier - 3 workouts free forever - Basic stats - Ads between workouts ### Premium ($6.99/mo or $49.99/yr) - Unlimited workouts - Offline downloads - Apple Watch integration - Advanced stats - No ads - Family Sharing --- ## 🚀 Commands Use `rtk` (token-optimized CLI proxy) for all non-interactive commands. ```bash npx expo start # Development (interactive, no rtk) npx expo start --tunnel # If network issues npx expo start --clear # Clear cache rtk tsc --noEmit # Type check (grouped errors) eas build --profile dev # Dev build ``` --- ## 📖 Comment Utiliser les Skills Voir `.claude/skills/` pour les guides spécialisés. --- *Document updated: February 18, 2026* *Version: 2.0* *Project: TabataFit — Apple Fitness+ for Tabata* # GitNexus — Code Intelligence This project is indexed by GitNexus as **tabatago** (1839 symbols, 3401 relationships, 52 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely. > If any GitNexus tool warns the index is stale, run `npx gitnexus analyze` in terminal first. ## Always Do - **MUST run impact analysis before editing any symbol.** Before modifying a function, class, or method, run `gitnexus_impact({target: "symbolName", direction: "upstream"})` and report the blast radius (direct callers, affected processes, risk level) to the user. - **MUST run `gitnexus_detect_changes()` before committing** to verify your changes only affect expected symbols and execution flows. - **MUST warn the user** if impact analysis returns HIGH or CRITICAL risk before proceeding with edits. - When exploring unfamiliar code, use `gitnexus_query({query: "concept"})` to find execution flows instead of grepping. It returns process-grouped results ranked by relevance. - When you need full context on a specific symbol — callers, callees, which execution flows it participates in — use `gitnexus_context({name: "symbolName"})`. ## When Debugging 1. `gitnexus_query({query: ""})` — find execution flows related to the issue 2. `gitnexus_context({name: ""})` — see all callers, callees, and process participation 3. `READ gitnexus://repo/tabatago/process/{processName}` — trace the full execution flow step by step 4. For regressions: `gitnexus_detect_changes({scope: "compare", base_ref: "main"})` — see what your branch changed ## When Refactoring - **Renaming**: MUST use `gitnexus_rename({symbol_name: "old", new_name: "new", dry_run: true})` first. Review the preview — graph edits are safe, text_search edits need manual review. Then run with `dry_run: false`. - **Extracting/Splitting**: MUST run `gitnexus_context({name: "target"})` to see all incoming/outgoing refs, then `gitnexus_impact({target: "target", direction: "upstream"})` to find all external callers before moving code. - After any refactor: run `gitnexus_detect_changes({scope: "all"})` to verify only expected files changed. ## Never Do - NEVER edit a function, class, or method without first running `gitnexus_impact` on it. - NEVER ignore HIGH or CRITICAL risk warnings from impact analysis. - NEVER rename symbols with find-and-replace — use `gitnexus_rename` which understands the call graph. - NEVER commit changes without running `gitnexus_detect_changes()` to check affected scope. ## Tools Quick Reference | Tool | When to use | Command | |------|-------------|---------| | `query` | Find code by concept | `gitnexus_query({query: "auth validation"})` | | `context` | 360-degree view of one symbol | `gitnexus_context({name: "validateUser"})` | | `impact` | Blast radius before editing | `gitnexus_impact({target: "X", direction: "upstream"})` | | `detect_changes` | Pre-commit scope check | `gitnexus_detect_changes({scope: "staged"})` | | `rename` | Safe multi-file rename | `gitnexus_rename({symbol_name: "old", new_name: "new", dry_run: true})` | | `cypher` | Custom graph queries | `gitnexus_cypher({query: "MATCH ..."})` | ## Impact Risk Levels | Depth | Meaning | Action | |-------|---------|--------| | d=1 | WILL BREAK — direct callers/importers | MUST update these | | d=2 | LIKELY AFFECTED — indirect deps | Should test | | d=3 | MAY NEED TESTING — transitive | Test if critical path | ## Resources | Resource | Use for | |----------|---------| | `gitnexus://repo/tabatago/context` | Codebase overview, check index freshness | | `gitnexus://repo/tabatago/clusters` | All functional areas | | `gitnexus://repo/tabatago/processes` | All execution flows | | `gitnexus://repo/tabatago/process/{name}` | Step-by-step execution trace | ## Self-Check Before Finishing Before completing any code modification task, verify: 1. `gitnexus_impact` was run for all modified symbols 2. No HIGH/CRITICAL risk warnings were ignored 3. `gitnexus_detect_changes()` confirms changes match expected scope 4. All d=1 (WILL BREAK) dependents were updated ## Keeping the Index Fresh After committing code changes, the GitNexus index becomes stale. Re-run analyze to update it: ```bash npx gitnexus analyze ``` If the index previously included embeddings, preserve them by adding `--embeddings`: ```bash npx gitnexus analyze --embeddings ``` To check whether embeddings exist, inspect `.gitnexus/meta.json` — the `stats.embeddings` field shows the count (0 means no embeddings). **Running analyze without `--embeddings` will delete any previously generated embeddings.** > Claude Code users: A PostToolUse hook handles this automatically after `git commit` and `git merge`. ## CLI | Task | Read this skill file | |------|---------------------| | Understand architecture / "How does X work?" | `.claude/skills/gitnexus/gitnexus-exploring/SKILL.md` | | Blast radius / "What breaks if I change X?" | `.claude/skills/gitnexus/gitnexus-impact-analysis/SKILL.md` | | Trace bugs / "Why is X failing?" | `.claude/skills/gitnexus/gitnexus-debugging/SKILL.md` | | Rename / extract / split / refactor | `.claude/skills/gitnexus/gitnexus-refactoring/SKILL.md` | | Tools, resources, schema reference | `.claude/skills/gitnexus/gitnexus-guide/SKILL.md` | | Index, status, clean, wiki CLI commands | `.claude/skills/gitnexus/gitnexus-cli/SKILL.md` |