Files
tabatago/CLAUDE.md
Millian Lamiaux 791f432334 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.
2026-04-17 18:56:24 +02:00

318 lines
10 KiB
Markdown

# 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:start -->
# 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: "<error or symptom>"})` — find execution flows related to the issue
2. `gitnexus_context({name: "<suspect function>"})` — 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` |
<!-- gitnexus:end -->