Skip to content
Work

Juvo Design System

Juvo is a Fintech company that partner with global mobile network operators and financial institutions to give financial identities to the unbanked population in emerging markets.

Floating UI component fragments on white: a card with a black star inside a progress ring, list rows, a radio button, small icon tiles, an "Aa" type sample and a black Button

Role

Jul 2018 - Nov 2018
Product Designer

Team

  • Jason (VP of Product)
  • Nancy (Design Manager)
  • Monica (Product Designer)
  • Satindar & Thomas (iOS Engineers)
  • Jojo (Android Engineer)
  • Youssef (Web Engineer)
  • Romy (QA)
  • Nimisha (Technical Content)
  • Celine (Product Manager)
  • Kevin (Technical Designer)

Project Overview

At Juvo, we deploy designs to different markets around the world. We needed to create a flexible design system that would expedite those deployments for all of these different brands.

A hand holding a phone running the Juvo app with a purple star progress ring, beside an Our Partners panel of mobile-operator logos (Claro, BSNL, T-Mobile, Tigo, Celcom, Flow, Sprint, Telefónica, docomo) and figures of 128M, 330M and 10.46

PROBLEM

Juvo's team lacks a good method for producing and implementing designs

As a designer at Juvo, I've noticed I spent a lot of time recreating screens from our core application to fit our Partner's brand style. We also lacked a streamlined collaboration process between the design and engineering teams. As a result, there was anxiety and implementation delays.

Contribution

Throughout this project, my role was to build a system that document our style and usage guidelines for our core product solution — I created a UI library, wrote documentation, redesigned components, and improved their accessibility and visual design.

CONTEXT

Background

When I joined Juvo I started to noticed some recurring patterns. As a designer at Juvo part of my work was to recreates screens from our core app and re-brand our Juvo product with our Partner’s brand. I felt like we were wasting time doing repetitive tasks, when we could spend more time focusing on way to improve the app experience and building new features…

Challenges

1. We didn’t have a common documentation for our core product.

Although, most of the information can be found in various places like Zeplin, Confluence, JIRA, and Google Docs, the lack of an easily navigable, complete repository for documentation led to a constant flood of questions from the engineering team.
The engineering team was often confused by product/design team choices but did not have an efficient approach for information discovery.

This meant a lack of documentation slowed down the implementation! The engineers spend more time trying to understand how things should be built than actually developing.

2. We spend too much time redesigning the same things.

Juvo’s core product is a customizable white-label solution adapted to each of our partners’ brands. This means for every deployment, the design team must create a picture-perfect mockup for each partner screen.
You can imagine this causing significant delays for engineers expecting delivery of these assets.

3. Our partner was often confused by our product solution.

They asked questions regarding the scope of what can be customized for their brand.

After attending in 2018 the design conference "Building a design system at scale", and doing my own research, I realized how much a design system could improve our processes at Juvo across teams.

I knew in order to implement this design system I would need buy-in from leadership.

So I shared my notes from the conference in Confluence and presented an audit of the existing product screens to the company to highlight inconsistencies and demonstrate the positive impact of a unified UI library. Once key stakeholders were onboard we build a core design system team composed of 10 cross-disciplinary members.

Collage of Slack messages from engineers asking design questions, mixed with Juvo app screens: top-up lists, "Congrats! You've leveled up" star cards and "Check your balance" screens
Six phone mockups of the same balance and star-ring screen, each re-skinned for a different partner brand (Flow, Avantel and others) in blue, red, pink and orange
Workshop table seen from above: hands building LEGO minifigure scenes on grey baseplates, joined by flexible grey tubes on a white table
Confluence page "Building a Design System" in the Product reading library: a recap of the "Building a Design System at Scale" conference with a photo of the speaker on stage, and a comment thread beside it

TEAM ALIGNMENT

Goals

A workshop was held by the design system team to determine the purpose of having a design system at Juvo. We all agreed on the following four goals:

> Alignment

Provide alignment between team by having an official source of truth

> Scalability

Improve our workflow efficiency by providing a systematic way to build things

> Product value

Provide a better way to present and sale our product to our partners

> Creativity

Improve user experience, to increase our product value

Whiteboard on a teal brick wall covered in yellow, blue and magenta sticky notes in three columns headed Worst case, Best case and Column 3

Establishing design principles

After having our goals in minds, we sat down and brainstormed about the principles that will help guide the project and ensure alignment amongst the team.
We establishes four design principles which are:

Four design principle cards with teal line icons: Empowerment, Consistency, Simplicity and Scalability, each with a one-sentence definition

PROCESS

Steps to build Juvo's design system

We began by performing a UI inventory for each of the three deployment platforms (Android, iOS and Web).

Six pastel chevron steps joined by a dashed line: Conduct UI inventory, Define visual language, Build UI library, Update current design, Create documentation, Establish framework — "Here are the steps that was follow to build Juvo's Design System"

Audit

We started by auditing every screen and component for inconsistencies. Eliminating inconsistencies in our design framework allows us to create a more cohesive entity.
The audit helped us uncover irregularities like:

  • The color palette didn’t integrate accessibility.
  • There was no naming convention.
  • There was no spacing system.

After identifying irregularities, we created solutions. To begin, we focused on the foundations of each component i.e. the color, typography, spacing. These are the elements we are confident will not change for a while.

UI inventory: a grid of unnamed colour swatches with hex and RGB values, a long list of inconsistent text styles, and a panel of mismatched form and button components

Color

We began with color. The first step was to clearly define the purpose of each color in the product. Our solution is white-label, which means we must rebrand/re-skin our generic branded product with a partner brand identity.

Naming is critical for automating the process. We kept this change simple by naming the colors according to their intended use. This meant categorizing colors as primary, secondary, accent, success, error, and disabled.

Colour audit: "Previously 52 colors", rows of unnamed swatches, beside "Now 25 colors", named swatches with hex values for primary, accent, error, text and level colours
Two panels side by side. "Juvo's default theme color": eight numbered swatches (Primary #0F979A, Primary Enabled, Accent #E60050, Disabled, Primary Text, Secondary Text, White, Variant Color) mapped onto a teal Buy Data screen. "Mobile operator client brand color": the same mapping in blue and green (Primary #166EBB, Accent #71A12D)

Typography

When designing JuvoUp app we decided to uses the Operating System native font family because we want to keep the app light, as our user are cautious of their data usage and live in area with low connectivity.

Using the OS native font, avoid font files storage in the app as we want to prevent performance issue and optimize the user experience.

Two Sketch artboards, Common UI – Font – Android and Common UI – Font – iOS, each a table of text styles with name, size, typeface, line height and colour

Layout & Spacing

Without a unified grid system in place to define the spacing relationships between elements, it’s difficult to create consistency. When working on a project that required multiple designers, having a defined layout and spacing system keeps pages consistent.

We found using an 8pt grid system to size and space elements on a page allows for device screen size adaptability.
Why 8pt? As both iOS and Android use and recommend metrics that are divisible by or multiples of 4.

Layout and spacing diagrams: one-, two- and three-column grids over phone, tablet and desktop wireframes with orange column overlays, and app screens with pink spacing annotations

Icons & Illustration

We didn’t have icon and illustration style guidelines. The result was some icons and illustrations were inconsistent in style and didn’t feel like coming from the same family. We unified our icons and illustrations by defining clear guidelines.

We also decided to use SVG format instead of PNG has it allows better scalability, reduce loading time, and have better image resolution. Using SVG icons and illustrations allow us to rebuild our animation library by using Lottie open-source tool instead of using gif.

"Applying color to illustration": a treasure-chest-and-gift illustration in Juvo's default teal and pink, and again in a telco brand's blue and green, each with its colour legend, beside a line icon of a phone with usage notes

Naming Convention

Naming is crucial to automating the process. Having a common design language create alignment and help unite the product as we speak the same language. We avoid confusion, designers and engineers better collaborate as they speak the same language.

Establishing a naming convention helps us with localization. As our screen use english as the default language, we defined key string name to make content translation more efficient.

We used PhraseApp Sketch plugin to sync content translation directly to the design file. Our partner were able to see the design in their native language, and design team were able to ensure that the content fit perfectly the design.

Naming convention examples: Color "category-variant-purpose" (color-primary-enabled), Icon "category-purpose-variant" (ic-indicator-error), Illustration "category-purpose-variant", UI component names, and a String pattern

Accessibility

As we create the visual design language and update the design we optimized the UI to be compliant with accessibility guidelines.

Improving the accessibility of the app was an important steps to optimized the app usability experience for those with disabilities but also for our most majority of users with old phone and slow connectivity.

Colour accessibility and contrast check: white text on #00b7b6 scores 2.49, Fail ("Old Juvo primary color"); white on #0f979a scores 3.55, AA Large ("New Juvo primary color")

Common UI sheets (Multi-product theming)

We created a common UI stylesheet for our reference product. Here you can find reusable elements like color, fonts, icons, and buttons that are now easy to re-skin with our partner brands. Engineers can use our reference implementation as a base and customize visual elements to align with partner brands.

Design and Engineering have transitioned to a more efficient process of collaboration. Rather than creating & maintaining mockups for every screen across all deployments, design now only maintains comprehensive mockups for the core reference implementation.

Sketch canvas of the Common UI sheet: artboards for colour, icons and illustration, buttons, bubbles, inputs and dialogs, navigation and list items, and Android and iOS fonts
Zeplin project "Claro Chile (Web) – Common UI style sheet" showing the Common UI screens in red Claro branding, with a hand-drawn blue circle around the Connect to Jira option

JuvoUP Mobile iOS library tool (Catalog app)

Our iOS engineers contributed to our design system by building an interactive visual library app. This tool catalogs every element, screen, and state found in the core product. The app allow us to play, test, experiment the design in the real environment.

Five iPhone screens of the Catalog app: a blue catalog splash screen, Color Guide, Font Guide, Screens Guide, and a home screen with a Silver star gamification ring

Single source of truth

We used ZeroHeight platform to host our design system documentation.

Two ZeroHeight documentation pages side by side: "Generic JuvoUP's colors theme" with teal primary swatches and a themed top-up screen, labelled Internal documentation; and "Avantel's Color Theme" with dark grey and magenta swatches, labelled Partner documentation

Scaling the Framework

How did we scale our workflow process for multiple brands?
Going from no system to a system…

Framework tree: Product Core Brand (Juvo UP project) leads to Design Guidelines (online documentation) plus a UI Theming Kit Library (Sketch & Zeplin), then the catalog UI Code Library (Android, Web & iOS), which branches into the default Generic Brand Library and custom Partner Brand Libraries such as TuneTalk and FlowLend
Theming: customization guidelines on a home screen. Logo and icons, currency symbol, app bar and floating action button can be customized; gamification only with limitation; the next action bubble cannot. Beside it, the same screen as the JuvoUP default brand in teal and the Claro Brazil brand in red

RESULT

Design System ROI

Having a design system helped reduce deployment time from 1 month to 10 days.

Quote bubble: "This (design system) allows easy decoupling of the components and in a standalone way understand the function… what would’ve taken me a couple of weeks to develop took me 7-10 days." — Satish, Juvo frontend engineer. Beside it, three overlapping phones showing the same home screen in JuvoUP teal, Claro red and Flow blue

Lessons learned

Once the design system is created, the next steps is continued adoption and maintenance.

After the initial creation of the design system, we wanted to step back and reflect on how the design system is best serving Juvo’s teams. The design team has run a series of interviews to better understand stakeholder needs. We wanted to make the process more inclusive and create a sense of shared ownership.

To solve the pain points and issues that we identified, we created a dedicated working, co-creation design system group. The primary goal of the product design system is to improve collaboration between engineering and design and ensure the system stays aligned with our product so it continues to evolve and grow.