Built a design system from scratch

Product Design

Design System

Web

Built a design system from scratch for a new project, ensuring consistency, scalability and accelerating development by 40%.

Built a design system from scratch

Product Design

Design System

Web

Built a design system from scratch for a new project, ensuring consistency, scalability and accelerating development by 40%.

Built a design system from scratch

Product Design

Design System

Web

Built a design system from scratch for a new project, ensuring consistency, scalability and accelerating development by 40%.

Built a design system from scratch

Product Design

Design System

Web

Built a design system from scratch for a new project, ensuring consistency, scalability and accelerating development by 40%.

preview of design system components

My role

I single-handedly designed and built the design system from scratch for a new project. I continue to expand the component library, ensuring consistency, scalability and efficiency in the design and development process.

Skills applied

Design System, Advanced Figma Components, Guidelines and Documentation, UX Design, Visual Design.

Project type

Design system

Industry

Fintech

Duration

Avg 2024 – currently improving

preview of design system components

My role

I single-handedly designed and built the design system from scratch for a new project. I continue to expand the component library, ensuring consistency, scalability and efficiency in the design and development process.

Skills applied

Design System, Advanced Figma Components, Guidelines and Documentation, UX Design, Visual Design.

Project type

Design system

Industry

Fintech

Duration

Avg 2024 – currently improving

preview of design system components

My role

I single-handedly designed and built the design system from scratch for a new project. I continue to expand the component library, ensuring consistency, scalability and efficiency in the design and development process.

Skills applied

Design System, Advanced Figma Components, Guidelines and Documentation, UX Design, Visual Design.

Project type

Design system

Industry

Fintech

Duration

Avg 2024 – currently improving

preview of design system components

My role

I single-handedly designed and built the design system from scratch for a new project. I continue to expand the component library, ensuring consistency, scalability and efficiency in the design and development process.

Skills applied

Design System, Advanced Figma Components, Guidelines and Documentation, UX Design, Visual Design.

Project type

Design system

Industry

Fintech

Duration

Avg 2024 – currently improving

Background

Criffy is a crypto earning offers aggregator – an online service that collects and displays passive income opportunities (such as staking, savings, and lending) from cryptocurrency exchanges and DeFi projects.

When I joined the project, the startup had a simple website that was quickly put together to test market interest. As the product evolved, it was time to build a full-fledged service with a completely new visual identity. After reviewing the project and its growth plans, I realized that the first step should be creating a design system. This would ensure consistency from the very beginning, speed up development and make scaling much easier.

Scope and consideration

A design system is much more than a set of well-matched colors, fonts, grids, and neatly assembled components that work like building blocks. It defines how users perceive the product and sets the tone for communication with them.

My biggest challenge was that, as the sole designer on the project, I had to simultaneously work on the UX of the redesigned service. This meant that I had to start with an MVP version of the design system, which would gradually expand as new use cases emerged.

MVP plan:

  • Defining the foundations: colors, typography, grids, spacing and effects

  • Defining the foundations: colors, typography, grids, spacing and effects

  • Defining the foundations: colors, typography, grids, spacing and effects

  • Building the most commonly used basic components: buttons, inputs, checkboxes, radio buttons, table cells, etc.

  • Building the most commonly used basic components: buttons, inputs, checkboxes, radio buttons, table cells, etc.

  • Building the most commonly used basic components: buttons, inputs, checkboxes, radio buttons, table cells, etc.

  • Creating frequently used UI components for existing user flows: search and filter blocks, navigation elements, dropdowns, etc.

  • Creating frequently used UI components for existing user flows: search and filter blocks, navigation elements, dropdowns, etc.

  • Creating frequently used UI components for existing user flows: search and filter blocks, navigation elements, dropdowns, etc.

  • Developing large structural components: header, footer, tables, etc.

  • Developing large structural components: header, footer, tables, etc.

  • Developing large structural components: header, footer, tables, etc.

  • Establishing tone of voice and illustration style

  • Establishing tone of voice and illustration style

  • Establishing tone of voice and illustration style

Foundations

1. Color

The color palette was based on the brand’s primary colors, neutral grays, and secondary accent colors. Each color had a base shade defined using the HSL model (Saturation 100, Lightness 50), and from there, I created a range of shades to ensure proper contrast.

Why such a broad color palette? While not all colors would be used in the core interface, they could be useful for illustrations and marketing materials. Having a consistent palette across the entire product ecosystem helps maintain a unified visual identity.

color palette
color palette
color palette

Color palette

2. Grid and spacing

A grid is essential for structured projects with a lot of data and tables. I chose a standard 4px-based grid with either 12 or 6 columns, depending on the breakpoint. Spacing between elements also followed a 4px scale for consistency.

grid and spacings example
grid and spacings example
grid and spacings example

Example of grid for breakpoint L and 2XS

3. Typography

I chose “Inter” as the primary font for several reasons: it’s clean, highly readable and supports a wide range of styles, weights and languages. This was especially important for the project, which required localization into 9 languages, including Chinese.

To ensure optimal scalability, I divided breakpoints into 3 groups and created a set of text styles for each, using a progressive scaling approach based on a base font size.

typography example
typography example
typography example

Example of text styles for LMS breakpoints

Components

Next, I started building the design system components using Atomic Design principles, where simple elements are combined into more complex ones.

  • Atoms: Basic UI elements like buttons, checkboxes and input fields.

  • Atoms: Basic UI elements like buttons, checkboxes and input fields.

  • Atoms: Basic UI elements like buttons, checkboxes and input fields.

  • Molecules: Combinations of atoms, such as a search bar with an input field and button.

  • Molecules: Combinations of atoms, such as a search bar with an input field and button.

  • Molecules: Combinations of atoms, such as a search bar with an input field and button.

  • Organisms: Larger components made of multiple molecules, like tables and pop-ups.

  • Organisms: Larger components made of multiple molecules, like tables and pop-ups.

  • Organisms: Larger components made of multiple molecules, like tables and pop-ups.

checkbox component nested in dropdown item component, that nested in dropdown component
checkbox component nested in dropdown item component, that nested in dropdown component
checkbox component nested in dropdown item component, that nested in dropdown component

Example of nested components development

1. Component principles

Before diving into component creation, I defined a few key principles to follow:

Accessibility

Ensuring proper contrast and touch-friendly target sizes, especially for mobile devices.

Accessibility

Ensuring proper contrast and touch-friendly target sizes, especially for mobile devices.

Accessibility

Ensuring proper contrast and touch-friendly target sizes, especially for mobile devices.

State variability

Covering all possible states of a component, including error, empty and loading states.

State variability

Covering all possible states of a component, including error, empty and loading states.

State variability

Covering all possible states of a component, including error, empty and loading states.

Consistency

Maintaining harmony in form and size while making sure components work well together. Using templates for similar pages and sections.

Consistency

Maintaining harmony in form and size while making sure components work well together. Using templates for similar pages and sections.

Consistency

Maintaining harmony in form and size while making sure components work well together. Using templates for similar pages and sections.

Rationality

Before adding a new component, evaluating if an existing one could serve the same purpose.

Rationality

Before adding a new component, evaluating if an existing one could serve the same purpose.

Rationality

Before adding a new component, evaluating if an existing one could serve the same purpose.

component principles examples
component principles examples
component principles examples

Examples of application of principles

Each component was built using auto-layouts and a predefined spacing system. As new use cases appeared, I iteratively refined and improved components.

blog card component with spacings
blog card component with spacings
blog card component with spacings

Example of a blog article card component

2. Templates

To maintain consistency, I created templates for similar pages and sections. This not only sped up the design and development process but also improved the user experience by providing familiar patterns across the interface.

template and pages based on this template
template and pages based on this template
template and pages based on this template

Example of page template

Tone of voice

Tone of voice plays a crucial role in how a product communicates with users. If a design system defines a product’s appearance and structure, its tone of voice defines its personality.

Criffy’s users are young people interested in modern technology and finance, actively exploring new crypto investment opportunities. I chose a friendly, relaxed, yet still respectful tone, like a knowledgeable and approachable friend who’s always ready to help.

Criffy's tone of voice description: more casual, between serious and funny, more respectful, more enthusiastic
Criffy's tone of voice description: more casual, between serious and funny, more respectful, more enthusiastic
Criffy's tone of voice description: more casual, between serious and funny, more respectful, more enthusiastic

Tone-of-voice dimensions

Once the tone of voice was set, it was important to maintain it across all touchpoints, from emails and error messages to social media posts.

examples of tone of voice usage: popup, email, form
examples of tone of voice usage: popup, email, form
examples of tone of voice usage: popup, email, form

Examples of tone-of-voice use

Illustrations

Illustrations are another way to convey a brand’s values and voice. That’s why I consider the definition of illustration style to be a part of the design system.

Simplicity is one of Criffy’s key values, so I chose a minimalistic style using clean lines, simple shapes and a limited color palette. This ensured that illustrations complemented the black-and-white UI while adding visual accents where needed.

image of open door with flying crypto icons. Image of the UFO stealing the envelope letter
image of open door with flying crypto icons. Image of the UFO stealing the envelope letter
image of open door with flying crypto icons. Image of the UFO stealing the envelope letter

Examples of illustrations

Development

With the design system in place, developers built a component library, significantly speeding up the release of new features.

"The Design System helped designer and developers create interfaces using standardized components instead of designing each screen from scratch. This made the development process faster and more efficient. While developers worked on logic, component updates from the Design System automatically applied across the product."

Bulat Yarkiev

Full-stack Developer at Criffy

"The Design System helped designer and developers create interfaces using standardized components instead of designing each screen from scratch. This made the development process faster and more efficient. While developers worked on logic, component updates from the Design System automatically applied across the product."

Bulat Yarkiev

Full-stack Developer at Criffy

"The Design System helped designer and developers create interfaces using standardized components instead of designing each screen from scratch. This made the development process faster and more efficient. While developers worked on logic, component updates from the Design System automatically applied across the product."

Bulat Yarkiev

Full-stack Developer at Criffy

Results

The design system played a key role in speeding up the launch of the new service version, even though its impact became fully visible over time.

  • Reusing components and design patterns sped up time-to-market for new features, benefiting both designers and developers.

  • Reusing components and design patterns sped up time-to-market for new features, benefiting both designers and developers.

  • Reusing components and design patterns sped up time-to-market for new features, benefiting both designers and developers.

  • The design system ensured consistency across the entire product.

  • The design system ensured consistency across the entire product.

  • The design system ensured consistency across the entire product.

Next steps

I continue evolving the design system and have identified key areas for improvement:

  • Refining typography styles. Some text styles from the MVP phase turned out to be unnecessary and should be removed.

  • Refining typography styles. Some text styles from the MVP phase turned out to be unnecessary and should be removed.

  • Refining typography styles. Some text styles from the MVP phase turned out to be unnecessary and should be removed.

  • Reorganizing the component library. As the number of components grows, managing them in a single file has become inefficient. Splitting them into separate files will improve maintainability.

  • Reorganizing the component library. As the number of components grows, managing them in a single file has become inefficient. Splitting them into separate files will improve maintainability.

  • Reorganizing the component library. As the number of components grows, managing them in a single file has become inefficient. Splitting them into separate files will improve maintainability.

  • Implementing design tokens. Adopting this modern approach to managing design systems will streamline future updates.

  • Implementing design tokens. Adopting this modern approach to managing design systems will streamline future updates.

  • Implementing design tokens. Adopting this modern approach to managing design systems will streamline future updates.

Takeaways

Start small and scale

A design system can seem overwhelming at first, but starting with a minimal set of essential components allows for gradual expansion. This approach is especially effective when building design system from scratch rather than creating it for an existing product.

Start small and scale

A design system can seem overwhelming at first, but starting with a minimal set of essential components allows for gradual expansion. This approach is especially effective when building design system from scratch rather than creating it for an existing product.

Design system is an ongoing project

A design system requires continuous maintenance, iteration and improvement. As long as the main product evolves, the design system must evolve alongside it.

Design system is an ongoing project

A design system requires continuous maintenance, iteration and improvement. As long as the main product evolves, the design system must evolve alongside it.

Takeaways

Start small and scale

A design system can seem overwhelming at first, but starting with a minimal set of essential components allows for gradual expansion. This approach is especially effective when building design system from scratch rather than creating it for an existing product.

Design system is an ongoing project

A design system requires continuous maintenance, iteration and improvement. As long as the main product evolves, the design system must evolve alongside it.

  • Let's connect.

khristina.kuklina@gmail.com

Khristina Kuklina ©️ 2025

  • Let's connect.

khristina.kuklina@gmail.com

Khristina Kuklina ©️ 2025

  • Let's connect.

khristina.kuklina@gmail.com

Khristina Kuklina ©️ 2025

  • Let's connect.

khristina.kuklina@gmail.com

Khristina Kuklina ©️ 2025