JRNY · Johnson Health Tech

JRNY
Color System

Auditing and rebuilding how color is used across the JRNY fitness app, fixing WCAG failures, reducing visual noise, and establishing clear rules for a more cohesive, accessible experience.

My Role

UX Designer

Status

Shipped ✓

Platform

iOS · Android · Embedded

Tools

Adobe XD · Marvel

Two JRNY tablet screens side by side showing the redesigned Just For You page with cleaned-up color usage: light blue reserved for tappable items, a green Start button, and consistent nav states.

The Short Version

The Problem

JRNY used colors inconsistently and without rules: too many colors, unclear meaning, WCAG failures on copy and buttons, and no clear distinction between tappable and non-tappable elements.

My Approach

Full color audit → identify patterns and missing rules → present findings and proposed solutions to team and stakeholders → redesign with new color rules in collaboration with a UI designer.

The Outcome

All copy and text now passes WCAG AA. Team and stakeholder feedback: the app feels cleaner, less noisy, and easier to scan, reducing frustration and improving usability.

Too many colors,
not enough meaning

When I joined the JRNY team, I noticed quickly that color usage across the app felt scattered. Colors appeared in many places, but without consistent rules, so the same color could mean different things in different parts of the app, or nothing in particular at all.

The cumulative effect was visual noise: an app that was harder to scan, harder to trust, and harder to use. And beneath the surface, there were real accessibility failures: colors that didn't pass WCAG AA contrast requirements on copy, buttons, and navigation elements.

"It wasn't always obvious what items were tappable. Color was being used decoratively rather than communicatively, which was creating confusion without anyone realizing it."

Three core problems to solve: WCAG failures on text and interactive elements, no clear affordance distinguishing tappable from non-tappable items, and no shared rules the team could refer to going forward.

A systems problem
that needed a systems fix

I led the audit and UX direction on this project, working closely with a UI designer to execute the updated designs. This wasn't a single-screen fix. It required looking at the entire app, finding every instance of color, and building a coherent system from what we found.

JRNY runs across three surfaces, each with its own constraints:

iOS & Android

  • Primary mobile experience
  • Full app functionality
  • Standard accessibility expectations

Embedded Screens

  • Built into BowFlex cardio equipment
  • Used mid-workout
  • Viewed at distance, often in motion

My Scope

  • Full color audit
  • Rule definition
  • Stakeholder buy-in
  • Updated designs

Finding every color
in every context

The audit started with a systematic sweep of the app, cataloguing every color in use, where it appeared, and what it was being used to communicate. The goal was to find patterns, identify misuse, and surface the WCAG failures.

What I found: colors were being applied based on visual preference rather than meaning. The same light blue appeared on standalone links, inside button labels, as decorative accents, and on informational text, with no consistent rule tying those uses together.

JRNY Just For You screen with workout cards, filter sliders, and a green Select button, one of the contexts audited for color usage.

Just For You

JRNY Programs tab showing rows of adaptive workout cards with brickyard graphs, audited for color usage.

Programs

JRNY in-workout screen with a large burn-rate dial, muscle map, and a bottom metrics bar, audited for color usage.

In-Workout

JRNY Journal past-workouts screen listing completed workouts with stats and a workout-profile graph, audited for color usage.

Journal

JRNY Create a New Profile form with light-blue Show/Hide links and a green Next button, audited for color usage.

Create Profile

The audit also flagged the WCAG failures: specifically contrast issues on the main CTA color (a light label on the green button) and navigation colors (red on dark blue), which didn't meet the AA minimum of 4.5:1.

WCAG contrast checker showing the main CTA (off-white text on the green button background) at a 1.78 to 1 ratio, failing AA and AAA for both normal and large text.

Main CTA · 1.78:1

WCAG contrast checker showing navigation red on the dark blue background at a 3.27 to 1 ratio, failing AA for normal text.

Navigation · 3.27:1

Patterns in
the noise

The audit surfaced four core problems, each with a clear design solution.

01

No tappability signal

Light blue was being used for both interactive and non-interactive elements, making it impossible for users to reliably distinguish what was tappable. Needed a clear, consistent rule.

02

WCAG failures on key elements

Main copy, button labels, and navigation items had contrast ratios below 4.5:1, failing AA. These were the highest-priority fixes, directly impacting readability for all users.

03

Color meaning was undefined

Purple appeared in several places but without a shared meaning. Red appeared in non-error contexts. There was no color-to-meaning mapping the team could reference when making design decisions.

04

Selected/unselected states were unclear

In navigation and filter elements, the visual distinction between selected/connected and unselected/disconnected states was inconsistent, creating confusion about the current state of the UI.

Less color, more
meaning

Working with the UI designer, we established a clear set of rules: not just a palette, but a semantic system. Every color decision now has a reason, and every team member has a shared reference point.

Light blue = standalone tappable only

Light blue is used exclusively for standalone interactive elements: standalone links and icons. If a text label and icon are bundled inside a button outline, they use white instead.

Purple = user output & effort

Purple is reserved for representing the user's own output or effort: metrics like calories burned, personal records, or performance data. It signals "this is about you."

Red = error states only

Red is strictly reserved for error states. No decorative use, no warning states, just errors. This makes red immediately meaningful and trustworthy when it appears.

White/Gray = selected/unselected states

In navigation and filter elements with connected/disconnected or selected/unselected states: white = selected or connected, gray = unselected or disconnected. Consistent across all instances.

"All text must pass WCAG AA. This became a non-negotiable baseline, not an afterthought. Every color decision goes through a contrast check before it ships."

The same screens,
cleaner

With the rules defined and stakeholder buy-in secured, I worked with the UI designer to update the designs. The changes were intentionally restrained: the goal wasn't a visual overhaul, but a clarification. Less color in more deliberate places.

Just For You. The green Select button becomes white with dark text (passing AA), and light blue is pulled back from decorative labels so it only marks tappable items. The red nav icon gives way to the white-selected / gray-unselected rule.

JRNY Just For You screen before the color update, with a green Select button, light blue labels throughout, and a red Workouts icon in the bottom navigation.

Before

JRNY Just For You screen after the color update, with a white Select button, reduced light blue usage, and white selected states in the navigation.

After

Videos. Green completion checkmarks and underlines, which implied meaning the color didn't have, become neutral white, and the red NEW badge is reserved so red can keep its error-only meaning.

JRNY Videos tab before the color update, with green checkmarks and green underlines on completed workout cards and a red NEW badge.

Before

JRNY Videos tab after the color update, with white checkmarks and underlines on completed cards and a white NEW badge.

After

Workout preview modal. The GO button moves from the failing green-and-light-text combination to a contrast-safe treatment, and the NEW badge follows the same neutral rule as the cards.

JRNY workout preview modal before the color update, with a red NEW badge and a green GO button with low-contrast text.

Before

JRNY workout preview modal after the color update, with a white NEW badge and a GO button with dark, AA-passing text.

After

Journal. The selected workout switches from a light blue fill to the white-selected rule, machine icons drop their decorative tint, and the red Journal nav icon becomes white, leaving the workout profile graph's purple to represent the user's effort, per the rules.

JRNY Journal past workouts screen before the color update, with a light blue selected workout row, blue machine icons, and a red Journal icon in the navigation.

Before

JRNY Journal past workouts screen after the color update, with a white selected workout row, neutral machine icons, and a white selected Journal icon in the navigation.

After

Cleaner, quieter,
easier to use

AA ✓

All copy and text
passes WCAG AA

5

Clear color rules
established for the team

Visual noise reduced,
easier to scan and navigate

Team and stakeholder feedback consistently described the updated app as cleaner and more pleasant to look at. Less visual noise means users can scan and find what they're looking for without frustration, a direct usability win that doesn't require a single user test to validate.

Beyond the immediate fixes, the real value is the system going forward. Every new feature, every new screen, every new designer who joins the team now has a shared color language to work from.

Design systems work
is UX work

A

Accessibility isn't a separate trackFixing WCAG failures wasn't a separate project from fixing the color system. It was the same project. When color is used with intention, accessibility follows naturally. Treating it as an audit item rather than a design principle is what causes these problems in the first place.

B

Rules are a design deliverableThe updated screens were important, but the rules were the real output. A screen can be changed. A shared, agreed-upon rule changes how every future screen gets made. That's where the long-term value lives.

C

Getting buy-in before building saves timePresenting the findings and proposed solutions to the team and stakeholders before designing the fixes meant no surprises, no rework, and genuine investment in the outcome from everyone involved.

Next Case Study

Perfect Properties