On this page
  • Mobile app · iOS and Android
  • Health and fitness
  • Interaction design
  • Design system
  • Accessibility

Urbanfit Studio: a coach, a dietitian and a tracker in one pocket

The mobile chapter of the Urbanfit case study. One design that sets up a personal plan, tracks the day, and connects people to paid experts, built for both app stores.

  • My roleUI/UX designer
  • CompanyUrbanfit Wellness · Pune, India
  • Timeline2021 – 2022
  • PlatformsiOS and Android
  • In Figma68 screens · 7 sheets
Splash screen: a man training with weights, the Urbanfit logo and a Get Started button.
Home screen: a welcome greeting, five tracker tiles for walk, workouts, sleep, water and calories, and a My Plan section.
Calories tracker: a ring showing 1268 kcal, a Health App sync card and meal logging rows.
00 · Where this fits

One chapter of a bigger system

Urbanfit ran several connected products. This chapter covers the member-facing mobile app, called Studio in the design file. The other products appear as their own chapters.

Web

Wellness platform

The marketing and membership website, plus landing pages.

This chapter

Studio mobile app

Plans, daily tracking, workouts, meals and expert consultations.

Commerce

Store app and web store

Shopping for products, with its own mobile and desktop flows.

Internal

Control panel

The admin side for managing content, members and plans.

01 · The brief

Four jobs, one bottom bar

The app had to do four jobs without feeling like four apps: set up a personal plan, track the day, train and eat to that plan, and put people in touch with real experts.

  • Bet 1 · Ask little, give a planOnboarding collects only what a plan needs (goal, body, activity) and ends with a plan, not a blank dashboard.
  • Bet 2 · Trackers should look alikeSteps, water, sleep and calories share one template, so learning one teaches them all.
  • Bet 3 · Upsell in contextWithout a plan, the expert offer appears exactly where that expert would help, not in a separate store.
  • 75Frames in the Studio mobile page: 68 screens and 7 bottom sheets
  • 131Prototype interactions wired from one starting flow
  • 4Tabs: Home, Nutrition, Profile, Fitness
  • 4Home states, one per plan type
02 · Information architecture

Four tabs on top of seven flows

The Figma page is organised into the same groups the app uses. The bottom bar holds four destinations, a count that fits both an iOS tab bar and an Android navigation bar.

Tab 1Home
Tab 2Nutrition
Tab 3Profile
Tab 4Fitness

Start

Splash, sign in, sign up, phone verification, then an 8-step plan setup.

Before the tabs

Home

Greeting, tracker tiles, My Plan, activity graph, suggested workouts, blogs.

Tab: Home

Trackers

Steps, water, sleep, calories eaten and burnt, each with a goal sheet.

From Home tiles

Nutrition

Food log by meal, macros, BMI, today's meals from a dietitian.

Tab: Nutrition

Fitness

Workout library by body part, video player, workout tracker.

Tab: Fitness

Experts

Pick a coach, book a slot, chat or call.

From plans and tabs

Profile

Account, six reminder types, saved items, notifications, legal.

Tab: Profile

Plans and checkout

Plan list, durations, summary with promo codes, payment.

From upsells and Profile
03 · Flow 1 · Plan setup

Eight short questions, then a plan

Each step asks one thing on one screen, shows "Step x of 8" and offers Skip. The flow ends on a progress screen that turns answers into a training plan.

Sign in screen with phone or email, password, and sign-in options for Apple, Facebook and Google.
01Sign inPhone or email, plus Apple, Google and Facebook.
Phone verification screen with a four-digit code entry and a numeric keypad.
02Verify phoneOne-time code with a numeric keypad, Resend and Change number.
Choose gender screen with Woman, Man and Gender neutral options.
03GenderIncludes a gender-neutral option.
Choose main goal screen: lose weight, keep fit, get stronger, gain muscle mass.
04Main goalFour goals drive the plan.
Select height screen with a Feet or Centimetre toggle and a number field above a numeric keypad.
05Height, weight, goal weightTyped on a keypad, with a unit toggle. No drag ruler.
Choose activities screen listing stretch, cardio, yoga, power training and dancing, with Cardio selected.
06ActivitiesMulti-select list with a clear selected state.
Progress screen reading We create your training plan, with a ring at 78 percent.
07Plan buildingA progress ring explains the wait.

How the interactions were worked out

  • Type, don't dragHeight and weight use a number field and keypad instead of a scroll ruler. It's faster, more precise and needs no dragging (WCAG 2.5.7).
  • One screen, two jobsThe same height and weight screens come back from Profile with "Save" instead of "Continue". One component, two contexts.
  • Units are a choiceA Feet and Centimetre toggle sits above the field, so nobody converts in their head.
  • Always a way outEvery step has Back and Skip, so the plan never blocks people who don't want to share a number.
04 · Flow 2 · Home

One home, four states

Home is designed in four versions: no plan, dietitian only, coach only, and both. Only the My Plan block changes. Everything people learn about the rest of the screen stays true. Scroll inside each phone to see the full screen.

Home with no plan: My Plan shows discounted fitness and dietitian consultations with Get Now buttons, and a View All Plans link, followed by the activity graph, daily steps, calories, exercise, suggested workouts and blogs.
No planMy Plan becomes an offer: 10% off a first consultation, and all plans.
Home with both a coach and a dietitian: My Plan shows Refer a Friend and two rows to connect to your coach and dietitian with Schedule Appointment buttons, followed by the same activity sections.
Coach and dietitianMy Plan becomes a shortcut to book either expert.
What the My Plan block shows in each state
StateMy Plan block
No planTwo discounted consultations and View All Plans
DietitianBook your dietitian, plus 10% off a coach consultation and View All Plans
Fitness coachBook your trainer, plus 10% off a dietitian consultation and View All Plans
BothRefer a friend, and book either expert
05 · Flow 3 · Trackers

One template, five metrics

Steps, water, sleep, calories eaten and calories burnt share one layout. Learning one tracker teaches all of them.

Steps tracker: ring reading 2860 steps and the sentence 2860 steps walked out of 10,000.
StepsRing and a plain sentence.
Water tracker: 9 glasses ring, a minus and plus stepper for glasses, and a Health App sync card.
WaterLog with a − / + stepper.
Sleep tracker: ring reading 8 sleep and the sentence 6 hours of sleep acquired out of 8 hours.
SleepSynced from the health app.
Calories tracker with meal rows for breakfast, lunch and dinner, each with an add button.
Calories eatenLogged by meal.
Bottom sheet titled Set Steps Goal with a minus and plus stepper set to 10000, a Recommended label and a Done button.
Goal sheetThe pencil opens a sheet over the tracker.
Track Breakfast screen: search, Salad selected, quantity 2.75 with a Grams unit dropdown, and macro rings.
Log foodAmount and unit, then macros update.
Track Workout screen: Triceps selected, reps and minutes fields, and 56 kcal lost.
Log workoutSame pattern: amount, unit, result.

Anatomy of a tracker

  1. Date stepper. "Today, Aug 23" with previous and next arrows.
  2. Progress ring. Value and unit inside, for example 2860 steps.
  3. Sentence summary. "2860 steps walked out of 10,000" says what the ring shows, in words.
  4. Edit goal. A pencil opens a bottom sheet with a stepper and a recommended value.
  5. Sync status. "You are connected to Health App · Last synced Today, 11:23".
  6. Log list. Meals or workouts to add to, where the metric is logged by hand.

Why one template

Five metrics with five layouts would mean five things to learn. One layout lets the metric change while position, gestures and wording stay the same. The sentence summary also makes each ring readable without seeing it, which matters for screen-reader users.

06 · Flow 4 · Experts, meals and workouts

From a plan to a person

The paid side of the app is people. Members pick a coach or dietitian, book a slot, then chat or call. Plans arrive as today's meals and workouts, each with Skip, Change and Done.

Pick a coach screen listing a dietitian and a trainer, each with a photo, a role and a radio button. Names are blurred.
Pick a coachRole and experience before the name.
Book Your Appointment screen with a January calendar and time-slot buttons. The expert's name is blurred.
BookMonth calendar, then time slots.
Chat screen with an expert fitness coach, a Call Now button and a message field with Send. The name is blurred.
Chat or callCall Now is always one tap away.
Meals screen: tabs for breakfast, lunch, snack and dinner, a Quinoa Fruits Bowl card with Skip, Change and Done, and a breakfast summary.
Today's mealsSkip, Change, Done on every card.
Fitness tab: body-part filter chips (arms, back, chest, core, abs, legs, triceps, all), an expert trainer card, and a grid of workout videos.
Workout libraryFilter by body part. Scroll inside.
Workout video player for a pushup workout, with targeted muscles and suggested exercises below.
Workout videoPlayer, targeted muscles, suggestions.
Nutrition tab without a plan: a 10% discount dietitian consultation banner with Get Now, above the food log.
Upsell in contextNo plan: the dietitian offer sits on the food log.

Expert and member names in these screens are blurred.

07 · Interaction model

Four kinds of movement

The prototype uses four interaction types, and each maps to a native pattern on both platforms. Counts come from the Figma prototype.

  • 131Interactions in total
  • 6Open a bottom sheet as an overlay: goals and reminders
  • 31Swap a component state in place: calendar days
  • 1Timed: splash to welcome
  1. Splash
  2. Welcome
  3. Sign in
  4. Sign up
  5. Verify
  6. 8 setup steps
  7. Plan ready
  8. Home
  9. Trackers · Nutrition · Fitness
Each prototype interaction and its native equivalent
In the prototypeUsed foriOSAndroid
NavigateMoving deeper: Home to a tracker, a step to the next stepPush in a navigation stack, with a back chevron and edge swipeNew destination. System back gesture or button returns.
OverlaySet a goal, pick a reminder day and timeSheet with a grabber, dismissed by swipe or DoneModal bottom sheet, dismissed by back, scrim tap or Done
Change toSelecting a day in the calendarSelected state, announced as "selected"Selected state, announced as "selected"
After delaySplash to welcomeLaunch screen, then the first viewSplash screen API, then the first view
08 · Components

The parts that repeat

The screens are built from a shared library: calendar days, week and month views, text fields, primary buttons, checkboxes and icons. The day chip alone is used 35 times. These are recreated specimens with their states; the bottom bar shows the original next to a suggested fix.

23Today
24On
25Off

Day

Days · Variant = Today | On | Off

35 instances across trackers and booking. Each state differs in fill and border, not just colour hue.

Phone / EmailEnter phone or email
Password••••••••

Text field

Text Field / Ordinary · Inactive | Focused

In the original, the label sits inside the field and disappears on typing. The specimen keeps a visible label above it (WCAG 3.3.2).

FeetCentimetre
10000

Unit toggle and stepper

Segmented · Stepper

The two controls behind every number in the app. The steppers use 44pt targets and announce the new value.

2860 steps walked out of 10,000

Progress ring

Tracker header

Always paired with the sentence summary, so the ring's meaning never depends on seeing it.

As designed · active = black label
Suggested · white pill + bold, exposed as selected

Bottom bar

Tab bar · 4 destinations

As designed, the active tab is shown only by a black label on purple, which is 3.2:1 and below the 4.5:1 needed for text this small. The fix adds a shape change and bolder text, and exposes the state to screen readers.

09 · Variables and tokens

A token library, and the gap to close

The Figma file holds a token library: 84 variables in four collections, plus 14 text styles in Poppins. The table shows real names and values from the file.

Variable collections in the Urbanfit Figma file
CollectionVariablesExamples
Color Primitives35brand/lime #99FF35 · brand/teal #1CE1CF · purple/violet-deep #6323FE · neutral/gray-600 #5C5C5C
Color Semantic18bg/default → white · text/default → black · action/primary → lime · text/muted → gray-400
Typography21font/family/primary Poppins · sizes 11 to 96 · line heights 110, 125, 150%
Spacing and Radius10spacing/xs 4 to spacing/2xl 32 · radius/sm 4 to radius/full 999

What the audit of the tokens found

Finding 1

Screens aren't bound yet

No layer on the Studio mobile page is bound to a variable. Colours like the Studio purple are typed in as raw values in hundreds of places.

Finding 2

Two brands in one semantic layer

action/primary points to lime, the wider Urbanfit brand. Studio's purple exists only as a primitive (purple/violet-deep), so the app's main colour has no semantic name.

Finding 3

A muted token that fails

text/muted resolves to #8D8D8D, which is 3.32:1 on white. It fails for body text.

Proposed "Studio" mode for the Color Semantic collection
Semantic tokenDefault mode (today)Studio mode (proposed)Check on white
action/primarybrand/limepurple/violet-deepWhite label on it 6.56:1
text/on-primarybrand/green-deepneutral/white6.56:1on violet-deep
text/mutedgray-400 · 3.32:1gray-6006.69:1
text/secondarygray-500No change4.67:1, just passes

Adding a mode keeps one library for every Urbanfit product while letting the app keep its own colour. Binding the screens to these tokens is the step that makes the fixes apply everywhere at once.

10 · iOS and Android

One design, two platforms

The Figma file holds one set of iPhone-sized frames (428 × 926). The table shows how that shared design maps to each platform's conventions.

How the shared design maps to iOS and Android
ElementIn the designiOSAndroid
Bottom bar4 tabs with icon and labelTab barNavigation bar (3 to 5 destinations)
BackTop-left back arrowBack chevron plus edge swipeSystem back must work too, not only the arrow
Health data"You are connected to Health App"Apple Health (HealthKit)Health Connect. Google Fit's APIs are deprecated in 2026.
Social sign-inApple, Facebook, GoogleSign in with Apple shown firstGoogle sign-in shown first
One-time code4 boxes and a numeric keypadCode autofill from MessagesSMS code autofill
NumbersTyped on a keypad, with unitsNumber pad keyboardNumeric keyboard
Goal sheetsOverlay from the bottomSheetModal bottom sheet
Touch targetsMixed sizesAt least 44 × 44 ptAt least 48 × 48 dp
Text sizeFixed sizes, from 8pt upDynamic TypeFont scale (sp units)

The generic "Health App" label is a quiet strength: one string works on both platforms, and only the connection behind it changes.

11 · Accessibility audit

Checked against WCAG 2.2 AA

The audit applies WCAG 2.2 AA to the native app, using W3C's draft guidance for mobile apps. Counts come from the text layers inside the 75 screen frames.

  • 454Of 1,832 text layers are smaller than 12pt
  • 380Text layers in greys below 4.5:1 on white
  • 1.15:1Lowest contrast: white values on the pastel Home tiles
  • 0Drag-only inputs. Every number can be typed or stepped.
Findings, highest impact first
FindingWCAG 2.2SeverityFix
White 10pt values on the pastel Home tiles (Walk, Workouts, Sleep, Water, Calories)1.4.3 ContrastHigh1.15 to 1.76:1, and the grey tile labels fail too. Use dark text (#0A0615) at 12pt or more.
Grey body text: #898A8D (220 layers), #979797 (79), #787878 (81)1.4.3 ContrastHigh3.45, 2.92 and 4.42:1. Bind to a passing token such as gray-600 (6.69:1).
Fixed text sizes, many under 12pt and some at 8pt1.4.4 Resize textHighMap text styles to Dynamic Type and sp. Set 12pt as the floor, and test at the largest setting.
Active tab shown only by a black label on purple1.4.1 · 1.4.3 · 4.1.2Medium3.2:1. Add a shape indicator and expose the selected state.
Activity graph uses red and green bars to mean low and on-target1.4.1 Use of colourMediumAdd a goal line and value labels. Green text #4CAF50 is also 2.78:1.
Labels inside text fields disappear on typing3.3.2 Labels or instructionsMediumKeep a visible label above each field.
Icon-only buttons: social sign-in, edit pencil, play, favourite4.1.2 Name, role, valueMediumGive each an accessible name, for example "Edit steps goal".
Emoji as option icons in setup steps1.1.1 Non-text contentLowHide them from screen readers, so "Woman" isn't read twice.
One-time code entry3.3.8 Accessible authenticationLowAllow paste and platform code autofill into the four boxes.
Placeholder copy in workout and blog descriptionsContent quality, not WCAGLowReplace before release. A screen reader reads placeholder text out loud.

What already works

  • No dragging requiredHeight, weight and goals are typed or stepped, never dragged (2.5.7).
  • Words next to ringsEach tracker says its value in a sentence, not only in a graphic (1.1.1).
  • Labelled navigationEvery tab has a text label, not just an icon.
  • Inclusive choicesA gender-neutral option, a unit toggle, and Skip on every setup step.
12 · Reflection

What I'd tell the next team

Patterns beat screens

Seventy-five frames came down to a handful of patterns: the tracker template, the goal sheet, the state-driven Home. The patterns are the real deliverable.

State is design work

Designing four Home states up front made the upsell honest. People only see offers for what they don't have yet.

Tokens only help when bound

A good token library sat beside screens that didn't use it. Binding them is what turns an audit finding into a one-line fix.

To validate next

  1. Usability-test plan setup and food logging with 5 to 8 people per platform, including VoiceOver and TalkBack users. Report results as counts.
  2. Measure setup completion (people who finish step 8, out of those who start step 1) and time to first logged meal.
  3. Compare plan uptake between the in-context offer and the plans list, using a control group before calling either one better.

Screens are exported from the Urbanfit Studio Figma file. Member and expert names, and phone numbers, are blurred. Specimens in section 08 are recreations. Platform guidance: W3C Guidance on Applying WCAG 2.2 to Mobile Applications (Group Draft Note, May 2025); Android Developers, Google Fit migration FAQ.