0.4.3 master

Cascara

Functional Design System

Cascara is a Functional Design System (FDS). But what is a FDS and how is it different/similar to a Design System or UI Library? What are we trying to achieve by building a FDS instead of only a Design System or UI Library instead? To begin, we need to understand what a Design System is and what sorts of challenges it is intended to solve.

What Is A Design System?

Design Systems come in different sizes and scope, but essentially, they can be defined as follows:

A Design System is the single source of truth which groups all the elements that will allow the teams to design, realize, and develop a product.

This will typically include, but not limited to, the following groups:

  • Brand Guidelines (Color, Typography, Logo, Copy)
  • UI Library (Components, Layout, Animation)
  • User Experience (Patterns, Rules, Principles)
  • Icons/Images/Illustrations

Value Proposition

There are plenty of other articles about design systems and their advantages, so let's wrap up with the benefits of a Design System that are most valuable to us at Espressive:

  • Faster time to market
  • More consistent user experience
  • Codebase becomes more stable and easier to maintain
  • Increased efficiency in decision making

What is a Functional Design System?

If you're caught up on what a Design System is and what some of the elements of a Design System are, we can ask: What is the functional part of a Functional Design System?

A Functional Design System is a superset of a design system which has additional components that help it enforce experience, patterns, and other rules of the Design System as a whole.

Update a single "margin" value in our tokens:

  • All design prototypes get updates
  • All UI library gets updated
  • All documentation gets updated

If this sounds like magic, it kind of is. There is a lot of tooling that has to work together to achieve this. We also have a long way to go to make all of this automatic. For now, we can highlight some of the strategies we are using to make this possible.

This section of our documentation will expand further over time.