Available
Design Systems · UI Foundations · Sandbox VR · 2023–Present

Built from nothing.
Used by everyone.

How I went from a four-colour brand doc to a design system that runs across every Sandbox VR product.

RoleSenior UX/UI Designer
Timeline2023 – Present
ScopeDesign System, Primitives, Components
ToolsFigma, Token Studio

Overview

When I joined Sandbox VR in July 2023, the design foundation was basically a mood board. Four brand colours, some glamour shots of a concept store. That's it.

Developers were hardcoding everything. Every button, every input — built from scratch, every time, slightly differently. Nothing was reusable. Nothing was consistent. And as the only designer, I had no source of truth to point at. Neither did anyone else.

So I built one.

The problem

The tricky bit: the system had to work across two very different environments. There's the digital product — booking flows, experience pages, account stuff. And then there's the physical in-store world — signage, hardware interfaces, in-venue UX. Both needed to feel like the same thing.

The mess I was working with:

  • Devs rebuilding UI from scratch on every ticket
  • Type, colour, and spacing all over the place
  • No handoff process — decisions lived in people's heads
  • Every new project or IP collab meant starting from zero

Start with the foundations

Figma variables panel showing semantic colour tokens and typography scale across light and dark modes

Colour tokens and typography scale across light and dark modes

I started with primitives — the raw values everything else inherits from. The system runs across two token levels.

At the primitive level, tokens use code-style naming that maps to actual values. brand.trigger.full is blue/700. brand.darkGrey.alt/900 is your darkest surface. These are the atoms.

The semantic level sits above that and makes things human-readable — color/surface/base, color/text/high, color/icon/full. Designers and devs talk in semantics. The primitives sit underneath doing the work quietly. It means if a value changes — new theme, dark mode update, rebrand — you change it once, at the primitive level, and it flows through everything.

Typography got a full overhaul too. When I joined, type was a mess — bold here, italic there, no logic. Replaced it with a proper scale, H0 down through body and utility styles.

Iconography

Custom Sandbox VR prop icons — headset, pistol, vest, rifle, tracker and wand — organised by component naming convention

Custom prop iconography — headset, pistol, vest, rifle, tracker, wand

I built a set of custom icons for Sandbox VR's physical props — headsets, vests, trackers, wands — then used Google Material to backfill the utility stuff. Arrows, chevrons, add/remove, that kind of thing. Custom where it matters, sourced where it doesn't.

Components

Figma canvas showing the full button component library — all states, sizes, and colour variants

Full button component library — all states, sizes, and colour variants

Once the foundations were solid, I tackled the high-traffic stuff first. Buttons, text fields, nav, footers. All designed with accessibility in mind, built to work with how modern search actually surfaces content.

The goal was never a reference doc people dread opening. It was a lego kit — grab what you need, build, ship.

Text input components showing all states across light and dark modes, including RTL Arabic variants for global markets

Text inputs across all states — including RTL Arabic variants for global markets

The system was built for global use from the start. Text inputs include full RTL Arabic variants. Not an afterthought — baked in from the beginning.

System in context

Figma canvas showing the stepper component alongside a real booking summary UI with live pricing data

Stepper component alongside a real booking summary — the system working in the wild

This is the stepper component sitting next to a real booking summary — actual pricing, real product names, production layout. Not a demo. The system working in the wild.

How it's maintained

I didn't build it and call it done. That's how systems go stale.

Primitives are pretty much set-and-forget — the bedrock doesn't shift much. But the component and iconography files are kept live, with weekly dev syncs to make sure both sides stay in sync when something changes.

Design trends get considered, not chased. The system doesn't bend to every aesthetic shift — but it does respond when something genuinely changes how users expect things to work.

The proof

When Netflix House launched, an admin panel needed to go live fast. Devs built it with almost no design input — pulled straight from the system, implemented it, shipped it.

That's the whole point. Build the tool well enough that it works without you in the room.

130+
Product tickets shipped using system components
105
Semantic tokens across light and dark modes
3
Figma library files — Primitives, Iconography, Components
1
Designer running the entire product surface, digital and physical
Next Project
Product Design · Esports

Battlefy — Esports from the ground up

0–1'd an entire design system for the world's top esports tournament platform, targeting a 50% reduction in design and dev cost per project.

View project