Madhur JainProduct Manager III
Back to personal builds

Coach: a cross-platform fitness product built from scratch

Personal product

Built Coach, a cross-platform fitness product for planning workouts, logging sessions, tracking progress, connecting health data, and supporting personal training workflows.

Role
Founder, Product Manager, and Builder
When
2026
Product area
Cross-platform, Next.js, SwiftUI

The business situation.

Create a real workout product that can plan routines, guide active sessions, track progress, connect health data, and support trainer workflows across web, iOS, and Android.

My role

End to end

Product definition, interaction design, and build execution

Platforms

3

Web, iOS, and Android with platform-specific experiences

Product scope

Full journey

Planning, active logging, progress review, health context, and trainer workflows

This is an active personal build. The screenshots on this page show the product in use across its web and mobile surfaces.

iOS product evidence

The active workout stays visible beyond the app.

Coach uses iOS Live Activities and the Dynamic Island to surface the current exercise, set progress, and a quick return to the logger. This is a simulator capture from the iOS build.

Coach iOS Lock Screen Live Activity showing a Bench Press set ready to log
Set-ready logging · iOS Live Activity

The user problem

Workout products often split planning, active logging, progress review, trainer support, and health context across separate tools. Coach explores what a single cross-platform product system can look like when those jobs are connected.

The product decision

The web app handles hosted workflows such as onboarding, templates, workout sessions, calendar, progress, friends, profile, admin, and trainer flows. Native apps bring the experience closer to the workout with Apple Health, Health Connect, widgets, Live Activities, and device-specific interaction patterns.

What I built for web

The Next.js app uses App Router, Vercel, Supabase Auth, Supabase Postgres with Row Level Security, mobile web/PWA behavior, demo mode, trainer directory, bookings, chat, packages, and owner/admin workflows.

What I built for iOS

The SwiftUI app includes auth/session restore, onboarding, tabbed navigation, workout start/resume, set logging, progress dashboard, Apple Health steps and insights, Live Activities, Dynamic Island surfaces, widgets, and personal training discovery.

What I built for Android

The Android surface uses Kotlin, Jetpack Compose, Material 3, Room, WorkManager, secure crypto storage, Health Connect/Fitness libraries, Supabase auth/postgrest, and a configurable Coach web URL.

Why this matters to my product practice

Coach is where I test product decisions end to end: from the user workflow and platform choice to implementation details and the experience in someone’s hand.

Designed for the strengths of each platform.

Coach is one product with platform-specific experiences across web, iOS, and Android.

Web

Next.js hosted training product

Mobile-first web/PWA with invite auth, onboarding, workout logging, templates, library, calendar, progress, friends, profile, admin, and trainer workflows.

iOS

SwiftUI native Coach app

Native iOS surface with onboarding, workout logging, HealthKit steps and insights, progress dashboard, widgets, Live Activities, Dynamic Island, and personal training entry points.

Android

Kotlin/Compose Android app

Android app configured with Material 3, Room, WorkManager, secure storage, Health Connect/Fitness, Supabase auth/postgrest, and web bridge URL.

More iOS product states.

Full-resolution simulator captures of the Live Activity and Dynamic Island during an active workout.

Coach iOS Dynamic Island showing a Bench Press workout with quick logging controls
Quick loggingiOS Dynamic Island
Coach iOS Dynamic Island expanded into weight and rep controls for a Bench Press set
Set controlsiOS Dynamic Island
Coach iOS Lock Screen Live Activity showing Bench Press progress and a workout timer
In-progress sessioniOS Live Activity