ASAP Design System

One system for eight brands, 12 apps, and 16 admin panels

One system for eight brands, 12 apps, and 16 admin panels

One platform for the

services a Bangladeshi business runs on

Moving ShopUp's design system from Sketch and Zeplin to a tokenized Figma library that every brand and team could build from.

Moving ShopUp's design system from Sketch and Zeplin to a tokenized Figma library that every brand and team could build from.

Role

Role

Senior designer, led a team of three designers on the system.

Senior designer, led a team of three designers on the system.

Design System

Design System

Sr. Designer

Sr. Designer

Headline outcomes

Headline outcomes

8

Brands running on a single system

Cut from monthly operating cost


5 to 3

Days per design sprint, after rollout

Weekly invoice errors, down from 160


40%

Cut from design to development time

Weekly invoice errors, down from 160


1,500+

Variations across 117 component categories

Retailers reached across the country


8

Cut from monthly operating cost

40%

Cut from design to development time

5 to 3

Fewer navigation misclicks

1,500+

Retailers reached across the country

Overview

Overview

ShopUp runs eight brands across logistics, B2B commerce, and embedded finance, spread over 12 mobile apps and 16 admin panels used by 30 teams.


Led the rebuild of the shared design system in Figma with a team of three designers, working with engineering and product from the first audit to rollout.

ShopUp runs eight brands, from last mile logistics to B2B commerce and embedded finance. Every one of them was designed from a single Sketch library, handed off through Zeplin.


As the company grew, that library became the bottleneck. I led the rebuild in Figma with a team of three, working with engineering and product from the first audit to rollout.

The problem

The problem

The Sketch library and Zeplin handoff were set up for a single brand. By the time ShopUp ran eight, every product was still being designed from those same files.

The Sketch library and Zeplin handoff were set up for a single brand. By the time ShopUp ran eight, every product was still being designed from those same files.

Nested component & color selection in Sketch

Canvas full of redundant components in Sketch

Nested component & color selection in Sketch

Canvas full of redundant components in Sketch

Hard to find

Components were buried in nested Sketch menus, so designers missed them and built duplicates.

Components were buried in nested Sketch menus, so designers missed them and built duplicates.

Manual rebranding

Designers recolored every component by hand, once for each of the eight brands.


Designers recolored every component by hand, once for each of the eight brands.


Unsafe to update

Editing one shared symbol could silently change every screen already live in production.

Editing one shared symbol could silently change every screen already live in production.

Hard to find

No single vendor covers travel, recharge, and conveyance, so HR juggles many partners.

Manual rebranding

Designers recolored every component by hand, once for each of the eight brands.


Unsafe to update

Invoices sit in different places, so finance cannot reconcile cleanly.

Research and findings

Research and findings

UX audit

UX audit

Every app, site, and admin panel

Every app, site, and admin panel

Interviews

Interviews

Designers, developers, PMs, staff, and users

Designers, developers, PMs, staff, and users

Benchmarking

Benchmarking

Mature systems at large companies

Mature systems at large companies

Tool review

Tool review

Tools for components and handoff

Tools for components and handoff

Five problems came up in every product, and each one became

a goal for the new system.

Five problems came up in every product, and each one became

a goal for the new system.

Key findings from research

Key findings from research

Designs looked different in every product

Designs looked different in every product

Designers missed components and built duplicates

Designers missed components and built duplicates

Brand colors were changed by hand

Brand colors were changed by hand

Developers rebuilt UI that already existed

Developers rebuilt UI that already existed

Nobody could maintain the system at scale

Nobody could maintain the system at scale

Goals Established

Goals Established

Build every brand from one set of tokens

Build every brand from one set of tokens

Make every component findable in one search

Make every component findable in one search

Switch brands without editing a single screen

Switch brands without editing a single screen

Hand engineering tokens they can use directly

Hand engineering tokens they can use directly

Document it so it outlives its builders

Document it so it outlives its builders

Key findings from research

Designs looked different in every product

Designers missed components and built duplicates

Brand colors were changed by hand

Developers rebuilt UI that already existed

Nobody could maintain the system at scale

Goals Established

Build every brand from one set of tokens

Make every component findable in one search

Switch brands without editing a single screen

Hand engineering tokens they can use directly

Document it so it outlives its builders

Solution, one flexible system built from three layers of tokens

Solution, one flexible system built from three layers of tokens

Change a primitive and everything referencing it updates. Add a new one instead, for a new brand or, a new requirement, and only the work built from then on picks it up. Screens still on the old references stay as they are, so the system can carry new and legacy design at the same time.

Primitives

The raw values, every color and size the brands need, with no meaning attached yet.

Replace totals with stage-level status, so merchants see exactly where parcels sit.

References

The same values renamed by where they get used, so the system says what a value is for.

Put create, track, pay, and return within a single click of landing.

Component tokens

Each component's own set of values from references, ready for engineering to use in code.

Each component's own set of values from references, ready for engineering to use in code.

Primitive

Colors

Color

Brand / ShopUp / Primary /

Base

Neutral /

Grey 100

Size

Size. 16px

Size. 12px

Reference

Values

Color

Surface / Action /

Base

Text / Link-Brand-Active /

Grey 100

Size

Spacing-3xs /

#Size. 12px

Spacing-2xs /

#Size. 16px

Component

Tokens

Component Color

Button-BG-Primary-Default /

Base

Button-Text-Default /

Grey 100

Button / Primary / Large / Enabled

Button

Solution, one flexible system built from three layers of tokens

Change a primitive and everything referencing it updates. Add a new one instead, for a new brand or, a new requirement, and only the work built from then on picks it up. Screens still on the old references stay as they are, so the system can carry new and legacy design at the same time.

Primitives

No single vendor covers travel, recharge, and conveyance, so HR juggles many partners.

References

The same values renamed by where they get used, so the system says what a value is for.

Component tokens

Each component's own set of values from references, ready for engineering to use in code.

Primitive

Colors

Color

Brand / ShopUp / Primary /

Base

Neutral /

Grey 100

Size

Size. 16px

Size. 12px

Reference

Values

Color

Surface / Action /

Base

Text / Link-Brand-Active /

Grey 100

Size

Spacing-3xs /

#Size. 12px

Spacing-2xs /

#Size. 16px

Component

Tokens

Component Color

Button-BG-Primary-Default /

Base

Button-Text-Default /

Grey 100

Button / Primary / Large / Enabled

Button

Key decisions in the rebuild

Key decisions in the rebuild

Key decisions in the rebuild

01 · DECISION

One library, one mode per brand

One library, one mode per brand

Recoloring by hand was the biggest drain in the old system, so color could no longer sit inside a component. Every component reads from semantic theme variables instead, and each brand is a mode. A designer picks REDX or PayWell and the whole screen takes that brand's colors.

Recoloring by hand was the biggest drain in the old system, so color could no longer sit inside a component. Every component reads from semantic theme variables instead, and each brand is a mode. A designer picks REDX or PayWell and the whole screen takes that brand's colors.

Trade off: Every value had to be named by its use rather than its color, which took the team time to learn.

Trade off: Every value had to be named by its use rather than its color, which took the team time to learn.

02 · DECISION

Fewer components, more control inside each one

Fewer components, more control inside each one

Designers had been answering each new need with a new component, which is how the old library filled with near duplicates. Each component now carries properties for size, type, state, icons, and text, plus placeholder slots that accept other components. One modal covers an alert, an upload, a form, and a data list.


Trade off: Components take far longer to build, in exchange for a library with far fewer of them to maintain.

Designers had been answering each new need with a new component, which is how the old library filled with near duplicates. Each component now carries properties for size, type, state, icons, and text, plus placeholder slots that accept other components. One modal covers an alert, an upload, a form, and a data list.


Trade off: Components take far longer to build, in exchange for a library with far fewer of them to maintain.

Comprehensive

component library

Designers can easily find an overview of all components present in the design system.


Designers can easily find an overview of all components present in the design system.


Intuitive search shows

all similar components

Each component is labeled clearly, allowing basic search functions to showcase all similar variations.

Each component is labeled clearly, allowing basic search functions to showcase all similar variations.

Eliminated

Redundancy

Components are equipped with enough control options, making duplicate variants unnecessary.

Components are equipped with enough control options, making duplicate variants unnecessary.

Comprehensive component library

No single vendor covers travel, recharge, and conveyance, so HR juggles many partners.

Intuitive search shows all similar components

Each component is labeled clearly, allowing basic search functions to showcase all similar variations.

Eliminated Redundancy

Invoices sit in different places, so finance cannot reconcile cleanly.

Placeholder & nesting

components

Placeholder & nesting components

Empty placeholders allowed designers to modify components that requires frequent change without duplicating the original component. Below are some examples demonstrating the solution.

Empty placeholders allowed designers to modify components that requires frequent change without duplicating the original component. Below are some examples demonstrating the solution.

These are the basic components controls that we have for any other components

This placeholder groups allows us to switch and add other components to make a complex one

Example of a swap and placeholder components.

Example of a swap and placeholder components.

03 · DECISION

Documentation that outlives the people who wrote it

Documentation that outlives the people who wrote it

The system had to survive designers leaving and files being replaced, so documentation shipped with each component rather than after it. Every component has a page covering anatomy, states, spacing, breakpoints, color rules, and notes for developers, grouped into four files by type.


Trade off: Each component took longer to release, in exchange for a system anyone can pick up without its original designers.

The system had to survive designers leaving and files being replaced, so documentation shipped with each component rather than after it. Every component has a page covering anatomy, states, spacing, breakpoints, color rules, and notes for developers, grouped into four files by type.


Trade off: Each component took longer to release, in exchange for a system anyone can pick up without its original designers.

Getting it agreed

Getting it agreed

Getting it agreed

Four positions I had to hold, and one I traded.

The flows above shipped. These were the calls that shaped how they feel.

Add more colour to the data

At this density colour is not clarity, it is a puzzle. The one I traded: iconography instead, only where a stage earns it, ranked with merchants and PMs.

At this density colour is not clarity, it is a puzzle. The one I traded: iconography instead, only where a stage earns it, ranked with merchants and PMs.


Show less data

Less data was the problem, not the fix. I brought the support tickets, Play Store reviews, and social analysis I had already run. Evidence, not opinion.


Less data was the problem, not the fix. I brought the support tickets, Play Store reviews, and social analysis I had already run. Evidence, not opinion.


Make the banners bigger, like the website

Make the banners bigger,

like the website

No merchant asked for it, and this is where someone handles thousands of parcels a day. REDX has social channels for offers.

No merchant asked for it, and this is where someone handles thousands of parcels a day. REDX has social channels for offers.

We do not want a new design system

The fair objection was cost. Mine was that the shared system already cost more: seven engineering teams in the path of every change, and no dark mode.

The fair objection was cost. Mine was that the shared system already cost more: seven engineering teams in the path of every change, and no dark mode.

Add more colour to the data

No single vendor covers travel, recharge, and conveyance, so HR juggles many partners.

Make the banners bigger, like the website

No merchant asked for it, and this is where someone handles thousands of parcels a day. REDX has social channels for offers.

Show less data

Invoices sit in different places, so finance cannot reconcile cleanly.

We do not want a new design system

Invoices sit in different places, so finance cannot reconcile cleanly.

Impact

Impact

Before vs after launch, from analytics, Hotjar events, and support ticket volume.

Before vs after launch, from analytics, Hotjar events, and support ticket volume.

27.6%

Faster time to first parcel

20%

Fewer support disbursement tickets

17.8%

More invoice views per merchant

12%

Better on-time dues paid

27.6%

Faster time to first parcel


17.8%

More invoice views per merchant

20%

Fewer support disbursement tickets

12%

Better on-time dues paid

Time to first parcel

New merchants used to sign up, fail to find where to start, and come back days later, if they came back. Now they create one in the same session.

New merchants used to sign up, fail to find where to start, and come back days later, if they came back. Now they create one in the same session.

Disbursement tickets

The calls that stopped were visibility questions: what is pending, what lands tomorrow. What remains is payment timing, a policy question, not an interface one.

The calls that stopped were visibility questions: what is pending, what lands tomorrow. What remains is payment timing, a policy question, not an interface one.

Reflection

Research outran the plan

Research outran the plan

A month of a two-month project, which left less room for exploration. Still the right trade, but I would scope it tighter.

A month of a two-month project, which left less room for exploration. Still the right trade, but I would scope it tighter.

Analytics only worked in aggregate

Analytics only worked in aggregate

Merchants share one login across staff, so nothing user-level from Hotjar held up. Every insight that changed the design came from interviews.

Merchants share one login across staff, so nothing user-level from Hotjar held up. Every insight that changed the design came from interviews.

Stage breakdowns beat totals

Stage breakdowns beat totals

Merchants valued knowing which parcels were stuck far more than knowing how many had been delivered.


Merchants valued knowing which parcels were stuck far more than knowing how many had been delivered.


The left rail earned its space

The left rail earned its space

The one decision merchants named unprompted, and it leaves room for services REDX has not built yet.

The one decision merchants named unprompted, and it leaves room for services REDX has not built yet.

Mobile needed its own structure

Mobile needed its own structure

Compressing the desktop layout would have buried the same numbers again. Splitting it into two tabs is what worked.

Compressing the desktop layout would have buried the same numbers again. Splitting it into two tabs is what worked.

The desktop dashboard is still dense

The desktop dashboard is still dense

One-on-one testing is the next step, to find what can come off without losing the drill-down.


One-on-one testing is the next step, to find what can come off without losing the drill-down.


Reflection

Break complexity into reusable parts

Shared components kept a feature heavy app coherent, and made each new flow faster to build.

Let research lead

The HR interviews and competitor study drove the structure, not my assumptions

A new market runs on some assumptions

This is a first mover in Bangladesh, and no one enters an untested market on research alone. The beta is how we learn which bets hold.

What I would change

Running a build this large solo taught me pacing. Next time I would validate the booking flows with real users before shipping.

What happened next

What happened next

The dashboard bought the rest of the site

The dashboard bought the rest of the site

REDX is revamping the whole panel now, flow by flow, migrating each one onto the new design system.

REDX is revamping the whole panel now, flow by flow, migrating each one onto the new design system.

Research runs with every flow

Research runs with every flow

Short interview bursts as each one is redesigned, so pain points surface during the work instead of after launch.

Short interview bursts as each one is redesigned, so pain points surface during the work instead of after launch.

Merchants asked for an app

Merchants asked for an app

Responsive web covers the dashboard. Everything else still needs a desktop, and they want notifications, parcel creation, and live sales on their phone.

Responsive web covers the dashboard. Everything else still needs a desktop, and they want notifications, parcel creation, and live sales on their phone.

The dashboard bought the rest of the site

REDX is revamping the whole panel now, flow by flow, migrating each one onto the new design system.

Research runs with every flow

Short interview bursts as each one is redesigned, so pain points surface during the work instead of after launch.

Merchants asked for an app

Responsive web covers the dashboard. Everything else still needs a desktop, and they want notifications, parcel creation, and live sales on their phone.

The first full REDX app

The first full REDX app

The old one showed data, carried none of the branding, and had no logistics features. I am designing this one with merchants now.

The old one showed data, carried none of the branding, and had no logistics features. I am designing this one with merchants now.

A wider market

A wider market

An app brings in small and hobby sellers, not only merchants shipping hundreds of parcels a day.

An app brings in small and hobby sellers, not only merchants shipping hundreds of parcels a day.

The first full REDX app

The old one showed data, carried none of the branding, and had no logistics features. I am designing this one with merchants now.

A wider market

An app brings in small and hobby sellers, not only merchants shipping hundreds of parcels a day.

Let's build products

people rely on everyday.

farhad.uk © 2026

Let's build products

people rely on everyday.

farhad.uk © 2026

Let's build products

people rely on everyday.

farhad.uk © 2026