Glydways Design System

Lumasis case study cover — gradient wordmark and glass track UI on dark background

Brief

Shipped
Rider appiOS · Live Activities2025
Access pointPylon · signs · kiosk2026
MappingRoute map · cartography2025
Vehicle UIIn-vehicle display2026
Operator consoleWeb · fleet supervision2024
Outcome
Scalable frameworkOne token architecture · rider, operator, embedded, web
SystemizationFoundations · components · governance
AccessibilityWCAG AA · every primary text and control
Stack
Design & prototypingFigmaLottie
EngineeringSwiftReactJavaScriptWebSockets
Role

Principal DesignerHuman Interface & Design SystemsBuilt Lumasis from zero: one system for the full ride experience, end to end, across the rider app, access point signs and kiosks, the vehicle UI and the operator console, all on one token architecture.

Team
Software design2
Industrial design3
Product & QA3
Engineering3
Program span
2024–2026

01

The Context

Transit systems of the future require more than just engineering.

They require intuitive, seamless communication between humans and machines. Before Lumasis, there was no interface system to build on. We needed a singular, scalable, global language.

02

The System

Lumasis was created as the foundational design system powering our autonomous transit ecosystem.

Designed specifically for riders in motion, it unifies the rider app, access point, kiosk, mapping, vehicle UI and operator console, ensuring that every touchpoint feels familiar, safe, and effortlessly clear.

B · The loop
C · The line

03

Foundations

A living system where human light flows through – a refuge of clarity in complexity.

Color is the source, glass is what it passes through, light is the color that comes out the other side, and depth decides what comes forward.

Parameters

The hard part: one line color has to read on a sunlit access point sign, in a cabin at night and on the operator console. Light through glass is how it holds. Read the stack from the bottom; type and pictograms come from Metro and stay fixed, only these four change, and every value shown is a shipped token.

04Depthwhat comes forwardStep 3 .19
03Glassthe materialTinted blue at 34%
02Lightcolor through glassΔL −30 #142B5C
01Colorthe sourceBlue #2D64DD

04

Surfaces

One system, every surface.

The rider app, the access point with its pylon, signs and kiosk, mapping, the vehicle UI and the operator console. Each one is the same four parameters, set for where it is read.

Rider app

We rejected a full app download. Installing an app means a profile, an account and data held on every rider, which went against my approach to modern transit. With an App Clip and Apple’s Live Activity[2], a rider in any city can book at the kiosk or straight from an access point and follow the arrival on their Lock Screen and in the Dynamic Island, without signing up for anything. It is one Live Activity in every city, each in its own line color: San José, Atlanta and Miami below.

A Glydways Live Activity on iPhone: Arriving in 6 min, Atlanta International Airport.

Access point

The access point is where a rider meets the system on the ground, and it has two surfaces. The pylon carries the map with the route as a line of light, and its signs show which Glydcar is next, when it arrives and where to wait. Beside it, the kiosk lets a rider book on the spot and shows the next vehicle in its line color, in the same glass and light values as every other surface. Both are read at a glance, from a distance and on the move, so they carry Lumasis at its plainest: the line color, the time, one instruction.

A Glydways access point pylon on the platform, showing the route map with each line in its own light, as two Glydcars pass on either side.
Pylon · the map
A Glydways display pylon on the platform wall: Your ride awaits, with a Glydcar arriving.
Pylon · the display

Mapping

On the map, the route isn't drawn, it's lit. Each line is its core color read through glass at 34%, the same light value it carries on the pylon and the phone. The trip comparison floats over the city in a glass window: Airport to Transit Center, Glydways 8 min, ride share 12 min, bus 32 min. Everything else stays dark, so the only light on the map is the ride.

Map of San José from the airport to Diridon Station, each route drawn as its own line of light, with a legend: Glydways 8 min, Ride Share 12 min, Bus 32 min.

Vehicle UI

On board, the cabin is shown in black and white so that only the interface carries color. The pillar screen puts climate and mood on one dial; the overhead screen shows the trip; both in the same glass and light values as every other surface. The production work is confidential, so it is shown in part.

Operator console

The operator console is where the autonomy is supervised: forty to sixty vehicles at a time, up to two hundred. The map carries position only; select a dot and everything the vehicle reports opens in a window. Status built into the dots was legible at five vehicles and unreadable at sixty.

05

Components

The parts every surface is built from: the line colors as tokens with their values, the vehicle list, the System and Tickets panels, the vehicle, alert and weather pills, the monitoring station and the map tile, all on the same glass.

Glydways components: the VMS list, System, alert pills, Tickets, the monitoring station and the map tile.

06

Outcome

The full ride, end to end, on one system. The rider, the operator and the vehicle read the same values, with nothing translated in between.

A rider on a platform can tell what the vehicle is about to do, and an operator watching two hundred in motion can tell which one needs attention. Both are reading the same tokens at the same lightness thresholds. Nothing was translated for either of them, which is the whole of it — a value that names itself does not need an interpreter on the way to a screen.
A living system where light flows through — a refuge of clarity in complexity, over an image of an autonomous transit vehicle in a neon-lit tunnelDark glass material reference: opacity and refraction swatchesLumasis design system detail from FigmaLumasis design system detail, secondary view from Figma
A living system where light flows through — a refuge of clarity in complexity, over an image of an autonomous transit vehicle in a neon-lit tunnelDark glass material reference: opacity and refraction swatchesLumasis design system detail from FigmaLumasis design system detail, secondary view from Figma

Platform, Vehicle & Map

Between the phone and the control room, the rider meets the same system four more times. The platform sign and the kiosk show the next vehicle in its line color. On board, the vehicle interface puts climate and mood on one dial, in the same glass and light values as every other surface. The map sets the trip against ride share and bus, and the route carries the line's gradient. Connectivity & Updates reports what the vehicle is doing in the same status language.

The vehicle interface is shown in part; the production work is confidential.

Perception

The vehicles don't see the world the way people do; they see sensor data. Lumasis starts there: the visual language is built from machine perception, then made readable for people.

Principles

The principles keep that machine-built language human.

Human

Rounded shapes, conversational micro-copy and organic motion instead of abrupt transitions.

Oasis

Deep negative space and blur keep attention on what matters right now.

Flow

Components morph and adapt, taking the rider from booking to boarding without jarring context switches.

Forward

Predictive states surface actions, like opening doors or adjusting climate, exactly when the rider needs them.

Token Architecture

Token Architecture

The vehicles already speak in data, so the tokens had to as well. Every name is derived from its value — family from the HSL hue, step from the HSL lightness — so the token file reads the same to a designer, an engineer and a model. AI did the translation work: it turned the parameters into tokens and mapped them against ADA and WCAG requirements.

Color & Light

One family read at two levels. Color is the flat, brightest shade the Metro standard hands down; light is that same color through glass at 34% — subtractive, so on a dark surface it lands darker.

Rejected

A parallel palette for dark surfaces. Doubles the token count and lets the two drift apart.

Consequence

ΔL is the number the pair is checked on: 18 to 30 points in every family, which is also the band that clears AA.

Depth

Screens stack — a sheet over a panel over the ground — and something has to say which one is nearer. Here that is a single number: opacity, five steps, .05 → .40. The blur behind it never changes.

Rejected

A parallel blur ladder stepping down as priority rises. Two properties expressing one idea, disagreeing at the edges.

Consequence

Depth is a single number an engineer can read off a token, and blur became a function of velocity rather than a decoration.

Nomenclature

Token names come from the value itself — the family from where the hue sits, the step from the lightness. Two designers naming the same swatch independently arrive at --lum-blue-52.

Rejected

A curated semantic vocabulary. Readable on day one, contested by month three.

Consequence

Naming stops being a review topic. The token is checkable against its own value.

Color
Light
Glass
Frosted
Dark
Tinted
Prismatic
Opacities
Refractions
Depth
.05
.11
.19
.28
.40
SwatchFamilyColorLightΔLToken architecture
Bronzehue 34°#93744Bhsl(34, 32%, 44%)#3E2E1Ahsl(33, 41%, 17%)−27--lum-bronze44 / 17
Amberhue 34°#ECA74Ahsl(34, 81%, 61%)#AA6405hsl(35, 94%, 34%)−27--lum-amber61 / 34
Tealhue 168°#33A68Fhsl(168, 53%, 43%)#044E41hsl(169, 90%, 16%)−27--lum-teal43 / 16
Azurehue 198°#2C81A5hsl(198, 58%, 41%)#12465Dhsl(198, 68%, 22%)−19--lum-azure41 / 22
Bluehue 221°#2D64DDhsl(221, 72%, 52%)#142B5Chsl(221, 64%, 22%)−30--lum-blue52 / 22
Indigohue 241°#4A49A9hsl(241, 40%, 47%)#292861hsl(241, 42%, 27%)−20--lum-indigo47 / 27
Violethue 288°#793989hsl(288, 41%, 38%)#401E48hsl(289, 41%, 20%)−18--lum-violet38 / 20
Magentahue 328°#AE3375hsl(328, 55%, 44%)#471222hsl(342, 60%, 17%)−27--lum-magenta44 / 17
Emberhue 10°#C44E37hsl(10, 56%, 49%)#65120Ehsl(3, 76%, 23%)−26--lum-ember49 / 23
SurfaceGlass & DepthValueCompositionToken architecture
Frostedlayer 03 · glassrgba(255,255,255,.045)blur 22px——--lum-glass-frosted
Darklayer 03 · glassrgba(0,0,0,.44)blur 22px——--lum-glass-dark
Tintedlayer 03 · glassrgba(79,73,169,.30)blur 22px · takes the family——--lum-glass-tinted
Prismaticlayer 03 · glasslinear-gradient(122deg)magenta · blue · teal at .20——--lum-glass-prismatic
Opacitieslayer 03 · glass.05 / .11 / .19 / .28 / .40five steps——--lum-glass-opacity-scale
Refractionlayer 03 · glasslinear-gradient(100deg).04 · .22 · .04——--lum-glass-refraction
Level 1layer 04 · depthrgba(255,255,255,.05)step 1 of 5——--lum-depth-1
Level 2layer 04 · depthrgba(255,255,255,.11)step 2 of 5——--lum-depth-2
Level 3layer 04 · depthrgba(255,255,255,.19)step 3 of 5——--lum-depth-3
Level 4layer 04 · depthrgba(255,255,255,.28)step 4 of 5——--lum-depth-4
Level 5layer 04 · depthrgba(255,255,255,.40)step 5 of 5——--lum-depth-5

Token names are derived, not assigned. The stem is the family and the step is the HSL lightness, so --lum-blue-52 states its own value and two designers naming the same swatch independently arrive at the same token. The swatch is the stack from the diagram above, seen edge-on and in the same order: 01 color at the base, 02 light, 03 the glass ground, 04 depth. Color is the flat, brightest shade the Metro standard hands down; light is that color seen through refractive glass at 34%. Bands 02 and 03 carry no visible seam because they are one value reached two ways — 02 painted from the stored hex, 03 composited live in the browser — and that agreement is the premise, drawn rather than asserted. The application is subtractive: the surface is dark, so glass takes lightness away and the delta runs negative. ΔL is the number the pair is checked on, 18 to 30 points in every family, and that band is also what clears AA. Depth is carried by opacity alone — .05 · .11 · .19 · .28 · .40, against a blur that does not change. Every translucent value here composites over the page ground, #0E0E0E, and never over the plate it sits on, so a token reads the same here as it does in the figure. Blur belongs to motion, where it measures the gap between a moving object and the trail it leaves.

Accessibility

With no staff on board, nobody is there to help a rider who can't read a screen, so accessibility has to live in the interface itself.

Contrast

A dark theme with glowing accents has to clear WCAG AA on every primary text and control; each applied value sits 18 to 30 points of lightness below its core.[1]

Glass

Frosted, Dark, Tinted and Prismatic all carry text at the same light values, so contrast doesn't reset depending on which surface a control lands on.

Material : Glass

Glass is the one material Lumasis does not define on its own terms. It is authored as a Figma tool built on Apple’s Human Interface Guidelines[2], with refraction, depth, dispersion, frost and splay carried as named values rather than approximated by eye, so a designer specifies glass the way the platform specifies it. That is what lets the same pill render on the Dynamic Island and the Lock Screen without being rebuilt for either.

Pill token architecture

{
  "pill": {
    "bg": {
      "default":  { "value": "{color.surface.1}" },
      "hover":    { "value": "{color.surface.2}" },
      "pressed":  { "value": "rgba(255,255,255,0.08)" },
      "disabled": { "value": "rgba(255,255,255,0.03)" }
    },
    "text": {
      "default":  { "value": "{color.ink.primary}" },
      "disabled": { "value": "rgba(255,255,255,0.35)" }
    },
    "radius": { "value": "{radius.pill}" },
    "height": { "value": "{size.pillHeightMd}" },
    "stroke": {
      "width": { "value": "{stroke.hairline}" },
      "color": { "value": "rgba(255,255,255,0.14)" }
    },
    "glass": {
      "blur":                  { "value": "{blur.glassMd}" },
      "specularOpacity":       { "value": 0.55 },
      "innerHighlightOpacity": { "value": 0.18 },
      "chromaticShift":        { "value": "0.6px" }
    }
  }
}
The glass material authored as a Figma tool — refraction, depth, dispersion, frost, and splay carried as named values in the effects panel rather than approximated by eye.

Components

Machine perception views — lane A-1 classified in green and lane B-4 in violet, each with live telemetry, over a ghosted point cloud of the guideway.
In motion

Every value below is a live token rather than a picture of one. The travelled line runs to the pill, and the blur sits just behind it, growing with speed.

Arriving in 6 min
San José International Airport (SJC)
route.gradientlum-ember-49 → lum-amber-61
position18%
trail.blur7px · behind the pill
Command Control Center title card — gradient wordmark on near-black with glass controls and a guideway loop.

The Dashboard

Built Lumasis from zero: one system for the full ride experience, end to end, across the rider app, access point signs and kiosks, the vehicle UI and the operator console, all on one token architecture.

Built, Not Drawn
Carried forward: the same four parameters resolve inside the components riders and operators actually touch. Each ships with its Figma source beside its production code.
Code
Fleet/Vehicle 42/Diagnostics
Code
Design
Status: Boarding▾
Code
March
Design
⌘K   Search stations, vehicles…
Platform 4
Vehicle 42
Diagnostics
Code
VehicleStatusETA
42On Time2m
17Delayed9m
Design
Operator ID
Notify on delay
Code
On Time Delayed Boarding
Design
Platform 4 — arriving in 2 min
tokens.json
Related Work
Lumasis design system coverGlydways Brand Guidelines cover