
Berkeleytime
Bridging Design and Engineering
Summary
Years of rapid feature releases without a standardized design system led to fragmented UI, duplicated work, and friction between design and engineering, so our team built Berkeleytime's first design system from the ground up.
My Contribution
I built our foundational design system in Figma with a team of 2 designers, then, as design lead this semester, translated it into a token-based system connecting Figma to code via Storybook. We shipped a 48+ component, WCAG-AA compliant library.
Timeline
From January 2025 to Present
Team
1 Engineering Lead
1 Design Lead
1 Engineers
2 Designers
Tools
VS Code
Figma
Storybook
Claude Code
Skills
User Research
Prototyping
Usability Testing
Frontend

Before: A Grades page built with hardcoded CSS
Inconsistent component rendering, a broken A+ bar, mismatched card styles, and an oversized tooltip, all symptoms of miscommunication between engineers and designers working without a single SOT.
After: Standardized Grades & Analytics interface
Unified data visualization components, consistent card hierarchy, and a cohesive interaction language across different states (active and inactive), shipped using our component library and actively being built in Storybook.
Structural Code Drift & Fractured User Trust
For 50,000+ monthly users, finding and filtering Berkeley courses should feel fast and frictionless, not like piecing together information scattered across inconsistent UI patterns. For 50,000+ monthly users, finding and filtering Berkeley courses should feel fast and frictionless.

Figma Copy-Paste Drift
Without shared production tokens, the Course Card was implemented differently across pages, resulting in variations in typography, color, and spacing.
Designers used static values in Figma like #003262 and 17.5px with no linked tokens
Without root variables defined in production, devs use raw generated fallback values.
Developers inspect pixels line by line and hand-coded CSS, duplicating work each time.
Handoff reviews bloated into multi-week iteration cycles fixing visual drift and accessibility bugs.
Manual & High-Friction Handoffs
With no copyable component primitives in Storybook, developers were forced to rebuild components from scratch, turning handoff reviews into multi-week iteration cycles.
A pattern of inconsistent feature updates had fractured user trust over time.

We audited existing UI to identify the highest-impact, most inconsistent components first.
For 50,000+ monthly users, finding and filtering Berkeley courses should feel fast and frictionless, not like piecing together information scattered across inconsistent UI patterns.


Solution
Component library highlights
Key Highlights
100%
Of the engineering team references component library before pushing prod
100%
Of the engineering team references component library before pushing prod
2 rounds
Design-to-dev handoff reduced from multiple review cycles to two




Outcome
From fragmented UI to a comprehensive system applied across every new feature shipped.
The design system became the foundation for all new Berkeleytime development. Engineers referenced Storybook components directly, reducing the copy-paste drift that had accumulated across the codebase. The grades and enrollment pages, Berkeleytime's two highest-traffic views, were rebuilt using the library, restoring the visual consistency that 50,000+ students depend on each semester.
Key Highlights
48+
components are a part of our library
20+
comments appreciating updated UI through usability testing








