Selected workDeveloper tools

Cloudflare

From 2021 to 2023 I was head of design systems at Cloudflare. I managed a team of designers and developers, built the components in React, and designed parts of the dashboard developers use to run their sites and code. Three pieces are here: a map of the dashboard, a redesign of the Workers overview, and the component library my team built for every product.

Role
Head of Design Systems
Company
Cloudflare
Years
2021 to 2023
Users
Developers and site owners
I made
Information architecture, screens, React components, team leadership
Redesigned Cloudflare Workers overview: a sidebar of products, a data summary for May with bundled and unbound requests, duration and Durable Objects storage, and a sortable table of services with requests, duration, median CPU time, errors and last modified.2022
Workers overview, 2022. Usage for the month across the top, every service in one sortable table below.
Project 1

A map of the dashboard

A roadmap for one set of levels across every product, from sign-up to the page where a setting gets changed.

Every product, the same levels

The Cloudflare dashboard holds dozens of products, from DNS and security to Workers, and each one is built by its own team. Without a shared shape, every product invents its own navigation and a developer has to relearn the dashboard each time they move between them.

I proposed a roadmap built on the levels every product passes through: from cloudflare.com and sign-up, to the list of all products, a product’s overview, its tools and analytics, and the side panels and detail pages where things get edited. With it, a team adding a page could see which level the page belonged on and what sits above and below it.

Dashboard sitemap in six bands from marketing to editable details: cloudflare.com, product onboarding, a row of product verticals, product overview pages, tool and analytics pages, and detail side panels and detail pages, with one path highlighted.Map
The roadmap, level by level. One path from cloudflare.com to a detail page, with the rest of the products greyed out.

Load Balancing

I worked Load Balancing through the map, with load balancers, pools and monitors each getting their own list and detail pages.

Load Balancing exploration: a list of load balancers with health, pools, TTL, proxied and enabled toggles under tabs for analytics, load balancers, monitors and pools, next to a load balancer detail page with its origin pools and a side panel for one pool.2023
The screens that followed. The list of load balancers, and a detail page with a pool open in a side panel.
Project 2

Workers overview

The first page developers see when they open Workers, Cloudflare’s serverless platform.

Where it started

The overview showed each service as a card, with usage, account settings and links stacked in a column beside them. Requests, errors and CPU time only appeared for services with recent traffic, so comparing services meant scanning card by card. The screen below is that layout, cleaned up so it compares fairly with the redesign.

Earlier Workers overview: five service cards, some showing requests, errors and median CPU time for the last 24 hours and some reading No recent requests, beside a column of usage figures, settings, account ID and getting-started links.Before
Before, cleaned up. One card per service, and usage in a column on the right. The account ID is blurred.

One table, three sizes

The redesign puts the month’s usage in a row across the top and every service in one table, with requests, duration, CPU time and errors in columns a developer can sort. Resources and guides move to the bottom of the page.

I drew it at desktop, tablet and phone sizes, along with the pages a service, a KV namespace and a storage bucket open into. On a phone, each row of the table becomes a short card with the numbers that matter most.

Figma board of the Workers redesign: the overview and search at desktop, tablet and mobile sizes in three rows, and child pages for a service, a namespace and a bucket beside them.Figma
Desktop, tablet and mobile. The overview on the left, and the pages it opens into on the right.
Project 3

Component library

An internal React and Figma library to bring dozens of inconsistent products onto the same parts.

Built from the same parts

Every product in the dashboard’s left nav had grown on its own, with its own tables, forms and buttons that looked and behaved differently. My team built one component library in React and a matching library in Figma, so every product team could build from the same parts. It was fully internal and never had a public name.

Teams adopted the components product by product, and were starting to replace the hardest pieces, like data tables, with the shared versions. The 2022 button takes its height from the baseline grid and its padding from the base unit, so it lines up with the text and inputs around it on any page.

I also led an accessibility audit of the dashboard. Every issue was tracked to the page it affected and checked again after the fix shipped, so a fix that missed came back as a new ticket instead of being marked done.

Two dashboard pages side by side: the WAF firewall rules list and the Workers overview, sharing the same sidebar, page header, data table, toggles, search and pagination.2023
Two products, one set of parts. The WAF rules list and the Workers overview use the same header, table, search and pagination.
CSS for the cf22-button class: border, radius, white text, system font, body font size, height set to one and a half baseline grid units, and padding from the base unit.Code
The 2022 button. Height and padding come from the grid, not from fixed pixels.

What carried forward

At Cloudflare I worked at both ends at once: the map of the whole dashboard and the code for a single button. I still work that way at SMX, where the operator screens and the components they’re built from get designed together.