Skip to content
All work

Frontend Lead

Freedom Robotics

A 0 to 1 fleet management app for robots. I redesigned how it used the API, cutting query load by 90% and perceived delays by 75%, and built the internal SDK the app used to talk to it.

  • React
  • TypeScript
  • SDK
  • Performance
Role
Frontend Lead
When
2020 to 2023
Stack
React, Redux, TypeScript, Next.js, Recharts, Mapbox GL
How I joined
Through Toptal, then hired by the company
less API query load
90%
shorter perceived delays
75%
new app and internal SDK
0 to 1

Context

Freedom Robotics was a San Francisco startup backed by Initialized Capital. I joined through Toptal to build a brand new web app from the ground up, and the company later hired me directly.

The product was a fleet management platform: teams used it to monitor and control their robots remotely.

Building the app from zero

The existing app was legacy code: React Router, class components and almost no TypeScript. Patching it would have kept every problem alive, so we started a brand new app in Next.js and TypeScript.

The priority was intuitive user journeys on top of dense, live data: dashboards, charts and maps. I also set up a vetted UI kit, which improved both user engagement and the day to day experience of the developers building on it.

Legacy appSmart alerts in the legacy app: each alert written as rule syntax, like topic /battery/voltage element data less than 14, with identical Edit buttons
New appSmart alerts in the new app: each alert with a severity icon, a plain language message such as the robot battery is low, please return it to the charger, and its trigger type
Smart alerts, before and after. The legacy app showed the rule behind each alert; the new one says what is happening in plain words, with severity at a glance. Captured from development recordings in 2021.

A screen worth a closer look

Zone details: a live blueprint of a facility with every robot moving on it in real time, colored by warning level. From there an operator could send commands remotely, or take over a robot and pilot it by hand.

Cutting API load by 90%

The old app kept fetching data for every device, including devices the user was not even looking at. I redesigned how the new app used the API so it asks for device data only when someone needs it.

fewer queries per second
90%
shorter delays users noticed
75%

An SDK for the API

I built an SDK from scratch as the single way the app talked to the API. It was internal and never released, but it gave the whole frontend one consistent way to get its data.

Next case study

Ramps: a design system study

A study of Ramp’s design system and Bill Pay app, rebuilt from their public product videos with a Claude Code skill I wrote: 40 components and nearly 200 stories in Storybook, plus a working demo backed by Supabase.