TotallyMoney Momentum design system

Momentum design system

Building a design system from a place of confusion

In-house at TotallyMoney  |  My role: Principal UI Designer

At the time I first joined TotallyMoney, there was an intention to build a design system but few foundations had been laid. There were a couple of disjointed and incomplete Sketch UI library files and an unrelated selection of components in Storybook.

One of my first tasks upon starting my new job was to conduct a UI audit. I discovered that the product had grown organically and as such was full of inconsistencies. There were at least 40 text styles, and multiple versions of each of the palette colours. As a result, it was hugely confusing to work on the product. There was a clear requirement for a robust design system.


Baby steps

The company was still using Sketch at the time. My initial aim was to create a single strong, efficient, more comprehensive UI library file. I set up a completely new structure, based on Brad Frost's atomic principles.

I started with the most basic foundations: the palette, typography, grids, buttons and icons.

At the beginning, the new UI library was universal, covering both the web and native apps. This would change when the Future Vision project focused on the native app first – more on this later.

The images below are screenshots from the Figma libraries, and the Zeroheight buttons are not clickable.

Part of the product palette

The core product palette

Colour icons from the shared UI library

Colour icons from the shared UI library

Product icons from the shared UI library

Product icons from the shared UI library

Move to Figma

In the summer of 2020 the design team moved from Sketch to Figma, to facilitate a more collaborative way of working. This decision transpired to be hugely beneficial. I leveraged Figma's excellent 'variants' feature to reduce the overall number of components and make the UI library easier to consume.

I then started to think about how the design and engineering teams could come together to build a proper design system.


Establishing a guild

I set up a Design System Guild comprising designers and engineers who had an interest in improving and bringing order to our product. To kick this off, and gain exposure for the new guild, I facilitated a workshop in which we all considered what we felt the design system should be. This was extremely useful in engaging the right people, and from it came a team who would initially meet fortnightly.

In addition to the main guild, we soon established a core group of four representatives from web engineering, native engineering, product design (myself) and creative design. We were given the time and space to work out the nuts and bolts of our new system, giving life to the decisions made by the wider guild. We figured out ways to align our Figma UI library and Storybook component libraries, and agreed on shared priorities. After some deliberation we chose Zeroheight as the platform that we would use to tie together the loose ends of our nascent design system and provide appropriate documentation for its consumers.

An accessibility documentation page on the Zeroheight platform

An accessibility documentation page on the Zeroheight platform

Top of the border radius documentation page on the Zeroheight platform

Top of the border radius documentation page

Part of the documentation for typography in the native app

Part of the documentation for typography in the native app


Creating dedicated libraries

At the same time as the design system started to take shape, my work on the Future Vision project was accelerating. This concentrated initially on the native app, and resulted in a raft of new styles and patterns being created. The single unified UI library I had set up, shared between the web and native apps, now became difficult to maintain. I saw a need to break the library into three: shared foundations, web app and native app.


Some example artefacts

A selection of components from the native app UI library

A selection of components from the native app UI library

Badges and labels from the shared UI library

Badges and labels from the shared UI library

Top navigation and tab bars from the native app

Top navigation and tab bars from the native app

In-app notifications

In-app notifications for the native app

Native app templates

Native app templates

Choosing a name

To raise awareness of our new design system in the wider company, the core team of four representatives from design and engineering put together a presentation for our weekly company breakfast meeting. We explained in simple terms what a design system is, and launched a competition to come up with a name for our system. This garned unexpected levels of engagement – we ended up with more than 70 entries! Some funny, some clever, some bizarre.

A winner was chosen and the TotallyMoney Momentum design system was born. My former colleague Charlie Lewis created a logo for it, based on the clever concept of a Newton's Cradle.


Master files

In addition to the three UI libraries and their accompanying documentation, another important part of the Momentum design system was our set of master files. These contained the key screens from our web app, native app and public website experiences. I created and regularly maintained these files to act as a 'source of truth' for the live product. They were organised as a hierarchical diagram, as shown below.

The native app master file

The native app master file

Tokenisation

Improvements to Figma's tools enabled me and my colleague Aaron Krohn (an engineering lead) to design a set of tokens for our system together. We started by tokenising colours, including a full primitive set and a semantic palette that lay the foundations for a dark mode. We then moved onto spacing units, border radius and typography.

Spacing unit design tokens shown as Figma variables

Spacing unit tokens shown as Figma variables

Border radius design tokens shown as JSON

A snapshot of border radius tokens

A maturing design system

As the system matured, its tangible benefits became increasingly evident. The team saw much improved collaboration between the design and engineering teams, a much speedier workflow and a greater understanding of the way that the product is structured. There was a new focus on making the product as inclusive as possible, with huge improvements to accessibility.

As time progressed, we bore the concerns of a mature design system: when and how to deprecate old styles and components, how to include beta patterns, how to automate as many processes as possible, and so on. I performed regular 'temperature checks' with the system's consumers to ensure that it was working as well as possible for them.

In my final months at TotallyMoney, I started to explore ways in which AI could assist the growth and maintenance of the system – a subject that continues to interest me.


About me