santiagomoreno Work in Progress
Lulo Bank Design System
Building and maintaining Lulo Bank's design system from zero to hero. Finding and resolving new opportunities to optimize the way we work within the team, with developers and the rest of the organization.

Overview

Having the opportunity to build a product from scratch, we knew it was vital for our product to be able to grow easily to construct a system that would allow us to scale, iterate and experiment quickly.

Challenges

One of the biggest challenges was the design and development synchronization as we were working on a full native app which presented it’s own limitations when building components for both iOS and Android platforms. As we were creating a full custom UI that had to be implemented in both systems, using too little native components, it was really difficult at first to propose and build components that performed equally in both. We managed to resolve this by slimming off components and behaviors and creating a workflow that involved creating a custom app for each platform which allowed to review and approve how components were created and behaving before pushing to the app.

Handoff highlights

Early in the process of syncing design and development it was crucial to help developers understand how animations should be implemented. We tried different strategies to make it clear, but prototyping was simply the most efficient way to do it. We defined some basic standard behaviors for the components’ first iteration. At this stage prototyping features in Figma weren’t too advanced which resulted in using ProtoPie to create high-fidelity artifacts.

Initial documentation approach for complex scenarios
Initial documentation approach for complex scenarios
Behaviour prototyping reference for multiple inputs, scrolling header and entering a new flow transition

Undestanding the possibilities

In the early stages of the library creation I experimented with building Swift UI components, looking for new ways for the design team to prototype and evaluate what was possible to do in the development team. This was later disregarded as it was difficult at the time for designers to get involved with code and not viable for me as a sole designer to build an entire ecosystem. This was however a great opportunity to learn Swift and understand both how layouts are build in iOS and what’s actually possible to build.

SwiftUI experimental app

Component iteration

Shortly after stablishing our first library we went through a face-lift that required components to be updated visually. This, however, was also a chance to review the way components were structured as we were facing issues when updating or using them modularly. At the same time, Variants were introduced in Figma, making it a fantastic coincidence to create vanguardist components. We chose some of the most used and complex components to review. This small iterated set would be later the base from which the rest of the library would be updated.

Exploring with Variants in Figma
Exploring with Variants in Figma
Exploring with Variants in Figma
Exploring with Variants in Figma
A look to the base component playground
A look to the base component playground

Workflow optimization

Going beyond the component library one of my main objectives while taking care of the Design System was to find ways for the design team and the rest of the organization involved with the library to streamline the way they work with it. This resolved in many opportunities for me to build new tools and workflows that were beneficial for all the teams involved.

A slide from a small keynote showcasing the tools I've had the opportunity to build within the organization
A slide from a small keynote showcasing the tools I've had the opportunity to build within the organization

Component Mole

Component Mole was created for the Design Team so they could report component and instance issues directly to Slack. This allowed us to channel all requests into a single output to manage this requests in a more efficient way. I modified this plugin later on for public release, you can try it here.

Protofly

I created a private version of the Protofly plugin to resolve the specific pain of using different animation settings for all of our prototypes in Figma. By using Protofly every designer could use presets that match our interaction guidelines without having to memorize them or play with settings themselves.

NUPI

As a Design Team we set some ground rules when working on unhappy paths, notifications and other types of alerts. This included using a source file for all of our alert-related content. Though this was important for us as a team to keep files clean and avoid clutter, it wasn’t so practical for developers, BAs, legal teams and other members of the organization to understand how these alerts would be displayed in the app. While we had templates linked to the content source file it was so much easier to understand when seeing it on the layout. Looking for a way to balance both worlds I developed a tool called NUPI, which allowed anyone at the organization to preview Alerts within the app layout. This was also a chance to get started using Storybook to layout some components for the web, using React.

Storybook Components for the Lulo Bank App
Storybook Components for the Lulo Bank App
Platform Navigation Demo

I was heavily inspired by the custom Storybook UI. It felt dashboardy and matched up perfectly with what we wanted to accomplish with this internal tool. NUPI is currently in beta. We decided to share an MVP version of the project to evaluate its usage before going full steam on it.

The Design Principles

As a result of working in a fast-paced environment and lots of changes in decisions and non standardized products, we ended up designing upon a shared but undocumented view of how our product should be designed and what objectives our experience should accomplish. To address this matter I lead the very needed initiative to create our Design Principles. They would not only help the team make better decisions but also be the root of our Design System.

A screenshot of the remote workshop we ran with both Design and Organization-wide teams to build our Design Principles
A screenshot of the remote workshop we ran with both Design and Organization-wide teams to build our Design Principles

In short, the idea was to build upon what we already did and not an attempt to do it from scratch, nor creating an elaborate concept of what we wish to be, but rather a result of what we’d been able to create for about 2 years.

The result was an outstanding set of principles that resonated so well within the company leadership, accomplishing one of the goals of aligning with the company vision, that the princples were pushed further to be used as company-wide princples.

Final posters to share with the organization
Final posters to share with the organization
Clip for an internal cooming soon campaign showcasing the principles' icons

To overcome next

Documenting our components is a continuous process that involves both design and development teams. Currently documentation is managed inside the Figma files. While this may be convenient in some cases, it's hard to navigate, read and might have accessibility issues. We want to make access to the Design System universal. Right now we're working on migrating all documentation to wiki kind of software like Notion, in order to make it more readable, navigate-able and findable within the organization top-level documents.

Existing and in development documentation
Existing and in development documentation

Maintaining, developing and improving the Design System is an endless task. There's a lot of work to be done and the team is looking forward to resolve current and upcoming issues such as contribution, component naming and usage consistency.