f11eb6b9ae4878ac9abd3c5ffed1061e5be04115
Program workouts built by buildProgramWorkouts() were missing level, rounds, calories, and other Workout-interface fields, causing workout.level.toLowerCase() to crash on the detail, collection, and category screens. Added derived defaults (level from week number, category from program id, standard Tabata timings) and defensive fallbacks with ?? 'Beginner' at all call sites. Also fixed a potential division-by-zero when exercises array is empty.
TabataFit
Apple Fitness+ for Tabata — The Premium HIIT Experience
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.
Features
- 🎬 Video-led workouts — HD video demonstrations by professional trainers
- ⏱️ Smart timer — Tabata timer with work/rest phases
- 🔥 Burn Bar — Compare your calories with the community
- 📊 Activity tracking — Streaks, stats, and trends
- 🎵 Music sync — Curated playlists for each workout
- ⌚ Apple Watch — Heart rate and activity rings
Tech Stack
- Framework: Expo SDK 52
- Navigation: Expo Router v3
- State: Zustand
- Video: expo-av (HLS streaming)
- Payments: RevenueCat
- Analytics: PostHog
Getting Started
# Install dependencies
npm install
# Start development server
npx expo start
# Run on device (scan QR with Expo Go)
Documentation
| Document | Description |
|---|---|
| PRD v2.0 | Product Requirements |
| PDD v2.0 | Product Design |
| BDSD v2.0 | Brand Design |
Project Structure
src/
features/
home/ # Home tab
workouts/ # Workouts browser
player/ # Video player + timer
activity/ # Stats & history
browse/ # Filters & trainers
profile/ # User settings
shared/
components/ # Reusable UI
hooks/ # Custom hooks
constants/ # Design tokens
app/ # Expo Router routes
Testing
# Unit tests with coverage
npm run test:coverage
# Component render tests
npm run test:render
# All unit + render tests
npm test && npm run test:render
# Maestro E2E (requires Expo dev server + simulator)
npm run test:maestro
# Admin-web tests
cd admin-web && npm test # Unit tests
cd admin-web && npm run test:e2e # Playwright E2E
Test Coverage
| Layer | Target | Tests |
|---|---|---|
| Stores | 80%+ | playerStore, activityStore, userStore, programStore |
| Services | 80%+ | analytics, music, purchases, sync |
| Hooks | 70%+ | useTimer, useHaptics, useAudio, usePurchases, useMusicPlayer, useNotifications, useSupabaseData |
| Components | 50%+ | StyledText, VideoPlayer, WorkoutCard, GlassCard, CollectionCard, modals, Skeleton |
| Data | 80%+ | achievements, collections, programs, trainers, workouts |
E2E Tests
- Mobile (Maestro): Onboarding, tab navigation, program browse, workout player, activity, profile/settings
- Admin Web (Playwright): Auth, navigation, workouts CRUD, trainers, collections
License
Proprietary — All rights reserved.
Built with ❤️ for HIIT lovers
Description
Languages
TypeScript
94.5%
JavaScript
3.3%
PLpgSQL
1.7%
CSS
0.3%
Shell
0.2%