UX Case Study

Case Study: How I built a design system for Rhino?

Building a design system is not easy, especially if you don’t have much experience. Over the years, I have found a good practice for building an effective design system using Figma, Confluence, and Storybook. Here is the know-how.

View Portfolio Shots icon
Design system

Problem

While working at Rhino, I was asked to create a design system for the entire organization. We had a style guide in Figma, which was loosely used. Each new product released to a market has a different style, colors, typography, and general look. On top of that, developers did not have one source of truth on how components should work and look.

Architecture

I started by creating three libraries on an organisational level. Design Tokens, Icons and Brand Assets.

design system architecture
Architecture of Design System at Rhino

Design Tokens

The first included Design Tokens, where I pulled all tokens related to colors, typography, radius, and spacing. Each asset has an agnostic name, so in the case of white-labeling, we would be able to easily change primary or secondary colors, for instance.

design tokens colors
Design Tokens - Colors
design tokens spacing
Design Tokens - Spacing
design tokens typography
Design Tokens - Typography

Icons

The second library contains native icons used within a product, Web3 network icons, and so on. They are all in SVG (I often had to create them from scratch in Illustrator; thankfully, the hard part is done only once). The third library contains brand assets such as logos, illustrations, etc.  

Icons library
Icons library
Coins library
Coins library

Rhino Bridge - Components

The most time-consuming part was the creation of the design components library. I created two separate Figma files because one of them supports Web App Bridge, the second on the native mobile app. To some extent, they have many components in common, but due to the platform’s requirements, they are indeed different.

Buttons in design system
Buttons in design system

Atomic Design

Following atomic design, I created components with different states (enabled, hovered, selected, disabled, focused). The list contains the following: alert, amount, avatar, badge, banner, button, calendar, checkbox, extension, empty state, footer, headline, icon, icon button, list, menu, nav bar, pagination, radio, search, select, status, stepper, switch, table, tabs, text field, toast, and tooltips. They don’t change often. You do them once, and then you have to stick to them.

Top Nav in design system
Top Nav in design system

Modules

They combined are the foundation for modules. They are organisms that change often, so they have to be documented in Confluence and Storybook. Rhino Bridge includes Bridge, Connect wallet, Fees, Send, Receive, Highlights, Portfolio, History, Processing, Request, Selecting token and network, Swap, and Sidebar. The list is extensive because of the number of A/B tests the company drives.

Modules in Design system
Modules in Design system

Rhino Wallet - Components

Rhino wallet was meant to be built on Android, so it is limited to some extent to the Material UI library (which I love). But it has all Design tokens applied in terms of colors, spacing, radius, etc.

Material UI in Design system

Building with a Design system

Building designs using a well-thought-out design system is a pure pleasure. It speeds up the creation of concepts and prototypes by weeks. It also helps developers speak the same language as designers. It is super fast, effective, consistent, and well-designed. Because the design tokens have light and dark mode established, it’s just a matter of few clicks to create a dark mode.

Light mode
Dark mode
Dark mode

The Results

Once all those libraries were established, they required documentation and versioning. Since most of the components were already built in the front end, they were easy to document in Storybook. I also created full documentation in Confluence, briefly describing each component. We used Confluence to announce updates using semantic versioning (SemVer).

Does that work? I think so. The team received dozens of compliments from front-end developers who said this was one of the most organized projects they worked on.

Case Studies

image

Case Study: AlphaWallet. Open-Source Mobile Ethereum Wallet App

AlphaWallet is an open-source Ethereum Wallet for users and businesses. I joined the team in 2019 without prior knowledge about blockchain, web3, and cryptocurrencies. I caught up very quickly. We had an established native iOS and Android app, the first TokenScript-compatible wallet. To explain, TokenScript is a programmable smart token interface. It allows token issuers…

image

Case Study: Brate. How I built a travel web app with 5M unique users?

Brate is a Polish web app that makes planning a trip easy. I founded and bootstrapped this project in 2019. Initially, it was a side project that I was developing after working hours. In 2022 it reached 1.8M unique users only in Poland (5M uu since 2019). How can a side project become one of…

image

Case Study: ChatQ. Native iOS chat app built for traders

ChatQ is a chat message app built for traders. It has the standard functionalities for chat apps with some customizable features tailored for investors. The idea came from a group of traders from Singapore that were using Telegram and Facebook Messenger to share thoughts about market trends and events. They found it very limiting in…