# TabataFit — UI Feature Brief > Generated for Google Stitch design handoff. > Covers all end-user screens, interactions, states, and navigation flows. --- ## App Overview **TabataFit** is a mobile fitness app ("Apple Fitness+ for Tabata") built with React Native / Expo. It delivers guided Tabata HIIT workouts with video, voice coaching, music, and Apple Watch heart-rate sync. ### Design System | Token | Value | Usage | |-------|-------|-------| | Background | `#000000` | Pure black base | | Surface | `#1C1C1E` | Cards, sheets | | Brand | `#FF6B35` | Flame orange — primary accent | | Rest | `#5AC8FA` | Ice blue — rest phases | | Success | `#30D158` | Energy green — completion | | Prep phase | `#FF9500` | Orange-yellow | | Work phase | `#FF6B35` | Flame orange | | Rest phase | `#5AC8FA` | Ice blue | | Complete phase | `#30D158` | Green | - Supports **dark and light mode** - Multi-language (i18n) - Haptic feedback throughout --- ## Navigation Structure ``` Root Stack ├── Onboarding (6-step flow) ├── (tabs) │ ├── Home — index │ ├── Explore — browse workouts │ ├── Activity — stats & history │ └── Profile — settings & account ├── workout/[id] — Workout detail (push) ├── program/[id] — Program detail (push) ├── collection/[id] — Collection detail (push) ├── player/[id] — Workout player (push, full-screen) ├── complete/[id] — Post-workout celebration (push) ├── paywall — Premium upsell (modal) ├── explore-filters — Filter sheet (form sheet modal) └── privacy — Privacy policy (push) ``` **Tab bar**: 4 tabs — Home, Explore, Activity, Profile. SF Symbol icons. Badge support. --- ## 1. Onboarding Flow A 6-screen linear funnel shown on first launch. Progress dots at top. Skip available on some steps. ### 1.1 Problem Screen - **Purpose**: Motivational hook about time constraints - **Elements**: Headline text, subtitle, illustration - **CTA**: Continue ### 1.2 Empathy Screen - **Purpose**: User selects fitness barriers to build rapport - **Elements**: Grid of 4 selectable cards — "No time", "Low motivation", "No knowledge", "No gym" - **Interaction**: Tap to select, max 2 selections, visual highlight on selected - **CTA**: Continue (enabled after 1+ selection) ### 1.3 Solution Screen - **Purpose**: Show Tabata's effectiveness - **Elements**: Animated comparison bar chart (Tabata vs traditional cardio calorie burn) - **CTA**: Continue ### 1.4 Wow Screen - **Purpose**: Reveal key app features - **Elements**: 4 feature cards with staggered entrance animations — Timer, Exercises, Voice Coaching, Progress Tracking - **CTA**: Continue ### 1.5 Personalization Screen - **Purpose**: Collect user preferences to personalize experience - **Inputs**: - Name (text input) - Fitness level: Beginner / Intermediate / Advanced (single select chips) - Goal: Weight Loss / Cardio / Strength / Wellness (single select chips) - Weekly frequency: 2x / 3x / 5x per week (single select chips) - **CTA**: Continue (enabled when all fields filled) ### 1.6 Paywall Screen (Onboarding variant) - **Purpose**: Premium conversion at end of onboarding - **Elements**: Premium features list, yearly/monthly plan toggle with real prices from RevenueCat - **CTAs**: Subscribe, Restore Purchases, Skip (close button) - **States**: Loading prices, purchase in progress, error --- ## 2. Home Tab Personalized dashboard and primary entry point. ### Elements - **Greeting header**: Time-based ("Good morning/afternoon/evening") + user's name + animated mascot - **Streak badge**: Current streak count with flame icon - **Quick stats row**: 3 stat pills — Current streak, This week (workouts), Total minutes - **Assessment card**: Feature-flagged (currently OFF) — fitness assessment prompt - **Program cards**: 3 horizontal cards (Upper Body, Lower Body, Full Body) - Each shows: icon, title, progress bar (% complete), status badge (Not Started / In Progress / Completed) - CTA per card: Start / Continue / Restart (depends on state) - **Switch program button**: Opens program selection ### Navigation - Tap program card → `program/[id]` - Tap "Start" on program → `player/[id]` (first workout) - Tap "Continue" → `player/[id]` (next incomplete workout) ### States - **New user**: 0 stats, no streak, programs at 0% - **Returning user**: Populated stats, active streak, program progress --- ## 3. Explore Tab Browse, search, and filter the full workout catalog. ### Elements - **Search bar**: Search by workout title, trainer name, exercise name, category. Real-time filtering. - **Featured collection**: Hero card at top with image, title, workout count. Tap → `collection/[id]` - **Trainer avatars**: Horizontal scroll of circular trainer photos. Tap to filter workouts by trainer. - **Collections carousel**: Horizontal scroll of collection cards. Tap → `collection/[id]` - **Recommended For You**: Horizontal workout card list, personalized based on workout history - **Featured workouts**: Grid of highlighted workouts - **All Workouts section**: - Category filter pills: All, Full Body, Upper Body, Lower Body, Core, Cardio - Filter button → opens `explore-filters` sheet - Active filter indicator + clear filters button - 2-column workout card grid ### Workout Card - Thumbnail image - Duration badge overlay - Title, trainer name, level indicator - Lock icon if premium-only and user is free tier ### Navigation - Tap workout card → `workout/[id]` - Tap collection → `collection/[id]` - Tap trainer avatar → filters workout list by that trainer - Tap filter button → `explore-filters` (form sheet modal) ### States - **Loading**: Skeleton placeholders for cards - **Error**: Error message with Retry button - **Empty search**: "No workouts found" message - **Filtered**: Active filter chips shown, clear all button --- ## 4. Activity Tab Workout history, statistics, and achievements. ### Elements - **Streak banner**: Current streak + longest streak (flame icons) - **Stats grid** (2x2): Each stat in a card with circular progress ring - Total workouts (ring fills toward goal) - Total minutes - Total calories - Best streak - **Weekly bar chart**: Sun–Sat, each bar filled if a workout was completed that day, current day highlighted - **Recent workouts list**: Last 5 workouts - Each row: workout title, relative time ("2h ago"), duration, calories - Tap → `workout/[id]` - **Achievements grid**: 4 achievement badges displayed - Types: workouts milestone, streak milestone, minutes milestone, calories milestone - States: locked (greyed out) / unlocked (colored with checkmark) ### States - **Empty**: No workouts yet — motivational message + "Start Your First Workout" CTA → `explore` - **Populated**: All sections visible with data --- ## 5. Profile Tab User settings, account management, and app info. ### Elements - **User header**: Avatar circle with initial, display name, plan label ("Free" or "TabataFit+") - **Stats row**: 3 inline stats — workouts count, streak, calories - **Upgrade CTA** (free users only): Gradient button → `paywall` #### Workout Settings Section - Haptic feedback toggle - Sound effects toggle - Voice coaching toggle #### Notifications Section - Daily reminders toggle - Reminder time display (when enabled) #### Personalization Section (premium only) - Sync status indicator #### About Section - Version number - Rate App → opens App Store rating prompt - Contact Us → opens email compose - FAQ → opens external web link - Privacy Policy → `privacy` screen #### Account Section (premium only) - Restore Purchases → triggers RevenueCat restore #### Danger Zone - Sign Out button - Data deletion: triggers confirmation modal ### Data Deletion Modal - Warning text explaining data loss - Cancel / Delete buttons - Delete is destructive (red) --- ## 6. Workout Detail Screen Pre-workout information screen. Reached by tapping any workout card. **Route**: `workout/[id]` ### Elements - **Header**: Thumbnail or video preview, back button, heart/save button (toggle) - **Title**: Workout name - **Trainer**: Trainer name (colored text) - **Metadata row**: Duration (minutes), Calories estimate, Level badge (Beginner/Intermediate/Advanced) - **Equipment list**: Icons + labels for required equipment (or "No equipment") - **Timing card**: Prep time, Work time, Rest time, Rounds — displayed in a structured card - **Exercise list**: Ordered list of exercises with individual durations - **Repeat rounds indicator**: Shows if rounds repeat the exercise sequence - **Music vibe label**: Genre/mood of the workout soundtrack ### CTAs - **Start Workout** → `player/[id]` (if unlocked or user is premium) - **Unlock with TabataFit+** → `paywall` (if locked and user is free tier) ### Header Actions - **Back**: Navigate back - **Save/Unsave**: Heart icon toggle — saves workout to favorites ### States - **Loading**: Skeleton layout - **Unlocked**: Full detail visible, "Start Workout" CTA - **Locked**: Full detail visible but "Unlock with TabataFit+" CTA replaces start button --- ## 7. Program Detail Screen Multi-week training program overview with per-week workout breakdown. **Route**: `program/[id]` ### Elements - **Header**: Program icon, title, subtitle (e.g., "4 weeks · 12 workouts") - **Description**: Program summary text - **Stats card**: 3 stats — Weeks, Workouts, Total Minutes - **Tags**: Equipment required (e.g., Dumbbells, Mat) + Equipment optional + Focus areas (e.g., Arms, Core) - **Progress bar** (if started): Percentage complete with label - **Training plan**: Expandable week sections - Each week shows its workouts in order - Workout rows show: title, duration, completion checkmark (if done) - Current week has a "Current" badge - Future weeks may show lock icons (progressive unlock) ### CTAs - **Start Program** (not started) → `player/[id]` (first workout) - **Continue Training** (in progress) → `player/[id]` (next incomplete workout) - **Restart** (completed) → resets progress, starts from week 1 ### States - **Not Started**: 0% progress, all weeks shown, "Start Program" CTA - **In Progress**: Progress bar filled, completed workouts checked, "Continue Training" CTA - **Completed**: 100% progress, all checked, "Restart" CTA --- ## 8. Collection Detail Screen A curated group of workouts. **Route**: `collection/[id]` ### Elements - **Header**: Collection title, description, workout count - **Workout list**: Vertical list of workout cards in the collection - Each card: thumbnail, title, trainer, duration, level - Lock icon for premium-gated workouts ### Navigation - Tap workout → `workout/[id]` - Back button → previous screen --- ## 9. Player Screen Full-screen workout execution with timer, video, audio, and Watch sync. **Route**: `player/[id]` ### Layout - **Full-screen dark mode** — no tab bar, no status bar chrome - **Background**: Workout video (HLS streaming) or gradient fallback - **Phase-colored tint**: Background overlay changes color per phase (prep=orange, work=flame, rest=blue, complete=green) ### Timer Section - **Timer ring**: Large circular progress indicator, fills as phase progresses - **Phase label**: PREP / WORK / REST / COMPLETE (color-coded) - **Countdown**: Large MM:SS timer (uses tabular-nums for alignment) - **Round indicator**: "Round 3 of 8" text ### Exercise Info - **Current exercise name**: Large text - **Next exercise preview**: Smaller text ("Up next: Burpees") - **Coach encouragement**: Motivational text overlays (e.g., "Keep going!", "Almost there!") ### Controls - **Start**: Begins the workout (shown before first start) - **Pause / Resume**: Toggle button during workout - **Stop**: Ends workout early (confirmation prompt) - **Skip**: Skip to next phase ### Stats Overlay - **Calories**: Running calorie count - **Heart rate**: BPM from Apple Watch (if connected) - **Rounds**: Current / total ### Burn Bar - Horizontal bar comparing user's current calorie burn vs. average for this workout - Updates in real-time ### Now Playing Pill - Shows current music track name - Skip track button ### Audio & Haptics - **Sound effects**: Phase start chime, 3-2-1 countdown beeps, workout complete fanfare - **Haptic feedback**: Phase transitions, countdown ticks, button presses - **Voice coaching**: Audio cues for exercises and encouragement - **Screen stays awake** (useKeepAwake) ### Apple Watch Integration - Sends: workout state (phase, timer, exercise) - Receives: play/pause, skip, stop commands, heart rate data ### Completion State - Timer ring shows 100% - Phase label: COMPLETE - Summary: Rounds completed, calories burned, total minutes - **Done** CTA → `complete/[id]` ### States - **Ready**: Before starting — shows workout info, Start CTA - **Active**: Timer running, video playing, stats updating - **Paused**: Timer frozen, controls show Resume - **Complete**: Summary shown, Done CTA --- ## 10. Workout Complete Screen Post-workout celebration and next steps. **Route**: `complete/[id]` ### Elements - **Celebration animation**: Concentric emoji rings spinning (fire, muscle, lightning emojis) - **Stats grid**: 3 stats — Calories, Minutes, 100% completion - **Burn bar result**: Percentile comparison ("You burned more than 73% of users") - **Streak display**: Current streak count + subtitle ("Keep it going!") - **Share button**: Opens native share sheet with workout summary - **Recommended next workouts**: 3 horizontal workout cards - Tap → `workout/[id]` - **Back to Home** CTA → navigates to Home tab ### Sync Consent Modal - Appears after first workout for premium users - Prompts to enable cross-device data sync - Accept / Decline buttons --- ## 11. Paywall Screen Premium subscription purchase flow. **Route**: `paywall` (presented as modal) ### Elements - **Header**: "TabataFit+" branding - **Features grid**: 6 premium feature cards with icons - Music during workouts - Unlimited workouts - Detailed stats - Calorie tracking - Smart reminders - No ads - **Plan selection**: Two radio-style options - Yearly: Price/year + "Save 50%" badge (highlighted as best value) - Monthly: Price/month - Prices fetched live from RevenueCat - **Subscribe CTA**: Gradient button, shows selected plan price - **Restore purchases**: Text link below CTA - **Terms**: Privacy policy + terms of service links - **Close button**: X in top corner to dismiss ### States - **Loading**: Skeleton while fetching prices from RevenueCat - **Ready**: Plans displayed with real prices - **Purchasing**: Loading spinner on CTA, inputs disabled - **Error**: Error message with retry - **Success**: Dismisses modal, unlocks premium features --- ## 12. Explore Filters Sheet Filter modal for the Explore tab workout grid. **Route**: `explore-filters` (form sheet modal with grabber) ### Elements - **Level filter chips**: All / Beginner / Intermediate / Advanced (single select) - **Equipment filter chips**: All / None / Dumbbells / Band / Mat (dynamic from data, single select) - **Apply**: Dismiss sheet, filters persist in shared store - **Clear**: Reset all filters to "All" --- ## 13. Privacy Policy Screen Static content screen. **Route**: `privacy` ### Elements - Privacy policy text content - Back navigation --- ## Cross-Cutting Features ### Premium Gating - Free users see all workouts but some are locked (lock icon overlay) - Tapping a locked workout's "Start" CTA redirects to `paywall` - Premium users have full access to all workouts, stats sync, and personalization ### Internationalization (i18n) - All user-facing strings are translated via i18n system - Multi-language support throughout ### Haptic Feedback - Configurable via Profile settings toggle - Triggered on: button presses, phase changes, countdown ticks, achievements ### Analytics (PostHog) - Events tracked across all screens: screen views, button taps, workout starts/completions, purchases, onboarding steps ### Dark / Light Mode - Full theme support — colors adapt to system appearance - Player screen is always dark mode regardless of system setting ### Loading & Error States - Skeleton placeholders during data fetches - Error states with descriptive message + Retry button - Empty states with motivational messaging + CTAs ### Animations - Onboarding: staggered card reveals, animated charts - Home: mascot animation - Player: timer ring fill, phase color transitions - Complete: spinning emoji celebration rings - Navigation: standard iOS push/pop + modal presentations