HEYJUNIOR DESIGN SYSTEM · 2026

The app wasn't short on features. It was short on consistency students could rely on.
A design system that turned every screen into one dependable visual language.

Product Designer · Design System · Foundations to 50 variants in 2 weeks · Solo

Project Overview

Giving students an app that looks as reliable as the information inside it

HeyJunior is where KL University students check their timetable, grades, attendance and campus events. When an app holds your SGPA, every mismatched button or random colour raises a quiet doubt: is this right? I designed the HeyJunior Design System so that every screen looks and behaves the same way. That consistency is what makes students trust what they're reading.

Impact: One visual language across every student-facing screen. 459 tokens. Accessible defaults built into every component.

Problem

Every new screen was adding its own rules

HeyJunior grew one feature at a time, and each new screen brought its own colours, spacing and button styles. None of it was wrong on its own, but together the app felt stitched together. For a student checking exam dates or grades, an app that looks inconsistent feels like an app that might also get the facts wrong.

The same action looked different on different screens. Buttons and cards changed style from page to page.

Colours had no meaning. Tile colours were picked screen by screen, not by role.

There was no shared foundation. Every new screen started from zero, which slowed design down.

  1. Every screen wasn't broken. Every screen was just built on its own rules.

  1. Students weren't confused by the content. They were unsettled by the inconsistency.

  1. Red and green become categories, breaking students' learned Mental model

Approach

Methodology

Every choice was tested against one question: does this make the app feel more dependable?

Build tokens before components. The tokens follow a Brand → Alias → Mapped structure

Components only use Mapped tokens. That means the whole palette can change without touching a single component.

Atomic Design Methodology

Atoms hold the foundation styles of the system: colours, fonts, spacing and icons. They're the reference point for building and managing every visual element and component in HeyJunior.

Components

Built once, used everywhere

Components are built atom by atom, then combined into larger patterns

Buttons: 3 types × 4 states, 12 variants.

Icon buttons: 12 variants, each with an accessible name.

Selection: toggle and checkbox.

Forms: label plus field, across default, filled and error.

Navigation bar: 4 destinations.

Every component has its default, hover, focus and disabled states designed, so nothing behaves unexpectedly for students.

Impact

When every screen speaks the same language, students stop second-guessing it


459 variables across 6 collections.

171 primitives distilled into 32 semantic tokens.

8 components and 50 variants.

28 icons.


New screens are now assembled from existing parts instead of designed from scratch. The result I value most isn't the token count. It's that the app now looks as dependable as the grades and timetables it holds.

Learning

What I'd do differently, and what's next

Naming is documentation. Clear token names matter as much as the values behind them. Next time I'd lock naming rules on day one.

Close the loop with code. Syncing tokens with development would keep design and build from drifting apart.

Users never notice a consistent app. They only notice when it isn't.

Built to scale. Designed to be trusted.

STATUS

Experience designer

cheering on Mumbai Indians

Next stop : Loch lomond

CREDITS

Copyright © 2026.

Designed with love

Thanks for visiting