Design System- AirBrush

About AirBrush

iOS & Android Photo Editor

  • +100M Downloads worldwide

  • +167K 5-Star iOS ratings

  • US #9 in iOS Photo & Video app category


Project Timeline

Jan 2021 - May. 2021

My Role

I defined design principles, created reusable components, and established guidelines for typography, color, illustrations, and other visual elements.


Background

At the beginning of 2021, I led the project to move the design system from Sketch to Figma. This project aimed to improve, and unify the design language across the AirBrush app and provide a consistent UX.

As the AirBrush design team is always small and agile, the team had limited resources to establish a scalable system. The system I inherited on Sketch when I started this position was poorly equipped to handle another growth cycle.

The old Sketch design system I inherited

Goal

As the North American design lead, I am also responsible for expanding the design team. The end goal of this project is to recreated a design system that can be applied as the foundation for our future product development, enabling us to move faster, deliver better products, and offer a seamless photo editing experience for our users.

Next, I will share my process and examples of the following topics:

  1. Design Tokens

  2. Colors

  3. Iconography

  4. Illustrations

  5. Components

  6. Patterns

  7. Cross-functional Team Collaborations

1. Design Tokens

I started with looking for a way to define and standardize app’s core elements that make it easier for designers and engineers to maintain the consistency. I decided to use Design Tokens.

 

In short, design tokens are nicknames: #2680EB -> cta-background-color

This approach can save valuable time and effort for the development team, allowing them to focus on more important tasks.

 

For example, in case we decide to modify the background colors of all CTA buttons, engineers will only be required to update the hex value, rather than having to locate all buttons and update them individually, which is a time-consuming process.

The following types of design tokens are the building blocks that make up the new design language:

Global Tokens

Global tokens are represented by context-agnostic names

Alias Tokens

Alias tokens relate to a specific context with the intended purpose.

Below is the background color Design tokens include light and dark theme for engineers to implement in a flexible way.

 

2. Colors

In this session, I’ll explore how to create a balanced and harmonious color theme using an auto-color generator tool O built.

Auditing the Current Color Palette

Starting with auditing the current color palette with engineers, I found many previous color attempts with different arbitrary names in the code base, like “orangePrimary”, “orange2”, “lemonYellow”, “blushPink” pointed to similar shades of orange, and red.

Similar colors with arbitrary names in our code base

In order to make decisions on what colors to keep in the product, I put colors into 2 groups that serve different business purposes, and mapped them on a color wheel to visualize their relationships:

  1. Orange Group: Our branding colors

  2. Red Group: Special promotion theme colors

Ensuring Accessibility

Next, I looked into the accessibility for each color through contrast tests. The goal was to pass the “WCAG AA” standard on the Large Text, and the Graphic Objects categories. Any color that failed would be removed. However, the result was- none of the colors in the orange group pass the contrast test with the white background! To ensure app’s accessibility, I needed to created a new color with a lower lightness to pass the test.

As a result, I had 2 base colors that pass the contrast test. These colors will serve as the foundation for the new color palette, and from here, I will be able to build out a full color theme.

Creating the Theme

With the base colors, I began the process of building out a complete color theme. Starting with defining theme’s function:

A theme made of a sequence of color swatches

  1. The base color- Theme60

    The base color is the dominate tone across the app. I defined that it always should be 60 in light mode, and 50 in dark mode. Both contrast ratios are higher than 3.03 (WCAG AA ready).

  2. Auxiliary colors- Near Theme60

    They will be used for visual feedback, like mobile’s pressed state or the hover state for web/desktop based platforms.

  3. Accent colors- Both ends

    These colors can be used as the elevated background of a selected item in a popover or a dropdown in both light and dark modes.

Building a Color Generator

Achieving a balanced and harmonious color scale often requires many iterations. To avoid spending excessive amounts of time manually tweaking color values, I created a simple Python environment that allowed me to explore a variety of HSL color settings.

  1. Input: R, G, B value

  2. The code will transform the RGB color into HSL

  3. Set H, S, L values and play around with them.

  4. Output: A color scale with 10 colors

Auto color scale tool visualized by Matplotlib

The reason I chose HSL (Hue, Saturation, Lightness):

We can manipulate colors with saturation and lightness, which separates lightness into its own dimension. Unlike HSB, this can adjust lightness without affecting saturation.

 

Hue-agnostic Approach

While there is no definitive best practice for choosing colors, it is important to establish some guiding principles. In consideration of the potential expansion of our base colors in the future, I opted for a Hue-agnostic approach. This means that the palette is not tied to any specific hue, allowing it to be applied uniformly across colors of any hue.

I created a diagram with saturation on the x-axis and lightness on the y-axis. By using this diagram, I was able to identify patterns in saturation and lightness levels that could be used to generate a new palette in the future, if needed.

Orange and blue hue share the similar color attribute pattern

Playing Around

I started with playing around the parameters I set, like adding or decreasing saturation or lightness levels. After creating a couple of arbitrary scales, I realized that without a holistic process, it would be impossible to get a smooth color transition.

Examples of some early stage color scale

Selecting the Right Curve Type

Through experimentation, I discovered that the scatter pattern was closely tied to the smoothness of the colors being used. Based on this observation, I decided to explore the effect of different curve shapes on the final outcome. 

To put this theory to the test, I began by setting the start color to Theme10 and the end color to Theme100, and generated a series of intermediate colors using three different interpolation types.

3 curve shapes that reflects lightness and saturation levels

After conducting the experiment, the results were quite interesting. I observed noticeable uneven transitions in both the Linear and Positive Curvature scales, while the Negative Curvature scale produced the smoothest and most dynamic outcome.

Adding the Middle Color 

Next, I had to include the Base Color in the scale based on the Negative Curvature color curve. I made adjustments to the script to generate a spline that passed through three key points: the Start Color (Theme10), Middle Color (Theme50), and End Color (Theme100), and interpolated colors in between. 

After a few adjustments, I ultimately settled on the outcome shown below due to its smooth transition and dynamic range of colors.

The spline curve made with Scipy

Finally, I applied this rule, and generated the red, and grey scales.

3 color palettes made by the same algorithm

Manually Testing Colors

Although the color generator was a valuable tool in the creation of an effective and visually appealing user interface, it was just one aspect of the overall design process. Ultimately, manual testing of colors was essential to achieving the final look and feel of the interface, particularly with regards to the dark theme.

Results

Before

Previously, the AirBrush color palette lacked any cohesive structure.

After

After implementing a comprehensive design system, the AirBrush color palette is now well-organized and structured.

The structured color palette has also allowed for greater flexibility and customization when designing new features and updates, while maintaining a consistent and recognizable brand identity. Overall, the implementation of a structured color palette has had a significant impact on the success and growth of AirBrush.

 

3. Iconography

AirBrush has +80 customized icons that represent a variety of editing tools. One of my key priorities is to ensure that each of these icons adheres to a consistent and recognizable design language.

Metaphors

Clear icon metaphor simplifies tool description. By incorporating a consistent and recognizable visual language throughout the product, it’s easier for users to identify and understand the product's unique features.

Colors

When it came to designing monochromatic icons, I needed to consider both the interaction state and the color theme of the product. While monochromatic icons provide a clean and minimalist aesthetic, it’s important to vary the color of the icons based on the interaction state in order to provide a clear and intuitive visual cue to the user.

Sizes

Choosing the appropriate size for icons is a critical aspect of creating a visually appealing and user-friendly interface. One approach to determining the ideal size for icons is to ensure that they are proportionate to the size of their corresponding labels

Layout

Add safe area for flexible positioning, and a balance layout. By adding safe areas, designers can ensure that key content is positioned in a way that is both aesthetically pleasing and functional.

Stroke Width

Maintaining consistency in icon stroke width is a critical aspect of creating a visually appealing icon array. For example, at AirBrush, I utilized a stroke width of 1.5px for main objects and 1.0px for additional elements.

 

4. Illustrations

See the full design process on Medium

Illustrations are primarily used in AirBrush app to enhance the information presented in modals, creating a more engaging and visually appealing experience for users.

However, I noticed that the illustrations throughout the app were not effectively fulfilling their intended purpose. The emoji illustration style seemed a little off to me. It didn’t quite capture the emotions that we were aiming for.

Our Goal: Capturing Emotions

By using illustration to capture these emotions, we were able to create a more engaging and relatable experience for our users. Whether it’s the feeling of joy and excitement when having a satisfactory editing result, or the frustration and disappointment when a feature doesn’t work out the way we hoped, emotions are an integral part of our photo editing journeys.

Illustration Palette

Developing an illustration palette that is based on the main brand colors is a fundamental aspect of creating a visually consistent illustrations. This process involves selecting a primary color or color scheme that aligns with the brand color and then complementing these colors with additional hues, highlights, shadows, and other colors to meet a variety of lighting needs.

Girl Theme

To cater to the main user demographic of young girls, my junior designer and I had developed a unique illustration set that incorporated both a girl theme to capture a range of emotions. These illustrations could help to create a more personalized and relatable experience for the user.

Object Theme

Building upon the foundation of girl illustrations, we created a set of object illustrations specifically designed for use in system notifications or feature updates. These illustrations were carefully crafted to align with the overall aesthetic of the product.

Before & After

By putting the old and new illustration sets side by side, it's clear that the new one is way more eye-catching and interesting.

Result

The illustration project was a success with positive feedback from both stakeholders and users. The new illustrations not only added a fun and playful element to the app, but also made it easier for users to navigate and understand different features.

I gotta say, these illustrations are pretty sweet! They make the app feel a lot more fun.
— Micaela

When it came to the design process, the new set of illustrations helped a lot in terms of getting our message across and making the app more engaging.

 

5. Components

Some examples of photo editing centered UI components I created, include a variety of tools and features that are tailored to the unique needs and preferences of photo editors.

Color Picker

Picking a Color

A color picker allows users to visually select a color through 2 color properties or an eye dropper tool.

The color picker UI component includes an eye dropper tool, which enables users to select any color present in an image. The chosen color will be updated in both the color area and the hue slider. Additionally, to facilitate more precise color selection, users have the option to zoom in on the photo.

Sliders

Selecting a Value

Users can utilize sliders to swiftly choose an intensity, size, or color value within a given range.

Brushes

Adjusting Accuracy

By utilizing the brush sizing, magnifier, and zoom in features, users can achieve varying levels of accuracy and precision

For example, when working on fine details or intricate areas, users may opt to use a smaller brush size, along with the magnifier and zoom in features, to achieve a highly precise result.

By offering these versatile and customizable features, the editing UI component system can help users achieve the desired level of accuracy and precision for any given editing task.

 

6. Patterns

Modals

Addressing Information

Modal group was designed to let users to browse a collection of information and actions.

I designed a customizable option set for modals that displays various visual elements based on the specific needs of each task. This level of customization could help streamline the workflow and enhance the overall usability of the product.

Asset Menu

The asset menu, which includes filter and makeup looks options, must be designed with consideration of all possible scenarios and asset states to establish effective menu patterns.

 

Cross-functional Team Collaborations

I also built a marketing template for marketing partners allows for greater flexibility and collaboration when creating campaign materials. By providing a range of real UI options within the template, marketing partners can explore different design concepts and styles that are tailored to the specific needs of their campaign.

 

Impact

Design

  • Junior designers are able to design new features more quickly using provided patterns

  • Creates more comprehensive work by utilizing all available component variants

  • Enhances the overall design process and improves collaboration between teams

Engineer

  • Building a comprehensive design system has streamlined the development process

  • Engineers can now refactor the codebase according to the established system

  • Eliminates the need to ask for small design details like color palettes or pop-up styles

Company

  • The success of the design system has led to the development of new video apps

  • Company now structures new product strategies based on the success of the design system and AirBrush

Previous
Previous

SmartNews

Next
Next

Growth Design- AirBrush