Building a Scalable Design System in Figma:
A self-initiated design system exploring scalable tokens, reusable components, and RTL-first design.

Building a Scalable Design System in Figma:
A self-initiated design system exploring scalable tokens, reusable components, and RTL-first design.

Project Overview

Type: Self-initiated / Practice Project

Role: Product Designer

Tool: Figma

Focus: Design Systems, UI Foundations, Tokens, Components, RTL

Language: Persian (RTL)

Duration: 4 weeks

Type: Self-initiated / Practice Project

Role: Product Designer

Tool: Figma

Focus: Design Systems, UI Foundations, Tokens, Components, RTL

Language: Persian (RTL)

Duration: 4 weeks

Introduction & Purpose

This is a self-initiated design system project created as part of my design system learning journey and portfolio.

Rather than creating a collection of visually consistent UI components, my goal was to explore how a design system can be structured from the foundations up — from design tokens and semantic rules to reusable components, variants, states, and documentation.

The system was designed entirely in Figma, using Variables, Components, Variants, Auto Layout, and Figma's design system capabilities.

The project was not created for a specific product or company. Instead, I used it as an opportunity to simulate a real-world design system workflow and practice thinking about consistency, scalability, reusability, and maintainability.

This is a self-initiated design system project created as part of my design system learning journey and portfolio.

Rather than creating a collection of visually consistent UI components, my goal was to explore how a design system can be structured from the foundations up — from design tokens and semantic rules to reusable components, variants, states, and documentation.

The system was designed entirely in Figma, using Variables, Components, Variants, Auto Layout, and Figma's design system capabilities.

The project was not created for a specific product or company. Instead, I used it as an opportunity to simulate a real-world design system workflow and practice thinking about consistency, scalability, reusability, and maintainability.

What I focused on:

  • Design token architecture

  • Color, typography, and spacing foundations

  • Semantic design tokens

  • Reusable components

  • Component variants and states

  • RTL UI

  • Component documentation

  • Scalable naming conventions

  • Consistency and reusability

What I focused on:

  • Design token architecture

  • Color, typography, and spacing foundations

  • Semantic design tokens

  • Reusable components

  • Component variants and states

  • RTL UI

  • Component documentation

  • Scalable naming conventions

  • Consistency and reusability

Why I Created It?

In many UI projects, components are created independently as individual screens or features are designed.

A button might use one shade of blue in one screen and a slightly different shade somewhere else. Spacing values can become inconsistent, typography can vary, and similar components may behave differently across a product.

These problems become increasingly difficult to manage as a product grows.

As a practice project, I wanted to simulate this challenge and explore how a structured design system could address it.

My goal wasn't simply to create polished components. I wanted to understand the system behind the components:
- How should values be defined?
- How should components consume those values?
- How should states and variants be structured?
- How can the system remain understandable as it grows?

In many UI projects, components are created independently as individual screens or features are designed.

A button might use one shade of blue in one screen and a slightly different shade somewhere else. Spacing values can become inconsistent, typography can vary, and similar components may behave differently across a product.

These problems become increasingly difficult to manage as a product grows.

As a practice project, I wanted to simulate this challenge and explore how a structured design system could address it.

My goal wasn't simply to create polished components. I wanted to understand the system behind the components:
- How should values be defined?
- How should components consume those values?
- How should states and variants be structured?
- How can the system remain understandable as it grows?

Goals

The main goal was to create a consistent and scalable design foundation that could improve the design workflow and reduce inconsistency.

I focused on four main areas:
01 — Consistency: Define clear rules for color, typography, spacing, sizing, and component behavior.
02 — Reusability: Create components that could be reused across different interfaces instead of recreating UI elements from scratch.
03 — Scalability: Build a foundation that could support additional components and patterns without requiring the entire system to be redesigned.
04 — Maintainability: Use structured tokens, naming conventions, variants, and documentation so the system could remain understandable as it grows.

The main goal was to create a consistent and scalable design foundation that could improve the design workflow and reduce inconsistency.

I focused on four main areas:
01 — Consistency: Define clear rules for color, typography, spacing, sizing, and component behavior.
02 — Reusability: Create components that could be reused across different interfaces instead of recreating UI elements from scratch.
03 — Scalability: Build a foundation that could support additional components and patterns without requiring the entire system to be redesigned.
04 — Maintainability: Use structured tokens, naming conventions, variants, and documentation so the system could remain understandable as it grows.

Why I Chose a 4pt Spacing System?

Although the 8pt spacing system generally provides better consistency, scalability, and simplifies design decisions — and is widely adopted by major design systems such as Google, IBM, and Atlassian — based on my UI design experience, I believe that limited use of a 4pt scale in certain dense or compact components can help create a more flexible and visually refined interface.

Although the 8pt spacing system generally provides better consistency, scalability, and simplifies design decisions — and is widely adopted by major design systems such as Google, IBM, and Atlassian — based on my UI design experience, I believe that limited use of a 4pt scale in certain dense or compact components can help create a more flexible and visually refined interface.

Design System Architecture

Before designing individual components, I established a three-layer structure:
Primitives → Semantic Tokens → Components

Before designing individual components, I established a three-layer structure:
Primitives → Semantic Tokens → Components

Primitive Tokens

Primitive Tokens

The primitive layer contains the raw values used throughout the system:

The primitive layer contains the raw values used throughout the system:

Semantic Tokens

Semantic Tokens

Describe the purpose of a value rather than its visual value.

Describe the purpose of a value rather than its visual value.

Component Tokens

Component Tokens

I defined tokens specifically for the Button component.

I defined tokens specifically for the Button component.

Component Architecture

Component Architecture

Once the foundations were established, I moved on to the component layer. Rather than creating separate components for every possible state, I used variants and component properties to keep related states within the same component structure.

The system includes components such as:

Once the foundations were established, I moved on to the component layer. Rather than creating separate components for every possible state, I used variants and component properties to keep related states within the same component structure.

The system includes components such as:

What I Learned

This project changed the way I think about design systems. Before working on it, I mostly thought about a design system as a collection of reusable UI components.

Through this project, I began to see it more as infrastructure for design. The component itself is only the visible part.

I also learned that the earlier these decisions are made, the easier it becomes to maintain consistency at the component level.
This project is intentionally a learning project, so there are several areas I would improve in a future iteration like: Token aliasing, Naming consistency, Developer handoff

This project changed the way I think about design systems. Before working on it, I mostly thought about a design system as a collection of reusable UI components.

Through this project, I began to see it more as infrastructure for design. The component itself is only the visible part.

I also learned that the earlier these decisions are made, the easier it becomes to maintain consistency at the component level.
This project is intentionally a learning project, so there are several areas I would improve in a future iteration like: Token aliasing, Naming consistency, Developer handoff

You can view the full Figma file for this practice Design System project below. I created this project as the final assignment for the Design System course at "Amanj Academy".

Create a free website with Framer, the website builder loved by startups, designers and agencies.