G GymStack

Section ▶

Workout Player UX Specification

Reference: Cult.fit workout player (April 2026 screenshots)


Design Philosophy

The workout player is the single most-used screen in the member app. A gym member opens it every session (3-5x/week), stares at it between sets, and judges the entire app by how this screen feels. It must be:

  • Immersive — full-screen, dark, distraction-free
  • Glanceable — reps, weight, and set count readable at arm’s length (phone on gym bench)
  • Minimal taps — log a set in 1 tap, skip to next exercise in 1 swipe
  • Content-rich — show HOW to do the exercise (video/animation), not just what to do

Screen 1: Workout Plan Overview

Purpose: Show today’s workout plan, track weekly progress, browse exercises.

Layout

┌─────────────────────────────────────┐
│ ← My Workout Plan              ⚙   │
│ Gain Muscle • Advanced • 6 Days     │
├─────────────────────────────────────┤
│ 🟢  🟢  🟢  ○  ○  ○  ●            │
│ 26  27  28  29  30  31  1           │
│ THU FRI SAT SUN MON TUE WED        │
├─────────────────────────────────────┤
│                                     │
│ Legs                    COMPLETED   │
│                                     │
│ Warm Up         13 MINS    +  ∨    │
│ ─────────────────────────────────── │
│ Workout         40 MINS    +  ∧    │
│                                     │
│ SUPERSET: Follow sequence           │
│                                     │
│ ┌─────┐ Barbell Deadlift        ⋮  │
│ │ img │ 12×50 • 12×80 • 12×110     │
│ └─────┘                             │
│                                     │
│ ┌─────┐ Barbell Glute Bridge    ⋮  │
│ │ img │ 12×50 • 12×70 • 12×80      │
│ └─────┘                             │
│                                     │
│ ┌─────┐ Leg Press               ⋮  │
│ │ img │ 12×150 • 10×210 • ...      │
│ └─────┘                             │
│                                     │
├─────────────────────────────────────┤
│    REDO         │    VIEW REPORT    │
└─────────────────────────────────────┘

Key Design Details

ElementSpec
BackgroundPure black (#000000) or near-black (#0A0A0F)
Calendar stripHorizontal scroll, 7 days visible. Green dot = completed. Current day = bold underline. Dimmed = rest day.
Workout titleBold, large (24-28sp), left-aligned. “Legs”, “Push”, “Pull”, etc.
Completion badgePill shape, green background (#00C853), white text, “COMPLETED”
Section headers”Warm Up” / “Workout” — collapsible with duration and + button to add exercise
Superset labelItalic, accent color (green/ember), indicates exercises to be done in sequence
Exercise cardThumbnail (80×80dp, rounded 8dp) + exercise name (16sp, bold) + set summary (14sp, subdued). Three-dot menu for options.
Set summary”12 Reps x 50 Kg • 12 Reps x 80 Kg • 12 Reps x 110 Kg” — comma/bullet separated, light gray
Bottom barTwo buttons: REDO (filled dark gray) and VIEW REPORT (outlined, accent color)

Interactions

  • Tap exercise card → Opens Exercise Active View (Screen 2)
  • Long press exercise card → Reorder (drag handle appears)
  • Three-dot menu → Replace exercise, Remove, Add note, View history
  • Swipe calendar → Navigate to other days
  • Tap green dot → View that day’s completed workout
  • Tap + on section → Add exercise from library
  • Pull to refresh → Sync latest plan from server

Screen 2: Exercise Active View (The Player)

Purpose: Full-screen exercise player. Shows demo video/animation with overlay controls. This is where the member spends most time.

Layout

┌─────────────────────────────────────┐
│ ←                                   │
│                                     │
│           SET 1 OF 3                │
│       Barbell Deadlift              │
│                                     │
│                                     │
│     ┌───────────────────────┐       │
│     │                       │       │
│     │    VIDEO / ANIMATION  │       │
│     │    (full-screen       │       │
│     │     background,       │       │
│     │     looping)          │       │
│     │                       │       │
│     │                       │       │
│     └───────────────────────┘       │
│                                     │
│         12  ×  50                   │
│        REPS    KG                   │
│                                     │
│     (✏)     (↕)     (▶)            │
│     Log    Replace  Tutorial        │
│                                     │
├─────────────────────────────────────┤
│ ┌───┐  Next Up                  ⏭  │
│ │img│  Barbell Glute Bridge         │
│ └───┘                               │
└─────────────────────────────────────┘

Key Design Details

ElementSpec
BackgroundExercise video/GIF playing full-screen, slightly dimmed (overlay with 20% black gradient at top and bottom for text readability)
Set counter”SET 1 OF 3” — small caps, accent color (green #00C853), 14sp, centered
Exercise nameLarge (28-32sp), bold, white, centered, drop shadow for readability over video
Reps × WeightHERO element. Massive font (64-72sp), bold, white. “12 × 50” with “REPS” and “KG” labels below (12sp, gray)
Action buttonsThree circular buttons (56dp diameter), frosted glass effect (backdrop-blur, 30% white bg). Icon + label below.
Log buttonPencil icon → Opens set logging sheet (weight, reps, RPE)
Replace buttonSwap icon → Opens exercise search/filter to swap this exercise
Tutorial buttonCamera/video icon → Opens 3D tutorial view or detailed video
Next Up barBottom card, dark gray (#1A1A24), shows thumbnail + “Next Up” label + exercise name + skip (⏭) button
Back buttonSimple ← arrow, top-left, semi-transparent

Gestures

GestureAction
Tap anywhere on videoToggle play/pause (subtle pause icon flashes)
Swipe leftSkip to next exercise
Swipe rightGo to previous exercise
Swipe up on “Next Up” barExpand to see full exercise queue
Tap reps/weightEdit inline (number picker wheel)
Double-tap reps+1 rep
Double-tap weight+2.5 kg
Long press videoToggle slow motion (0.5x)

Set Completion Flow

1. Member finishes a set
2. Taps "Log" button
3. Bottom sheet slides up:
   ┌─────────────────────────────────┐
   │ Set 1 of 3                      │
   │                                 │
   │  Weight: [  50  ] kg    ±2.5    │
   │  Reps:   [  12  ]       ±1     │
   │  RPE:    ○○○○○○●○○○  (7/10)    │
   │                                 │
   │  [  LOG SET  ] (green, full-w)  │
   │                                 │
   │  Rest Timer: 01:30 ▶            │
   └─────────────────────────────────┘
4. Tap "LOG SET" → set logged, rest timer auto-starts
5. Rest timer counts down with subtle animation
6. When timer ends, vibrate + show "SET 2 OF 3" with updated weight/reps
7. After all 3 sets logged → auto-advance to next exercise

Screen 3: Muscle Map Overlay

Purpose: Show which muscles are being targeted by the current exercise. Educational + engaging.

Layout

Same as Exercise Active View (Screen 2), but with an anatomical overlay:

┌─────────────────────────────────────┐
│                                     │
│           SET 1 OF 3                │
│       Barbell Deadlift              │
│                                     │
│     ┌───────────────────────┐       │
│     │                       │       │
│     │  VIDEO plays behind   │       │
│     │                       │       │
│     │  ╔═══════════╗        │       │
│     │  ║ ANATOMY   ║        │       │
│     │  ║ OVERLAY   ║        │       │
│     │  ║           ║        │       │
│     │  ║ Glutes ██ ║  ← cyan│       │
│     │  ║ Hams   ██ ║  ← cyan│       │
│     │  ║           ║        │       │
│     │  ╚═══════════╝        │       │
│     │                       │       │
│     └───────────────────────┘       │
│                                     │
│         12  ×  50                   │
│        REPS    KG                   │
└─────────────────────────────────────┘

How to Build This

Approach: SVG-based muscle map with programmatic highlighting

  1. Create/source two SVG body diagrams: Front view + Back view (posterior)
  2. Each muscle group is a separate SVG path with an ID: #trapezius, #deltoid-anterior, #biceps, #quadriceps, #glutes, #hamstrings, etc.
  3. Exercise metadata includes target muscles: { primary: ["glutes", "hamstrings"], secondary: ["quadriceps", "lower-back"] }
  4. Rendering: Primary muscles = cyan (#00E5FF) at 80% opacity. Secondary muscles = cyan at 40% opacity.
  5. Overlay mode: The SVG anatomy figure is rendered semi-transparent (50% opacity) over the exercise video. It aligns to the performer’s body position.

Content source for SVG muscle maps:

  • MuscleWiki approach: Create custom SVG body outlines with ~20 muscle group regions
  • Free anatomy SVGs: Available from medical/anatomy open source projects (e.g., OpenStax Anatomy, Wikimedia Commons anatomy diagrams)
  • Flutter package: flutter_svg renders SVG natively. Build a MuscleMapWidget that accepts a list of target muscles and highlights them

Data model:

{
  "exercise_id": "barbell-deadlift",
  "name": "Barbell Deadlift",
  "muscles": {
    "primary": ["glutes", "hamstrings", "erector-spinae"],
    "secondary": ["quadriceps", "trapezius", "forearms"]
  },
  "view": "posterior"  // which body view to show
}

Toggle: User can tap a “Muscles” button to toggle the overlay on/off. It animates in with a fade (300ms).


Screen 4: 3D Tutorial Animation

Purpose: Cinematic 3D animation showing perfect exercise form from multiple angles. The “wow” feature.

What Cult.fit Does

  • Pre-rendered 3D character animations for each exercise
  • Cinematic gym environment with dramatic lighting
  • Character performs the full range of motion
  • Camera orbits around the character
  • This is essentially a small 3D movie clip per exercise

Cost Reality

Cult.fit likely invested Rs 50L-1Cr+ in producing their 3D exercise library (1,200+ exercises). Each animation requires:

  • 3D character rigging
  • Motion capture or manual animation
  • Environment design
  • Rendering
  • Estimated cost: Rs 5,000-15,000 per exercise animation at Indian studio rates

This is NOT an MVP feature. It’s a Phase 3 differentiator.

Phased Content Strategy

Phase 1 (MVP): GIF-Based Exercise Demos

Source: ExerciseDB API (https://exercisedb.io)

  • 1,300+ exercises with high-quality GIF animations
  • Real humans performing exercises (not 3D)
  • Searchable by body part, target muscle, equipment
  • API access via RapidAPI (free tier: 100 req/day)
  • GIF format = auto-looping, no play controls needed
  • License: Check ExerciseDB terms for commercial use

Alternative: Wger Exercise Database

  • Open source (AGPL-3.0)
  • 400+ exercises with descriptions
  • Muscle group metadata
  • Some images (CC-BY-SA)
  • Self-hostable API

How it looks in the app:

  • Instead of a video background, show the GIF looping full-screen
  • Same overlay UI (set counter, reps, weight, action buttons)
  • GIF auto-plays, no buffering, works offline (downloaded during plan sync)
  • Slightly lower production value than Cult.fit’s videos, but functional and clean

Download strategy:

  • When a workout plan is assigned to a member, pre-download all exercise GIFs
  • Store in local app cache (Hive/Isar)
  • Total size per workout: ~20-50MB (GIFs are small, ~200-500KB each)
  • Lazy-load on first view, then cached permanently

Phase 2: Recorded Video Demos

Create original content at Pro Fitness:

  • Film Shubham (head trainer) performing 200-300 key exercises
  • Equipment needed: smartphone + ring light + tripod (Rs 5,000 total)
  • Film at Pro Fitness gym (authentic setting, your own branding)
  • 15-30 second clips per exercise, 2 angles (front + side)
  • Edit with CapCut/DaVinci Resolve (free)
  • Upload to Cloudflare R2, serve via CDN
  • Estimated time: 3-4 full shooting days
  • This content is YOUR moat — original, branded, authentic

Video specs:

  • Resolution: 1080×1920 (vertical, matches phone)
  • Format: MP4 (H.264) for playback, WebM for web
  • Duration: 15-30 seconds, seamless loop point
  • File size: 2-5MB per video
  • Background: clean gym setting, good lighting, no distracting elements

Phase 3: 3D Animations + Muscle Overlays

Options for 3D content:

  1. Mixamo (Adobe) — Free 3D character animations

    • Provides pre-rigged 3D characters
    • Has some exercise/movement animations
    • Can be rendered as video clips using Blender (free)
    • License: free for commercial use
    • Limitation: limited exercise-specific animations (more suited for generic movements)
  2. Commission from Indian 3D studios

    • Studios in Bangalore, Hyderabad, Mumbai offer animation services
    • Budget: Rs 3,000-10,000 per exercise (negotiable for bulk)
    • Start with top 50 most-used exercises
    • Total: Rs 1.5L-5L for 50 exercises
    • Timeline: 2-3 months
  3. AI-Generated Exercise Animations (emerging)

    • Tools like Move.ai, Rokoko, DeepMotion can generate 3D animations from 2D video
    • Film Shubham doing exercises (Phase 2 videos) → convert to 3D animation
    • Quality is improving rapidly; by Phase 3 timeline (Month 10-18), this may be viable
    • Cost: software subscription ($50-200/month)
  4. Partner with a content provider

    • Les Mills, ACE, NASM have exercise content libraries
    • Licensing deals are possible but expensive
    • Better suited for post-Series A when budget allows

Screen 5: Rest Timer

Purpose: Between sets, show a countdown timer with motivational elements.

Layout

┌─────────────────────────────────────┐
│                                     │
│            REST                     │
│                                     │
│          ╔═══════╗                  │
│          ║       ║                  │
│          ║ 1:24  ║  ← countdown    │
│          ║       ║                  │
│          ╚═══════╝                  │
│     ───────────○──────────          │
│     (circular progress ring)        │
│                                     │
│     Set 1 ✓  Set 2 ✓  Set 3 ○      │
│                                     │
│         +30s        SKIP            │
│                                     │
├─────────────────────────────────────┤
│ ┌───┐  Next Up                  ⏭  │
│ │img│  Barbell Glute Bridge         │
│ └───┘                               │
└─────────────────────────────────────┘

Details

ElementSpec
Timer displayLarge (72sp), monospace font, white on black
Progress ringCircular, accent color (green), animates smoothly
Set progressDots/checkmarks showing completed sets
+30s buttonExtends rest time
SKIP buttonSkips rest, goes to next set immediately
VibrationHaptic feedback when timer hits 0
SoundOptional subtle chime at 0 (user can disable)
BackgroundCan show fun stats: “You’ve lifted 1,200 kg today!” or tips: “Keep your core tight on the next set”

Content Sourcing: Summary Decision

PhaseContent TypeSourceCostQuality
Phase 1 (MVP)GIF animationsExerciseDB API (1,300+ exercises)Free-$30/mo (API plan)Good (real humans, clear form)
Phase 1 (MVP)Muscle mapsCustom SVG (20 muscle groups, front+back)Rs 10K-20K (designer creates once)Good
Phase 1 (MVP)Exercise textWger open-source database (400+ exercises)FreeGood (descriptions, tips)
Phase 2Video demosFilm at Pro Fitness with ShubhamRs 5K (equipment) + timeGreat (authentic, branded)
Phase 2Muscle overlaysSVG overlaid on video (programmatic)Dev time onlyGreat
Phase 33D animationsCommission from Indian 3D studioRs 1.5-5L for 50 exercisesPremium
Phase 3AI-generated 3DConvert Phase 2 videos via Move.ai/DeepMotion$50-200/moPremium (improving rapidly)
Long-termFull video libraryOriginal production (1,000+ exercises)Rs 10-25LCult.fit parity

Diet Plan Screens

Diet Plan Overview

┌─────────────────────────────────────┐
│ ← My Diet Plan                 ⚙   │
│ Weight Loss • 1800 kcal/day         │
├─────────────────────────────────────┤
│ 🟢  🟢  ●  ○  ○  ○  ○             │
│ MON TUE WED THU FRI SAT SUN        │
├─────────────────────────────────────┤
│                                     │
│ Today's Macros           1800 kcal  │
│ ████████████░░░░  72% consumed      │
│                                     │
│ Protein    Carbs     Fat            │
│ 120g       180g      60g            │
│ ████░░     ██████░   ████░          │
│ 85/120     145/180   48/60          │
│                                     │
├─────────────────────────────────────┤
│                                     │
│ 🌅 Breakfast          7:00 AM      │
│ ┌─────────────────────────────────┐ │
│ │ Oats with milk + banana         │ │
│ │ 320 kcal • P: 12g C: 55g F: 8g │ │
│ │                        ☑ Eaten  │ │
│ └─────────────────────────────────┘ │
│                                     │
│ 🌞 Mid-Morning Snack   10:00 AM   │
│ ┌─────────────────────────────────┐ │
│ │ Paneer tikka (100g) + green tea │ │
│ │ 220 kcal • P: 18g C: 5g F: 15g │ │
│ │                        ☐ Log    │ │
│ └─────────────────────────────────┘ │
│                                     │
│ 🍛 Lunch               1:00 PM    │
│ ┌─────────────────────────────────┐ │
│ │ Dal + 2 Roti + Sabzi + Salad    │ │
│ │ 480 kcal • P: 22g C: 65g F: 12g│ │
│ │                        ☐ Log    │ │
│ └─────────────────────────────────┘ │
│                                     │
│ 🌅 Evening Snack       5:00 PM    │
│ │ Sprouts chaat + buttermilk       │ │
│                                     │
│ 🌙 Dinner              8:00 PM    │
│ │ Grilled chicken + rice + raita   │ │
│                                     │
│ 🥛 Post-Dinner         9:30 PM    │
│ │ Warm milk with turmeric          │ │
│                                     │
└─────────────────────────────────────┘

Key Diet Features

  • Indian cuisine focus: Dal-roti, poha, idli, upma, paneer, chicken curry — NOT Western foods
  • Macro tracking: Simple progress bars for protein/carbs/fat
  • Meal check-off: Tap to mark as eaten (simple accountability)
  • Calorie budget: Clear daily target with progress ring
  • Meal timing: Shows suggested times
  • Swap meals: Tap to see alternatives (e.g., swap paneer tikka for boiled eggs)
  • Vegetarian/non-veg toggle: Trainer sets this per member

Diet Content for MVP

Pre-built templates (20-30 plans):

CategoryPlansExample
Weight loss (veg)3 calorie levels (1200, 1500, 1800 kcal)Dal-roti based, high protein
Weight loss (non-veg)3 calorie levelsChicken/fish/egg based
Muscle gain (veg)3 calorie levels (2200, 2500, 2800 kcal)Paneer, soy, whey focused
Muscle gain (non-veg)3 calorie levelsChicken breast, eggs, fish
Maintenance (veg/non-veg)4 plansBalanced macros
Diabetic-friendly2 plansLow GI, controlled carbs
PCOS-friendly2 plansAnti-inflammatory, hormone-balancing
Post-pregnancy2 plansNutrient-dense, recovery-focused

Data source: Build manually with a certified nutritionist. Cost: Rs 15,000-25,000 for a nutritionist to create 20-30 detailed plans with 7-day meal schedules, grocery lists, and macro breakdowns. This is a one-time cost.

Phase 2: AI-generated diet plans using Claude API — input member’s goals, weight, dietary preferences, regional cuisine preference → generate personalized 7-day plan. Cost: ~Rs 2-3 per plan generation (API cost).


Flutter Widget Architecture

Workout Player Widget Tree

WorkoutPlayerScreen
├── Stack (full-screen)
│   ├── ExerciseMediaBackground
│   │   ├── CachedNetworkImage (for GIFs) — Phase 1
│   │   ├── VideoPlayer (for mp4) — Phase 2
│   │   └── Three3DViewer (for 3D) — Phase 3
│   ├── GradientOverlay (top + bottom fade to black)
│   ├── Positioned (top)
│   │   ├── BackButton
│   │   ├── SetCounter ("SET 1 OF 3")
│   │   └── ExerciseName
│   ├── Positioned (center-bottom)
│   │   ├── RepsWeightDisplay (hero text)
│   │   └── ActionButtons (Log, Replace, Tutorial)
│   ├── MuscleMapOverlay (conditional, SVG-based)
│   │   ├── SvgPicture.asset('body_front.svg')
│   │   └── Highlighted muscle paths (cyan)
│   └── Positioned (bottom)
│       └── NextUpBar (thumbnail + name + skip)
├── AnimatedSwitcher (for exercise transitions)
└── SetLogBottomSheet (slides up on "Log" tap)
    ├── WeightPicker (scrollable number picker)
    ├── RepsPicker
    ├── RPESlider
    ├── LogSetButton
    └── RestTimerWidget (auto-starts after logging)

Key Flutter Packages for Workout Player

PackagePurpose
cached_network_imageLoad/cache exercise GIFs from CDN
video_player + chewiePlay exercise video demos (Phase 2)
flutter_svgRender muscle map SVG overlays
lottieAnimated micro-interactions (set completion, streak)
numberpicker or flutter_spinboxWeight and reps selection
circular_countdown_timerRest timer between sets
haptic_feedback (built-in)Vibrate on timer completion, set logging
audioplayersOptional chime sounds
shimmerLoading state for images/GIFs
smooth_page_indicatorSet progress dots

Design System for Workout Screens

Colors (Dark Theme)

TokenValueUsage
background#000000Full-screen player background
surface#0A0A0FCards, bottom sheets
surface-elevated#1A1A24Next Up bar, action buttons
text-primary#FFFFFFExercise name, reps, weight
text-secondary#8A8A9ALabels (“REPS”, “KG”), timestamps
accent#00C853Set counter, completion badges, progress
accent-cyan#00E5FFMuscle map highlights (primary muscles)
accent-cyan-dim#00E5FF66Muscle map (secondary muscles, 40% opacity)
danger#FF4D2AWarnings, overdue items
glass#FFFFFF1AFrosted glass buttons (10% white)
glass-border#FFFFFF33Button borders (20% white)

Typography

StyleFontSizeWeightUsage
HeroSystem/DM Sans64-72spExtraBoldReps × Weight display
TitleOswald28-32spBoldExercise name
SubtitleDM Sans14spSemiBoldSet counter, section headers
BodyDM Sans16spRegularDescriptions, set summaries
CaptionDM Sans12spRegularLabels (“REPS”, “KG”, timestamps)
ButtonOswald14spSemiBoldAction button labels

Animations

AnimationDurationCurveTrigger
Exercise transition400mseaseInOutCubicSwipe left/right
Set completion600msbounceOutLog set tapped
Muscle map fade-in300mseaseOutToggle muscles
Rest timer pulse1000mslinearEvery second (subtle scale pulse)
Next Up bar slide300mseaseOutCubicNew exercise queued
Bottom sheet350mseaseOutQuartLog button tapped
Reps/weight change200mseaseInOutNumber picker scroll

Summary: What to Build When

MVP (Month 1-5)

  • Workout Plan Overview screen (exercise list, calendar, sections)
  • Exercise Active View with GIF background (ExerciseDB)
  • Set logging bottom sheet (weight, reps, log button)
  • Rest timer (countdown, +30s, skip)
  • No muscle map overlay
  • No 3D animations
  • No video — GIFs only

Phase 2 (Month 6-9)

  • Add original video demos (filmed at Pro Fitness)
  • Add SVG muscle map overlay (toggle on/off)
  • Add diet plan screens with macro tracking
  • Improve animations and transitions

Phase 3 (Month 10-18)

  • Commission 3D exercise animations (top 50 exercises)
  • AI-generated diet plans (Claude API)
  • Wearable integration (heart rate during sets via Terra API)
  • Community challenges and leaderboards

Additional Core Screens

Reference: Cult.fit app screenshots (April 2026)

Screen 6: Home Screen

Purpose: App landing page. Quick actions, streaks, engagement hooks.

┌─────────────────────────────────────┐
│ (avatar)  🔥 12 day streak  🔔     │
├─────────────────────────────────────┤
│                                     │
│  ┌──────────────┬──────────────┐    │
│  │  Hero Banner │  Banner 2    │    │
│  │  (carousel)  │  (promo)     │    │
│  │              │              │    │
│  │  "We're      │  "Launching  │    │
│  │   waiting    │   new..."    │    │
│  │   for you"   │              │    │
│  └──────────────┴──────────────┘    │
│         ●  ○  ○  (indicators)       │
│                                     │
│  ┌────┐ ┌────┐ ┌────┐ ┌────┐       │
│  │ 🏋 │ │ 📱 │ │ 🏠 │ │ 📍 │       │
│  │book │ │chk │ │wrk │ │view│       │
│  │class│ │ in │ │home│ │gyms│       │
│  └────┘ └────┘ └────┘ └────┘       │
│                                     │
│  ⚡ 3/6 This Week Activity   BOOK  │
│                                     │
├─────────────────────────────────────┤
│ 🏠    🏋    🔍    🛒    ✨         │
│ Home  Fitness Search Store Transform│
└─────────────────────────────────────┘

Key Elements

ElementSpec
Streak counterTop center, pill badge with fire emoji. “12 day streak”. Accent color background. Gamification hook — drives daily engagement.
AvatarTop-left, circular profile photo (32dp), tappable → profile screen
Notification bellTop-right, with red dot badge for unread
Hero carousel2-3 promotional/motivational banners. Auto-scroll every 5s. Gym-specific content (white-label: each gym can set their own banners).
Quick action grid4 icon buttons in a row: Book a Class, Check-in at Gym, Workout at Home, View All Gyms. Each has icon (custom, not generic) + label.
Weekly activity trackerShows X/6 sessions this week. Progress bar. “BOOK” CTA to schedule next session.
Bottom navigation5 tabs: Home, Fitness, Search, Store, Transform. Center tab (Search) is elevated/highlighted.

GymStack Adaptation

For white-labeled GymStack, the home screen adapts:

  • Streak → tracks gym check-in streak (not class bookings)
  • Quick actions → “My Workout”, “Check In”, “My Diet”, “My Progress”
  • Hero banners → gym owner can upload promotions (new batch, festival offer, referral program)
  • Activity tracker → “3/5 workouts completed this week” (based on workout plan)
  • Bottom nav → Home, Workouts, Check In, Diet, Profile (5 tabs, simpler than Cult.fit’s)
  • Gym branding → logo, colors, name all from white-label config

Screen 7: QR Check-In

Purpose: Member shows this QR code at the gym front desk to check in. Staff scans it with the admin app or a dedicated scanner.

┌─────────────────────────────────────┐
│                                     │
│ (blurred home screen behind)        │
│                                     │
│ ┌─────────────────────────────────┐ │
│ │          ── (handle) ──         │ │
│ │                                 │ │
│ │         Check-in                │ │
│ │                                 │ │
│ │    ┌─────────────────────┐      │ │
│ │    │                     │      │ │
│ │    │    ██▀▀██▀▀██       │      │ │
│ │    │    ██  ██  ██       │      │ │
│ │    │    ▀▀██▀▀██▀▀       │      │ │
│ │    │       QR CODE       │      │ │
│ │    │    ██▀▀██▀▀██       │      │ │
│ │    │    ██  ██  ██       │      │ │
│ │    │                     │      │ │
│ │    └─────────────────────┘      │ │
│ │                                 │ │
│ │  To check-in to a gym,         │ │
│ │  scan this QR code              │ │
│ │                                 │ │
│ │  ✅ Valid until 11:59 PM today  │ │
│ │                                 │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────┘

Key Details

ElementSpec
PresentationBottom sheet sliding up over current screen (blurred background)
QR codeLarge (280×280dp), high contrast (black on white), contains encrypted member ID + timestamp
QR data formatgymstack://checkin/{member_id}/{timestamp}/{hmac} — HMAC prevents forgery
ValidityQR regenerates every 60 seconds (security). Shows countdown: “Valid until…”
BrightnessAuto-maximize screen brightness when QR is displayed (Flutter: screen_brightness package)
OfflineQR can be generated offline (uses pre-shared secret with gym’s scanner)
Admin sideAdmin app has a QR scanner (camera) that reads and validates the check-in

GymStack Enhancements Over Cult.fit

  • Streak display on check-in screen: “Day 12! Keep it going!”
  • Last check-in timestamp: “Last: Yesterday at 6:32 PM”
  • Auto check-in option: when member’s phone is near gym’s Bluetooth beacon (Phase 2)

Screen 8: Class Schedule

Purpose: Browse and book group classes at the gym.

┌─────────────────────────────────────┐
│ ← 📍 Gym Name (location picker)  ∨ │
├─────────────────────────────────────┤
│  2    3    4    5    6    7    8     │
│ THU  FRI  SAT  SUN  MON  TUE  WED  │
│  ▬                                  │
├─────────────────────────────────────┤
│ Dance+ Strength+ Burn+ Yoga+ HI... │
│ (scrollable filter chips)           │
├─────────────────────────────────────┤
│                                     │
│  6:00 AM    Pro Fitness Kankarbagh  │
│             ┌──────────┐            │
│             │  YOGA    │            │
│             └──────────┘            │
│                                     │
│  7:00 AM    Pro Fitness Kankarbagh  │
│             ┌──────────┐            │
│             │  HIIT    │            │
│             └──────────┘            │
│                                     │
│  8:00 AM    Pro Fitness Kankarbagh  │
│             ┌──────────────────┐    │
│             │  ZUMBA & DANCE   │    │
│             └──────────────────┘    │
│                                     │
│  5:00 PM    Pro Fitness Kankarbagh  │
│             ┌──────────┐            │
│             │  CROSSFIT │            │
│             └──────────┘            │
│                                     │
│  5:30 PM    Pro Fitness Kankarbagh  │
│             ┌──────────────────┐    │
│             │  ZUMBA & DANCE   │    │
│             └──────────────────┘    │
│                                     │
│  6:00 PM    Pro Fitness Kankarbagh  │
│             ┌──────────┐            │
│             │  YOGA    │            │
│             └──────────┘            │
│                                     │
└─────────────────────────────────────┘

Key Details

ElementSpec
BackgroundGradient dark (deep navy/teal, similar to Cult.fit’s class schedule)
Location pickerTop bar with gym name and location. For multi-branch gyms, dropdown to switch.
Date stripHorizontal scroll, 7 days. Current day highlighted with underline.
Category filtersHorizontal scroll chips: Dance, Strength, Burn, Yoga, HIIT, CrossFit, Zumba. Tappable to filter. + icon to add filter.
Class cardsTime (left-aligned, bold, 18sp) + gym name (small text) + class type pill (rounded rect, gray bg, white text, all-caps)
Tap classOpens class detail: trainer name, capacity (12/20 spots), duration, description, BOOK button
Booked indicatorGreen checkmark + “BOOKED” replaces the pill for already-booked classes
WaitlistIf class is full: “JOIN WAITLIST” button, shows position (e.g., “#3 on waitlist”)

Screen 9: Gym Discovery / Detail

Purpose: Browse and discover gym locations (relevant for multi-branch gyms or future corporate wellness aggregation).

┌─────────────────────────────────────┐
│ ← 📍 Location  ∨                   │
├─────────────────────────────────────┤
│ 🔍 Search for a gym/center near you│
├─────────────────────────────────────┤
│ [Gym ×] [Store +] [Group classes +] │
├─────────────────────────────────────┤
│                                     │
│ ┌─────────────────────────────────┐ │
│ │                                 │ │
│ │     📸 GYM PHOTO               │ │
│ │     (full-width hero image)     │ │
│ │                                 │ │
│ │  GROUP CLASSES & GYM            │ │
│ │                          ELITE  │ │
│ └─────────────────────────────────┘ │
│                                     │
│ Pro Fitness Kankarbagh              │
│ 📍 Bhootnath Road, Kankarbagh      │
│ ⭐ 4.0 (297 reviews) • 1.2 km     │
│                                     │
│ ┌─────────────────────────────────┐ │
│ │          BOOK NOW               │ │
│ └─────────────────────────────────┘ │
│                                     │
│ ── Facilities ──                    │
│ 🏋 Free Weights  ❄ Ice Bath        │
│ 🚿 Hot Showers   🅿 Free Parking   │
│ ❄ AC             🔒 Lockers        │
│                                     │
│ ── Trainers ──                      │
│ Shubham (Strength) | Priya (Yoga)   │
│                                     │
│ ── Programs ──                      │
│ Strength • HIIT • Yoga • Zumba     │
│ CrossFit • Personal Training        │
│                                     │
│ ── Pricing ──                       │
│ Silver: ₹14,000/yr                  │
│ Gold: ₹25,000/yr                    │
│ Platinum: ₹35,000/yr                │
│                                     │
└─────────────────────────────────────┘

For GymStack’s MVP

This screen is more relevant for:

  • Multi-branch gyms (member can see all branches and book at any)
  • Corporate wellness (Phase 2 — employees browse partner gyms near them)

For single-branch gyms (majority of initial customers), this screen shows just THEIR gym info — essentially a mini-version of the gym’s profile page within the app.


Screen 10: Workout Plan Structure

Additional patterns observed from Cult.fit screenshots:

Exercise Grouping Types

TypeLabelBehavior
Standard(no label)Individual exercise, do all sets before moving on
Superset”SUPERSET: Follow sequence”2-3 exercises done back-to-back with no rest between them, rest after completing the group
Circuit Set”CIRCUIT SET: Follow sequence”3+ exercises done in sequence as a circuit, multiple rounds
Unilateral”Unilateral: Follow alternatively”Left/right side variants — do left, then right, alternating
Drop Set”DROP SET”Same exercise, decreasing weight each set

These grouping types must be supported in the workout plan data model:

{
  "sections": [
    {
      "name": "Warm Up",
      "duration_mins": 12,
      "groups": [
        {
          "type": "circuit",
          "label": "CIRCUIT SET: Follow sequence",
          "exercises": [
            { "name": "Treadmill", "duration": "10 Mins" },
            { "name": "Kettlebell Halo", "reps": 15 },
            { "name": "Inch Worm", "reps": 15 },
            { "name": "Cobra To Mountain", "reps": 15 }
          ]
        }
      ]
    },
    {
      "name": "Workout",
      "duration_mins": 55,
      "groups": [
        {
          "type": "standard",
          "exercises": [
            {
              "name": "Dumbbell Seated Overhead Press",
              "sets": [
                { "reps": 12, "weight_kg": 30 },
                { "reps": 10, "weight_kg": 40 },
                { "reps": 8, "weight_kg": 45 },
                { "reps": 6, "weight_kg": 45 }
              ],
              "is_new": true
            }
          ]
        },
        {
          "type": "unilateral",
          "label": "Unilateral: Follow alternatively",
          "exercises": [
            { "name": "Single Arm Dumbbell Chest Press: Left", "sets": [{"reps": 12}, {"reps": 10}, {"reps": 8}, {"reps": 6}], "is_new": true },
            { "name": "Single Arm Dumbbell Chest Press: Right", "sets": [{"reps": 12}, {"reps": 10}, {"reps": 8}, {"reps": 6}], "is_new": true }
          ]
        }
      ]
    },
    {
      "name": "Stretch",
      "duration_mins": 4,
      "groups": [
        {
          "type": "circuit",
          "label": "CIRCUIT SET: Follow sequence",
          "exercises": [
            { "name": "Sphinx Stretch", "duration": "40 Secs" },
            { "name": "Kneeling Shoulder Extension Pec Stretch", "duration": "40 Secs" }
          ]
        }
      ]
    }
  ]
}

Additional UI Patterns

PatternDetail
”NEW” badgeRed pill on exercise thumbnail when a recently added exercise appears in the plan. Draws attention to plan changes.
”SWAP WITH TODAY” buttonBottom CTA (outlined, red text) allowing member to swap one day’s workout with another. Useful when member missed a day.
Three-section structureWarm Up → Workout → Stretch (standard for every day). Each collapsible independently. Duration shown per section.
Exercise thumbnailsSquare (80×80dp), rounded corners (8dp), showing the starting position of the exercise. Consistent white/light background in Cult.fit’s content.
Sets displayCompact: “12 Reps x 30 Kg • 10 Reps x 40 Kg • 8 Reps x 45 Kg • 6 Reps x 45 Kg” — all on 1-2 lines, bullet-separated
Reps-only exercisesFor bodyweight/warm-up: just “15 Reps” without weight
Duration exercisesFor stretches/treadmill: “10 Mins” or “40 Secs” instead of reps