Empowering consistency

How I unified a vast UI library in a multi-service product

About

FarmCloud is a system created by AgriSolutions to support various participants across the agricultural supply chain. It was trusted by clients like Grupa Azoty and Microsoft.

Challenge

As the first UX Designer in a prior dev-only team, I had six weeks to unify a fragmented UI and modernize the system.

Impact

I unified the two most critical components, which led to a 444% increase in their reusability rate and a reduction of technical debt.

Team

PO, CTO, Me as a Designer, FE Developer, BE Developer

My role

Design strategy, UI design, UX design

Timeline

January 2022 - March 2022

Establishing strategy

🔥Six weeks deadline

My first task at AgriSolutions was to modernize and unify UI of three-service platform. It seemed like a classic design system case, but the six weeks tight timline worried me a little.

FarmPortal’s UI when I started at the company.

FarmPortal’s UI when I started at the company.

🎨 Visual teaser

To kick things off, I focused on building trust with the team who had never worked with a designer before. I put together quick visual concepts to establish an aligned vision.

Left: FarmPortal | Right: FoodPass

Left: FarmPortal | Right: FoodPass

Foodstock - online marketplace in development

Foodstock - online marketplace in development

Assessing feasibility

🔍 Reality check

After performing a simplified version of interface inventory, I was sure - a full design system, covering 3 different services wasn’t feasible in six weeks.

🎯 Prioritizing components

From now on we focused solely on FarmPortal, the ecosystem’s top ROI service. We also prioritized two most-used, visually inconsistent components: button (7 versions, used 464 times) & input field (5 versions, used 1179 times).

Up: various components of a button found in the system | Down: various components of a input field found in the system.

Up: various components of a button found in the system | Down: various components of a input field found in the system.

Designing components

⚙️ Laying the foundations & facing limitations

I used atomic design workframe and then based final UI on ng-bootstrap components, a familiar library for our devs. But there was a catch: we had to stick to an outdated version due to technical constraints.

Left: consolidated components of button & input field | Right: table component was also developped (as the third most frequently used element)

Left: consolidated components of button & input field | Right: table component was also developped (as the third most frequently used element)

Up left: 12 text styles | Up middle: variables (facilitating UI dev workflow) | Up right: icon component with 1704 variants

Up left: 12 text styles | Up middle: variables (facilitating UI dev workflow) | Up right: icon component with 1704 variants

Down: refreshed layout structure along 12 columns & 4px rule

Down: refreshed layout structure along 12 columns & 4px rule

⏰ The final dilemma of date & time picker

Once we got our basics ready, we addressed an extra task: a custom built date & time picker. Together with CTO we agreed I’d mock up a quick POC using native ng-bootstrap + custom styling. I also designed a fallback with two separate components.

Final results & learnings

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