One design system feeding a new product on web and mobile

Role
Senior Product Designer
Year
2024
Tags
Design system, Tokens, Web, Mobile
Amina is a regulated bank operating where traditional finance meets crypto. A new product was being built for both web and mobile. It needed a system underneath it that could keep up as the product grew.
Problem

A new product on two platforms and nothing underneath it

We were building a new product for web and mobile and had to design a system that would scale as the product and feature sets expanded.

There was no system in place before this. Two platforms being built at once, with no shared foundation, is how the same component ends up drawn twice and drifts apart by the third release.

Approach

One foundation, two kits

Rather than build a web system and a mobile system, we built one foundations layer and had both platforms consume it. Anything universal lives once, at the bottom. Anything genuinely platform specific lives in the kit that needs it.

Foundations

Shared foundational elements used across the web and mobile design systems

Web Kit

Amina design system for web

Mobile Kit

Amina design system for mobile

Foundations

What sits at the bottom

Rules
Artwork
Colours
Icons
Misc icons
Effect styles
Spacing, radius and grids
Breakpoints

The colour work is where the most care went. Every step of every ramp carries its contrast rating, so the person picking a colour can see whether it clears AA or AAA without leaving the file. Greys are split into separate light and dark ramps rather than one ramp reused, because a grey that reads well on white does not read well on near-black.

The primary colour documentation, showing base, grey light mode, grey dark mode, brand, error, warning and success ramps, each step labelled with its hex value and an AA or AAA contrast rating
The colour ramps. Every step carries its hex value and its contrast rating.
The icon library, a multi-column grid of named line icons
The icon library, every icon named so it can be asked for by name.
Breakpoint documentation showing the same account screen rendered at small, medium and large widths
Breakpoints, documented against a real screen rather than in the abstract.
The artwork and marketing illustration set, with 3D shapes, crypto token marks and balance, staking and rewards cards
The artwork set, which carries the crypto side of the brand.

Breakpoints start at 360px, so the system is mobile first by definition rather than by intention.

Approach

Two kits on top

Web Kit

The web side

Buttons, badges, tags, dropdowns, inputs, controls, navigations, avatars, tooltips and typography. Every interactive component is drawn across its full state range, so default, hover, active, disabled and loading are decided once rather than improvised per feature.

Typography is Inter across four weights, with the scale documented down from Display 2xl, each step carrying its size, line height and tracking.

The web button matrix, five sizes across, showing default, hover, active, disabled and loading states for filled and outlined variants
Buttons, at five sizes and across every state including loading.
The web input matrix, covering email, phone number with country selector, amount with currency selector and website fields, in rest, hover, focus, filled, disabled and error states
Inputs, with hint and error slots designed in rather than added later.
Tag and chip variants with avatars, dismiss actions, counts and checkbox prefixes
Tags and chips, with avatars, counts and dismiss actions.
The typography specimen, showing Inter in regular, medium, semibold and bold with the display scale annotated
The type specimen. Inter, four weights, each step annotated with its size, line height and tracking.
Mobile Kit

The mobile side

Buttons, drawers, controls, feature screens, input fields, keyboards, list items, navigation and typography. The mobile kit carries things the web kit has no use for, keyboards and feature screen templates among them, which is the argument for two kits rather than one set stretched across both.

The mobile button matrix, with primary, secondary, tertiary, ghost and link variants across default, pressed and disabled states
Mobile buttons, with pressed in place of hover.
Mobile input fields including phone number, amount and card number, with error states
Mobile inputs, including the card number and amount fields the product needed.
Navigation bar variants, each with a back action, a title treatment and a trailing label and bell icon
Navigation bars, one per title treatment, so the header is never rebuilt per screen.
Feature screen templates with a centred icon, heading, body copy and a bottom anchored primary action
Feature screen templates, for the moments that are one message and one action.
Solution

Two layers of colour, not one

We implemented colour variables and tokens to build a scalable and theme-able design system. By defining a structured approach to colour management, we ensured consistency across all products while allowing for easy updates and customisation.

The structure is what makes it work. Raw values live in one collection, _Primitives, which holds every step of every ramp as a hex value and nothing else. A second collection, 1. Color modes, holds the semantic tokens: text-primary, text-placeholder, text-error-primary and the rest. Each semantic token maps to a light mode primitive and a dark mode primitive.

A component never references a hex value. It references a role. The mode decides what that role resolves to. That is why light and dark are the same components rather than two sets. It is also why a rebrand or a new mode is a change to one layer rather than a sweep through every screen.

The primitives collection in Figma, listing raw colour values grouped into base, grey light mode, grey dark mode, brand and status ramps
The primitives layer. Raw values, no meaning attached.
The colour modes collection in Figma, showing semantic tokens such as text-primary and text-placeholder mapped to a light mode and a dark mode value
The semantic layer. Each role resolves to one primitive in light and another in dark.
In use

The same screen, both modes

This system not only simplified collaboration between design and engineering but also enabled seamless theming, making it easy to adapt the design for different brands, modes or user preferences.

The portfolio screen is the clearest proof of it. Cash, crypto and stocks in one list, values in CHF with Swiss formatting, gains and losses carrying the semantic colours. One component set, two modes, no duplication.

The portfolio screen in light mode, showing total assets in Swiss francs with cash and crypto holdings grouped by allocationLight
The same portfolio screen in dark mode, with identical structure and contentDark
The portfolio screen in light and dark. The same components, resolved through a different mode.
Outcome

Adopted in full, by both teams

There was no system before this one.

100% adoption
The system was taken up in full by both the design and the engineering teams, rather than sitting alongside the old way of working.
Streamlined design and engineering
One shared language between the two disciplines and one place to change something rather than several.
Built to scale
The foundations plus kits structure meant new features and new platforms extended the system instead of forking it.

Testimonials

Working with Khayam has been a pleasure. He’s one of the most proactive designers I’ve worked with, always stepping up to take ownership of challenges. Khayam led our design system, defined mobile-first patterns, and ensured best practices in highly regulated areas like crypto banking. He creates thoughtful, user-first solutions, tells compelling design stories, and consistently brings attention to detail. His ability to work autonomously in complex environments and his deep understanding of design thinking made him a major asset to our team. I highly recommend Khayam as a top-tier product designer.

Frédéric BerghmansHead of Product Design, Amina Bank