about the project
TrainUp — Brand Identity
TrainUp — Fitness App
Before the app. Before the store. There was a brand. Every color, every typeface, every design decision in the TrainUp ecosystem started here.
Before the app. Before the store. There was a brand. Every color, every typeface, every design decision in the TrainUp ecosystem started here.
Case Study
Branding
Visual Design
Design Systems
B2C
MY ROLE
UX/UI Designer
UX/UI Designer
TOOLS
Figma · PS · Affinity
Figma · PS · Affinity
TYPE
Concept Project
Concept Project

the brief
A fitness app built around the person, not the gym
A fitness app built around the person, not the gym
TrainUp was designed to remove every barrier between a user and their next workout — no gym required, no experience needed. The goal was simple: build a mobile experience that adapts to real people, with real constraints, and makes starting easy.
TrainUp was designed to remove every barrier between a user and their next workout — no gym required, no experience needed. The goal was simple: build a mobile experience that adapts to real people, with real constraints, and makes starting easy.
the problem
Built for the fit. Not for everyone else
Built for the fit. Not for everyone else
Everyone else — the beginner scared of being judged, the parent with 20 minutes and no babysitter, the retiree who wants to move but doesn't know how — is left to figure it out alone. The problem wasn't a lack of fitness content. The world has enough of that.
The problem was a lack of fitness solutions built around the person using them — their time, their equipment, their goals, their body, their life.
Everyone else — the beginner scared of being judged, the parent with 20 minutes and no babysitter, the retiree who wants to move but doesn't know how — is left to figure it out alone. The problem wasn't a lack of fitness content. The world has enough of that.
The problem was a lack of fitness solutions built around the person using them — their time, their equipment, their goals, their body, their life.
How might we design a fitness experience so personal and frictionless that the hardest part is actually the workout — not finding it?
How might we design a fitness experience so personal and frictionless that the hardest part is actually the workout — not finding it?
the research
What's already out there — and what's missing
What's already out there — and what's missing
Three real people shaped this project from the start — a new mother with no equipment and no experience, a 60-year-old who had never stepped inside a gym, and someone with home equipment but no time. Three completely different needs. One shared frustration — nothing out there was built for any of them.
Three real people shaped this project from the start — a new mother with no equipment and no experience, a 60-year-old who had never stepped inside a gym, and someone with home equipment but no time. Three completely different needs. One shared frustration — nothing out there was built for any of them.
APP
PRIMARY FOCUS
GAP IDENTIFIED
Nike Training Club
Nike Training Club
Beautiful UI
Beautiful UI
Gym-focused, overwhelming
Gym-focused, overwhelming
MyFitnessPal
MyFitnessPal
Calorie tracking
Calorie tracking
Workouts are secondary
Workouts are secondary
Strong Workout
Strong Workout
Experienced lifters
Experienced lifters
Not beginner friendly
Not beginner friendly
7 Minute Workout
7 Minute Workout
Quick Workouts
Quick Workouts
Rigid, one size fits all
Rigid, one size fits all
Fitbod
Adaptive workouts
Adaptive workouts
Complex, expensive
Complex, expensive
Home Workout App
Home Workout App
Home Exercises
Home Exercises
Doesn't adapt to user goals
Doesn't adapt to user goals
Not one app asked who you were before telling you what to do. They assumed your equipment, your experience, your time, and your goals. TrainUp was designed to ask first.
Not one app asked who you were before telling you what to do. They assumed your equipment, your experience, your time, and your goals. TrainUp was designed to ask first.
APP
PRIMARY FOCUS · GAP IDENTIFIED
Nike Training Club
Beautiful UI · Gym-Focused, Overwhelming
Strong Workout
Experience lifters · Not beginner friendly
7 Minute Workout
Quick workouts · Rigid, one size fits all
Fitbod
Adaptive workouts · Complex, expensive
Home Workout App
Home exercises · Doesn't adapt to user goals
MyFitnessPal
Calorie Tracking · Workouts are secondary
the users
Three people. Three completely different needs
Three people. Three completely different needs
TrainUp wasn't designed for the average user. It was designed for three very specific people the fitness industry keeps forgetting.
TrainUp wasn't designed for the average user. It was designed for three very specific people the fitness industry keeps forgetting.
Alex, 30 — Full-time worker Fitness enthusiast
MOTIVATION
Build muscle and stay active
FRUSTRATION
Endless options, no clear starting point
CONSTRAINT
Under 30 mins · basic equipment · no gym
Sarah, 35 — Part-time retail worker, mother of two
MOTIVATION
Energy and strength to be present for her family
FRUSTRATION
Fitness plans feel complicated and hard to maintain
CONSTRAINT
Unpredictable schedule · early morning or late night only
Linda, 67 — Retired teacher, grandmother
MOTIVATION
Stay mobile and independent for her grandchildren
FRUSTRATION
Gym feels intimidating · fears injury from wrong exercises
CONSTRAINT
No gym · basic equipment · needs low-impact guidance
the PROCESS
Designing around the person, not the feature
Designing around the person, not the feature
TrainUp was not designed from the outside in — starting with aesthetics and working backward to function. Every decision started with a person, a problem, and a question: what is the simplest way to solve this?
TrainUp was not designed from the outside in — starting with aesthetics and working backward to function. Every decision started with a person, a problem, and a question: what is the simplest way to solve this?
Feature Prioritization — Subtraction as Design
Feature Prioritization — Subtraction as Design
Custom workout builders, advanced filtering, calorie tracking, meal planners, and social features. Each idea was evaluated against one question: Does this help the user work out, or does it make them think more?
The custom workout builder was cut. Giving users the ability to manually add and remove exercises introduced the same decision fatigue TrainUp was designed to eliminate. Calorie tracking was removed — not relevant to all users and directly contradicts the frictionless philosophy. Social features were cut — competition is the opposite of what Linda and Sarah need.
Every removed feature made TrainUp stronger. Subtraction was the design process.
Custom workout builders, advanced filtering, calorie tracking, meal planners, and social features. Each idea was evaluated against one question: Does this help the user work out, or does it make them think more?
The custom workout builder was cut. Giving users the ability to manually add and remove exercises introduced the same decision fatigue TrainUp was designed to eliminate. Calorie tracking was removed — not relevant to all users and directly contradicts the frictionless philosophy. Social features were cut — competition is the opposite of what Linda and Sarah need.
Every removed feature made TrainUp stronger. Subtraction was the design process.
Custom workout builders, advanced filtering, calorie tracking, meal planners, and social features. Each idea was evaluated against one question: Does this help the user work out, or does it make them think more?
The custom workout builder was cut. Giving users the ability to manually add and remove exercises introduced the same decision fatigue TrainUp was designed to eliminate. Calorie tracking was removed — not relevant to all users and directly contradicts the frictionless philosophy. Social features were cut — competition is the opposite of what Linda and Sarah need.
Every removed feature made TrainUp stronger. Subtraction was the design process.
Onboarding — The Personalization Engine
Onboarding — The Personalization Engine
Seven screens. One question each. No overwhelm.
Seven screens. One question each. No overwhelm.

Before a user sees a single workout, TrainUp learns exactly who they are. Goal, fitness level, available time, equipment, training frequency, preferred days, and reminder preferences — captured one question at a time through progressive disclosure.
One question per screen was a deliberate decision. A single form with seven fields would have felt like a gym intake form — clinical, intimidating, easy to abandon. One question per screen feels like a conversation.
Every screen includes a Skip option. The user is never forced to answer. Their autonomy is respected from the first tap — because an app that respects you before you've even started is an app you trust.
The final screen — "You're all set! We've built a personalized workout experience just for you" — is the payoff moment. Seven questions answered, one promise delivered. The anxiety of starting is replaced with confidence before the home screen ever loads.
Before a user sees a single workout, TrainUp learns exactly who they are. Goal, fitness level, available time, equipment, training frequency, preferred days, and reminder preferences — captured one question at a time through progressive disclosure.
One question per screen was a deliberate decision. A single form with seven fields would have felt like a gym intake form — clinical, intimidating, easy to abandon. One question per screen feels like a conversation.
Every screen includes a Skip option. The user is never forced to answer. Their autonomy is respected from the first tap — because an app that respects you before you've even started is an app you trust.
The final screen — "You're all set! We've built a personalized workout experience just for you" — is the payoff moment. Seven questions answered, one promise delivered. The anxiety of starting is replaced with confidence before the home screen ever loads.
The Home Screen — A Behavioral System
The Home Screen — A Behavioral System

Workout Library & Filters — Power When You Need It
Workout Library & Filters — Power When You Need It
The workout library gives users full access to every workout in the app. But access without structure creates the same overwhelm TrainUp was built to eliminate.
A smart filter system lets users narrow workouts by duration, equipment, goal, and level — independently of what they set during onboarding. Life changes daily. Alex has 45 minutes on Saturday but 15 on Tuesday. Sarah's baby slept badly — she needs something lighter. Linda's knee hurts — she needs to filter out lower body workouts.
The workout library gives users full access to every workout in the app. But access without structure creates the same overwhelm TrainUp was built to eliminate.
A smart filter system lets users narrow workouts by duration, equipment, goal, and level — independently of what they set during onboarding. Life changes daily. Alex has 45 minutes on Saturday but 15 on Tuesday. Sarah's baby slept badly — she needs something lighter. Linda's knee hurts — she needs to filter out lower body workouts.
Filters at home = cognitive load before motivation. Filters in the library = power user feature when needed. That's progressive disclosure — the right information at the right moment.


The Workout Card — Information Architecture
The Workout Card — Information Architecture
Three data points. That's all a user needs to decide if a workout is right for them.
Time, equipment, and body area target — visible before a single tap. Everything else was deliberately excluded. Calories removed. Detailed muscle groups replaced with simple body area targets — Full Body, Upper Body, Lower Body. Clear enough for a beginner, useful enough for an experienced user.
The saved button gives users autonomy — the ability to build their own personal workout collection without disrupting the browsing flow. The goal: scan a card in three seconds and know immediately — I have time for this, I have the equipment, this is right for me.
Three data points. That's all a user needs to decide if a workout is right for them.
Time, equipment, and body area target — visible before a single tap. Everything else was deliberately excluded. Calories removed. Detailed muscle groups replaced with simple body area targets — Full Body, Upper Body, Lower Body. Clear enough for a beginner, useful enough for an experienced user.
The saved button gives users autonomy — the ability to build their own personal workout collection without disrupting the browsing flow. The goal: scan a card in three seconds and know immediately — I have time for this, I have the equipment, this is right for me.
Three seconds to confidence. That's the entire information architecture of TrainUp in one decision.
The Workout Detail — Informed Before You Start
The Workout Detail — Informed Before You Start
Before a single rep is done, the user knows exactly what they're getting into. Exercise list, equipment needed, estimated time, and goal — all visible before committing.
The Start Workout button is fixed at the bottom — always visible, never rushed. The user reads, mentally prepares, and taps when ready. A deliberate moment of pause before action — intentional friction that improves the outcome.
Before a single rep is done, the user knows exactly what they're getting into. Exercise list, equipment needed, estimated time, and goal — all visible before committing.
The Start Workout button is fixed at the bottom — always visible, never rushed. The user reads, mentally prepares, and taps when ready. A deliberate moment of pause before action — intentional friction that improves the outcome.
Informed users are confident users.


The Workout Screen — Designed for Physical Context
The Workout Screen — Designed for Physical Context
Most app screens are designed for someone sitting at a desk. This screen was designed for someone on a yoga mat, in a backyard, or in a living room with a baby nearby. Phone on the floor. Hands sweaty. Sun hitting the screen.
Every decision came from that physical reality.
Most app screens are designed for someone sitting at a desk. This screen was designed for someone on a yoga mat, in a backyard, or in a living room with a baby nearby. Phone on the floor. Hands sweaty. Sun hitting the screen.
Every decision came from that physical reality.
Designed for the context, not the ideal scenario.
The Cancel Modal — Ethical UX
The Cancel Modal — Ethical UX
When a user tries to stop a workout, most apps use guilt. "Are you sure you want to quit?" "You're so close!" Dark patterns disguised as motivation.
TrainUp's cancel modal says: "Break time... or one more rep? 🔥" Two options. Keep Going or Stop Workout. No shame. No manipulation.
The user's choice is respected — with a gentle challenge, not a guilt trip.
When a user tries to stop a workout, most apps use guilt. "Are you sure you want to quit?" "You're so close!" Dark patterns disguised as motivation.
TrainUp's cancel modal says: "Break time... or one more rep? 🔥" Two options. Keep Going or Stop Workout. No shame. No manipulation.
The user's choice is respected — with a gentle challenge, not a guilt trip.
An app that respects you when you're struggling is an app you come back to.


Workout Complete — The Reward Loop
Workout Complete — The Reward Loop
Every behavioral system needs a reward moment. The workout complete screen closes the loop.
Active time, streak count, and one encouraging message — "Consistency wins. Great work today." Not calories burned. Not percentage completed. Just — you showed up, you finished, that matters.
A direct path to the progress screen keeps the momentum going for users who want to track their journey.
Every behavioral system needs a reward moment. The workout complete screen closes the loop.
Active time, streak count, and one encouraging message — "Consistency wins. Great work today." Not calories burned. Not percentage completed. Just — you showed up, you finished, that matters.
A direct path to the progress screen keeps the momentum going for users who want to track their journey.
The reward is showing up. Everything else is secondary.
Progress Screen — Celebrating Consistency
Progress Screen — Celebrating Consistency
Not all users are motivated by performance metrics. Some just need to see that they're showing up.
The monthly calendar with flame icons connects directly to the home screen streak system — one consistent visual language across the entire app. Milestone messages celebrate consistency over performance.
Linda doesn't need to know her heart rate. She needs to know she's doing it.
Not all users are motivated by performance metrics. Some just need to see that they're showing up.
The monthly calendar with flame icons connects directly to the home screen streak system — one consistent visual language across the entire app. Milestone messages celebrate consistency over performance.
Linda doesn't need to know her heart rate. She needs to know she's doing it.
Consistency celebrated. Performance optional.


Empty States — The Details That Show Maturity
Empty States — The Details That Show Maturity
Empty states are where most apps give up. A blank screen with no guidance is a dead end.
The Saved Workouts empty state has a barbell illustration, a friendly message, and a single CTA — "Browse Workouts." A dead end becomes a discovery moment. The user is never stranded.
Empty states are where most apps give up. A blank screen with no guidance is a dead end.
The Saved Workouts empty state has a barbell illustration, a friendly message, and a single CTA — "Browse Workouts." A dead end becomes a discovery moment. The user is never stranded.
The details nobody notices are the details that make everything feel right.
the PIVOT
When the right color was the wrong choice.
When the right color was the wrong choice.
The original primary color for TrainUp was orange. It communicated energy, warmth, and motion — exactly right for a fitness brand. It felt alive. It felt like movement.
Then came the accessibility audit.
A WCAG contrast check revealed a critical failure. Orange buttons with white text scored 2.02:1 — far below the minimum 4.5:1 required for WCAG AA compliance. Not just a number on a screen — a real failure for users in real physical contexts. Sunlight glare. Screen brightness outdoors. Users with visual impairments.
TrainUp was designed for everyone. A color that excludes anyone contradicts everything the product stands for.
The original primary color for TrainUp was orange. It communicated energy, warmth, and motion — exactly right for a fitness brand. It felt alive. It felt like movement.
Then came the accessibility audit.
A WCAG contrast check revealed a critical failure. Orange buttons with white text scored 2.02:1 — far below the minimum 4.5:1 required for WCAG AA compliance. Not just a number on a screen — a real failure for users in real physical contexts. Sunlight glare. Screen brightness outdoors. Users with visual impairments.
TrainUp was designed for everyone. A color that excludes anyone contradicts everything the product stands for.

The solution was Deep Blue-Grey — #36454F. Professional, calm, and strong. White text on Deep Blue-Grey scores 9.90:1 — WCAG AAA. The highest possible rating.
Orange didn't disappear. It became the accent color — used for highlights, streaks, and energy moments throughout the app. It still communicates warmth and motion. It just no longer carries the responsibility of accessibility.
Function overruled aesthetics. The best design decision in the project wasn't adding something — it was changing it.
The solution was Deep Blue-Grey — #36454F. Professional, calm, and strong. White text on Deep Blue-Grey scores 9.90:1 — WCAG AAA. The highest possible rating.
Orange didn't disappear. It became the accent color — used for highlights, streaks, and energy moments throughout the app. It still communicates warmth and motion. It just no longer carries the responsibility of accessibility.
Function overruled aesthetics. The best design decision in the project wasn't adding something — it was changing it.
the solution
The finished product
The finished product
Every decision made throughout this process — the research, the personas, the pivot, the features that didn't make it — led here.
A fitness app that meets people exactly where they are. No gym required. No experience needed. No guesswork.
View Prototype


the ecosystem
One brand. Three products. One experience.
One brand. Three products. One experience.
Most portfolio projects are a single deliverable. TrainUp is three connected products designed to work as one system.
Most portfolio projects are a single deliverable. TrainUp is three connected products designed to work as one system.
The Connection
The Brand Identity is the visual foundation — every color, every typeface, every design decision in both the app and the store flows from it. It's not three separate projects that happen to share a name. It's one product ecosystem with three entry points.
The Brand Identity is the visual foundation — every color, every typeface, every design decision in both the app and the store flows from it. It's not three separate projects that happen to share a name. It's one product ecosystem with three entry points.
How They Work Together
A user downloads TrainUp and starts working out at home. Over time they want better equipment — the store is the natural next step, organized around the same goals the app already knows about them.
A user discovers TrainUp through the store. The app is the natural next step. One product leads to the other. The ecosystem retains users that either product alone would lose.
A user downloads TrainUp and starts working out at home. Over time they want better equipment — the store is the natural next step, organized around the same goals the app already knows about them.
A user discovers TrainUp through the store. The app is the natural next step. One product leads to the other. The ecosystem retains users that either product alone would lose.
The Visual System
Every touchpoint — app, store, brand identity — shares the same color system, typography, and design language. A user moving between the app and the store never feels like they've left. That's not a coincidence. That's a design system doing its job.
Every touchpoint — app, store, brand identity — shares the same color system, typography, and design language. A user moving between the app and the store never feels like they've left. That's not a coincidence. That's a design system doing its job.
This is what product thinking looks like at a systems level.


the REFLECTION
What TrainUp taught me
What TrainUp taught me
What I'm Most Proud Of
What I'm Most Proud Of
The restraint.
TrainUp could have been overwhelming. The feature list started long — custom workout builders, social features, calorie tracking, meal planners. Every single one was cut, not because it wasn't interesting, but because it didn't serve the person using the app.
The question I kept asking wasn't "would this be cool?" It was "would I actually use this? Would Sarah? Would Linda?" Features that couldn't answer yes were removed.
Every element earns its place. Nothing exists for decoration. Everything exists because a real person needed it.
TrainUp could have been overwhelming. The feature list started long — custom workout builders, social features, calorie tracking, meal planners. Every single one was cut, not because it wasn't interesting, but because it didn't serve the person using the app.
The question I kept asking wasn't "would this be cool?" It was "would I actually use this? Would Sarah? Would Linda?" Features that couldn't answer yes were removed.
Every element earns its place. Nothing exists for decoration. Everything exists because a real person needed it.
What I'd Do Differently
What I'd Do Differently
The onboarding flow was the decision I was least certain about.
Seven questions felt like the right number — enough to personalize the experience without overwhelming the user before they've even started. But that decision was based on instinct, not validated data.
Would a first-time user abandon the app at question four? Would Linda feel intimidated? Would Alex skip the whole thing to get to the workouts faster?
Without real users moving through that flow, every onboarding decision was an educated assumption. If I could go back, I would have tested the onboarding with five real people before building anything else.
The onboarding flow was the decision I was least certain about.
Seven questions felt like the right number — enough to personalize the experience without overwhelming the user before they've even started. But that decision was based on instinct, not validated data.
Would a first-time user abandon the app at question four? Would Linda feel intimidated? Would Alex skip the whole thing to get to the workouts faster?
Without real users moving through that flow, every onboarding decision was an educated assumption. If I could go back, I would have tested the onboarding with five real people before building anything else.
What's Next
If TrainUp were a real funded product, the first move would be simple — get it into real hands as fast as possible.
A free MVP with ads. Not because the design is unfinished, but because no amount of solo design thinking replaces hundreds of users with completely different goals, fitness levels, and lives.
Real feedback drives real iterations. That's how a good product becomes a great one.
If TrainUp were a real funded product, the first move would be simple — get it into real hands as fast as possible.
A free MVP with ads. Not because the design is unfinished, but because no amount of solo design thinking replaces hundreds of users with completely different goals, fitness levels, and lives.
Real feedback drives real iterations. That's how a good product becomes a great one.
TrainUp started as a personal problem. It became a product designed for everyone the fitness industry keeps forgetting. That's still the mission.