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

Key decisions

Key decisions

01 · SCOPE

Split design problems from ops problems

Half the complaints were not interface problems. "My parcel is stuck at the hub" is an operations problem, and no dashboard fixes it.

Half the complaints were not interface problems. "My parcel is stuck at the hub" is an operations problem, and no dashboard fixes it.

Chose to sort every finding into design or operations before proposing a single screen, then walked PMs and business leads through both lists. It narrowed my own scope to seven issues, and sent the rest to the teams who could act on them.

Chose to sort every finding into design or operations before proposing a single screen, then walked PMs and business leads through both lists. It narrowed my own scope to seven issues, and sent the rest to the teams who could act on them.

02 · NAVIGATION

A left rail, with Create parcel pinned

Core actions sat under layered dropdowns that merchants reopened every day.


Chose a rail over a top bar, trading horizontal space for a structure that absorbs new services without another dropdown layer.


The rail collapses to icons and keeps actions visible. Track parcel stayed in the top bar: important, but not part of the daily loop.

Core actions sat under layered dropdowns that merchants reopened every day.


Chose a rail over a top bar, trading horizontal space for a structure that absorbs new services without another dropdown layer.


The rail collapses to icons and keeps actions visible. Track parcel stayed in the top bar: important, but not part of the daily loop.

03 · DASHBOARD

The journey by stage, not the total

The old dashboard showed totals and percentages, with returns hidden entirely.


Chose density over calm. Totals told merchants the day was fine. Stage breakdowns told them which parcels needed a phone call.


Forward journey split across sorting, transit, hub, delivery, and hold, mirrored for returns and collapsed by default. Every stat links to its list, so a number is a starting point.

Drag the red handle to compare. Same data, now resolved into the stage where a parcel is actually sitting.

Drag the red handle to compare. Same data, now resolved into the stage where a parcel is actually sitting.

04 · PAYMENTS

Make the money cycle visible

Most parcels are cash on delivery. The old panel showed what had been disbursed and what was in process, but never what was landing tomorrow or what the merchant owed REDX.


Chose to show the whole cycle, including the dues. Unclear amounts were causing service suspensions merchants never saw coming.


Lifetime earnings anchors the panel, next day payment shows what lands tomorrow, and dues sit as a red card with Pay now.

Drag the red handle to compare. Two totals before, the full cycle after, with the action attached.

Drag the red handle to compare. Two totals before, the full cycle after, with the action attached.

05 · MOBILE

Split the dashboard into two tabs

Mobile merchants got totals and nothing behind them. No stage view, no way to open a number, and no sign of when money would arrive.


Chose to split the dashboard into Parcel and Payment tabs rather than compress the desktop layout into one scroll. Each tab answers its question in full instead of summarising both.


Parcel lists every stage with its count. Payment carries earnings, tomorrow's payout, dues, and invoices. Create parcel stays reachable the whole way down.

New dashboard

Old dashboard

06 · SYSTEM

Build REDX its own design system

The shared system carried the variety seven brands needed, had no dark mode, and REDX was branching into products of its own.


Chose a new system over extending the shared one, inside the same two months. Logistics patterns repeat across parcels, payments, and returns, so a smaller library covers them without a new component for every case.

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