What Is a Design System (and Why Should You Care)?
Design systems aren't just component libraries. They're the shared language between design and engineering. This week sets up the entire semester.
1
Open — More Than a Style Guide
~45 sec
▶
When people hear "design system" they usually picture a Figma file full of buttons and color swatches. That's a piece of it, but it's not the whole picture.
A design system is a set of decisions made once so they don't have to be made again. It includes the tokens, the components, the patterns, and the documentation that ties them all together.
Companies like Google, Microsoft, and IBM invest in design systems because they let teams build faster without sacrificing consistency. That's what you'll be building this semester.
2
Atomic Design — How Systems Are Structured
~1 min
▶
Brad Frost's Atomic Design is the mental model we'll use all semester. It breaks a UI down into five levels, from the smallest building blocks to full pages.
You don't need to memorize this, but you need to think in layers. When you look at an app, you should be able to say: "That card is made of a heading atom, a paragraph atom, and a button atom."
Atomic design hierarchy
Atoms
Smallest building blocks that can't be broken down further
colors, fonts, buttons, labels, inputs
Molecules
Groups of atoms working together as a unit
search bar (input + button), form field (label + input)
Organisms
Complex sections made of molecules and atoms
navigation header, card grid, footer
Templates
Page-level layouts with placeholder content
homepage layout, dashboard layout
Pages
Templates with real content — the final product
your design system site's homepage, component page
3
The Semester Project — What You're Building
~1 min
▶
You're going to pick a real startup from ProductHunt, audit its existing interface, and build a design system for it from scratch.
By the end of the semester you'll have: a Figma component library with tokens and variants, a coded design system site in CodePen with three pages, and a 10-minute recorded presentation.
Think of yourself as the design systems lead for this startup. You're wearing four hats: UX designer, UI designer, design systems manager, and frontend engineer.
Your 7-week journey
Proposal
Pick your startup
Pick your startup
→
Audit + Tokens
Catalog the UI
Catalog the UI
→
Figma Components
Design the system
Design the system
→
Code + Docs
Build the site
Build the site
→
Present
Ship it
Ship it
4
Picking the Right Startup
~45 sec
▶
Your proposal is due this week. The most important decision is which startup you choose. A good pick makes the whole semester easier.
Look for an app with a visible UI you can screenshot and audit. If the product is API-only or behind a paywall you can't access, you'll be stuck.
Pick something with enough complexity to have interesting components (navigation, cards, forms, etc.) but not so sprawling that you can't scope it in 7 weeks.
Your proposal covers five things: company background, current UI/UX state, existing design system (or lack of one), your plan, and your scope. Be specific about scope — what you will and won't cover.
5
Close — Set Yourself Up Right
~30 sec
▶
This week is about getting your tools set up and making a smart startup choice. Everything builds from here.
Make sure your Figma and CodePen are both working. Do the warm-up exercise — it's a quick check that you can move between both tools comfortably.
Seeing the System Inside the App
Before you can build a design system, you have to understand what already exists. This week you're learning to look at a UI and extract the decisions behind it.
1
Open — Why Audit Before You Design?
~30 sec
▶
It's tempting to jump straight into designing components. But if you don't understand the current state of the UI first, you'll build a system based on assumptions instead of evidence.
The audit is your research phase. It tells you what your startup's UI is doing today — the good, the bad, and the inconsistent.
2
How to Run a UI Audit
~1 min
▶
Screenshot everything. Landing pages, settings screens, modals, empty states. Get the full picture.
Then catalog what you see into three categories: Foundations (colors, type, spacing, icons), Components (buttons, cards, nav), and Patterns (forms, menus, modals).
The goal isn't just to list things. It's to annotate what you notice. Are the buttons consistent? How many shades of gray are they using? Does the typography follow a scale or is it all over the place?
What to catalog in your audit
Foundations
Color palette (primary, secondary, neutrals, error)
Font families, sizes, weights
Iconography style
Spacing and grid patterns
Components
Button variants (all of them)
Cards and containers
Navigation elements
Input fields and forms
Patterns
Menus and dropdowns
Form layouts
Modals and overlays
Empty states and errors
3
From Audit to Tokens
~1 min
▶
Your audit findings directly inform your design tokens. If you found 6 different blues in the app, your job is to decide: which ones stay, which ones merge, which ones go?
Design tokens are the named values that define your system. Colors, font sizes, spacing units. In Figma they're variables and styles. In code they're CSS custom properties.
Set up a Design Tokens page in Figma this week and translate everything into CSS variables in CodePen. This is the backbone of your entire system.
Audit findings become tokens
Audit finds 6 blues
Inconsistent usage
Inconsistent usage
→
You decide on 3
Primary, Secondary, Accent
Primary, Secondary, Accent
→
Figma Variables
Named + documented
Named + documented
→
CSS Variables
--color-primary: #...
--color-primary: #...
4
Getting Started with Figma Components
~45 sec
▶
You're also creating your first real component this week in the general assignment — a button with auto layout, variants, and a boolean property for an icon toggle.
This is practice for Week 3, where you'll build your full component library. Get comfortable with auto layout, variants, and properties in Figma now. They're the tools you'll use every week going forward.
One thing to keep in mind: always use your design tokens when styling components. Don't pick colors by eye. Apply the styles and variables you defined on your tokens page.
5
Close
~30 sec
▶
This week is dense — revised proposal, UI audit, tokens in Figma, tokens in CodePen. Start early and work through it piece by piece.
The audit and the tokens are the foundation for everything you'll design and code for the rest of the semester. Take your time with them.
Building Components That Scale
This week you're designing your core component library in Figma. The decisions you make here define the system your code will follow.
1
Open — Think System, Not Screen
~30 sec
▶
When you design a button this week, you're not designing one button. You're designing every button your system will ever need.
That means thinking about types, states, sizes, and edge cases. A primary button, a secondary button, a ghost button, a danger button — each in default, hover, pressed, and disabled states.
This is the shift from UI design to systems design. Every decision should be intentional and documented.
2
The Variant Matrix
~1 min
▶
Your buttons need 4 types and 4 states. That's 16 variants. It sounds like a lot, but if your tokens are set up right, most of the work is just swapping color variables.
Before you start designing, map out your matrix. Know what you're building before you open Figma. It keeps you organized and makes sure you don't miss states.
Button variant matrix (4 types x 4 states)
| Default | Hover | Pressed | Disabled | |
|---|---|---|---|---|
| Primary | Filled / Bold | Darken 10% | Darken 20% | 50% opacity |
| Secondary | Outlined | Fill subtle | Fill medium | 50% opacity |
| Accent | Accent color | Darken 10% | Darken 20% | 50% opacity |
| Icon | Ghost / icon only | BG appears | BG darker | 50% opacity |
3
Plan Your Site's Information Architecture
~1 min
▶
You're also defining your information architecture this week — the structure of your design system site. Think of it as a sitemap: what pages exist and how do they connect?
Your final site needs three pages at minimum: a Homepage, a Component Page, and a Guidelines Page. But the IA is your chance to think bigger about how someone would navigate your system.
Ask yourself: if a developer landed on your site looking for the right button to use, how many clicks would it take them to find it?
Minimum site structure
Design System Site
Homepage
Intro, purpose,
navigation
navigation
Component Page
Variants, states,
live examples
live examples
Guidelines Page
Usage rules, do's/don'ts,
code patterns
code patterns
4
Figma Hygiene — Build It Clean Now
~45 sec
▶
This is the week where Figma organization really starts to matter. You're creating enough components that a messy file will slow you down.
Name every layer. Not "Frame 427" — something meaningful. Use auto layout on everything. Organize your pages logically (Tokens, Components, etc.).
Annotate your components: what is it, what's its purpose, when would you use one variant over another. These annotations will become your guidelines later.
A clean Figma file makes the coding phase in Week 4 dramatically easier. A messy one makes it painful.
5
Close — Peer Feedback Matters
~30 sec
▶
You're sharing your IA and your components with classmates for peer review this week. Take that seriously. Fresh eyes will catch gaps you've gone blind to.
After this week, you move into code. What you design now is what you'll build. Make it solid.
From Figma to Code: Thinking in Systems
How to translate your Figma components into clean, reusable HTML and CSS without losing the design intent along the way.
1
Open — The Gap Between Design and Code
~45 sec
▶
You've spent a few weeks building components in Figma. Buttons, cards, inputs. They look right in Figma. Now you need to make them real in code.
The number one mistake students make here is treating this like a pixel-matching exercise. It's not. You're translating a system, not copying a picture.
What I want you thinking about this week: how does my Figma file already tell me what my CSS should look like?
Your workflow this week
Figma Tokens
Colors, Type, Spacing
Colors, Type, Spacing
→
Dev Mode
Reference Values
Reference Values
→
CSS Variables
:root { --token }
:root { --token }
→
BEM Classes
.btn--primary
.btn--primary
2
CSS Variables Are Your Design Tokens
~1 min
▶
In Figma you defined colors, type scales, spacing. Those are your design tokens. In code, those become CSS custom properties (variables).
Before you write a single component, set up your :root variables. Colors, font sizes, spacing units, border radii. All of it.
If you find yourself typing a raw hex code or a magic number like padding: 13px, stop. That value should be a variable that maps back to your Figma tokens.
This is what separates a bunch of styled HTML from an actual design system in code.
Spot the difference
✗ Without tokens
background: #4f46e5;
padding: 12px 24px;
font-size: 14px;
border-radius: 8px;
color: #ffffff;
✓ With tokens
background: var(--color-primary);
padding: var(--space-3) var(--space-5);
font-size: var(--text-sm);
border-radius: var(--radius-md);
color: var(--color-on-primary);
3
Use Dev Mode — It's There for a Reason
~1 min
▶
Figma Dev Mode shows you the CSS values for any element you click on. Spacing, typography, colors. Use it.
But here's the thing — don't just copy-paste what Dev Mode gives you. It's a reference, not a finished stylesheet. The output won't use your variable names or follow BEM naming.
Your workflow should be: check Dev Mode for values, then write your own CSS using your tokens and your naming conventions.
4
BEM Naming and Component Structure
~1 min
▶
BEM stands for Block, Element, Modifier. It's a naming convention that keeps your CSS organized as your system grows.
.btn is the block. .btn__icon is an element inside it. .btn--primary is a modifier that changes its appearance.
Think about how your Figma variants map to this. Your button has types (primary, secondary, ghost, danger) and states (default, hover, active, disabled). Those are your modifiers.
Every variant in Figma should have a corresponding class in your CSS. If it doesn't, your code and your design file are out of sync.
BEM maps to Figma variants
.btn
Block
The component itself
The component itself
.btn__icon
Element
A part inside the block
A part inside the block
.btn--primary
Modifier
A variant or state change
A variant or state change
Figma variant "Type=Primary" → CSS class .btn--primary
|
Figma state "Hover" → CSS .btn--primary:hover
Reminder: You're coding buttons (4 types x 4 states), cards, and 2 additional components this week. Start with your CSS variables, then build one component at a time.
5
Close — What Good Looks Like
~30 sec
▶
When I review your code, I'm looking for: CSS variables that match your Figma tokens, clean BEM naming, semantic HTML, and components that look like they belong to the same system.
If someone swapped out your color variables, the entire system should update. That's the test. That's what makes it a system.
Writing Guidelines That Actually Get Used
Design system documentation isn't about describing what a component looks like. It's about telling someone when, why, and how to use it correctly.
1
Open — Documentation Nobody Reads
~45 sec
▶
Most design system docs fail because they describe what a component is. "This is a button. It has a label." That's not useful to anyone.
Good documentation answers three questions: When do I use this? How do I use it correctly? And what should I avoid?
Think about who's reading your guidelines page. It's a developer or designer on your team who's trying to make a decision right now. Help them make the right one.
2
Anatomy of a Good Guidelines Page
~1 min
▶
Start with a short overview. One or two sentences. What is this component and what problem does it solve?
Then show examples. Not just a screenshot sitting there — show the component in context. Where does it live in the UI? What content goes inside it?
Include do's and don'ts. "Use the primary button for the single most important action on the page. Don't use it for every button in a form." Specific, practical.
End with code structure. Show the HTML and CSS. Not the full stylesheet, just the relevant pattern so someone can implement it.
Anatomy of a guidelines page
Overview
1-2 sentences. What it is, what problem it solves.
Examples in Context
Show the component in a real layout, not floating alone. Include content.
Variants and States
All types side by side. Default, hover, active, disabled for each.
Do's and Don'ts
Specific usage rules. When to use this variant over another.
Code Structure
HTML pattern + relevant CSS. Enough to implement, not the whole stylesheet.
3
Foundation Pages vs. Component Pages
~1 min
▶
You're writing two guidelines pages: one for a foundation (colors, typography, or spacing) and one for a component (buttons, cards, etc.).
Foundation pages are about rules and rationale. Why these colors? What's the type scale? How does the spacing system work? Show the tokens and explain the logic.
Component pages are about usage and behavior. When do I use this variant? What are the states? What are the responsive considerations?
Go look at how Material Design, Carbon, or Fluent UI structure their pages. You don't need to match their scale, but notice how every section answers a question.
Different pages, different goals
Foundation Page
Token values and their names
Rationale for choices (why this scale?)
Accessibility notes (contrast ratios)
CSS variable reference table
Rules for extending the system
Component Page
When and where to use it
All variants with visual examples
Interaction states (hover, focus, etc.)
Do's and don'ts with context
HTML/CSS implementation pattern
4
Responsive Mockups — Think About the Shift
~45 sec
▶
You're also designing mockups at 375px and 1440px this week. The point isn't just to make two versions of the same page.
Annotate what changes and why. Does the navigation collapse? Does a multi-column layout stack? Do card sizes change? Those annotations show you're thinking about the system, not just the screen.
Your design system components should be flexible enough to handle both. If they aren't, that's a signal to revisit your component structure.
Annotate the shift, not just the screens
375px
←→ Nav collapses to hamburger
←→ 3-col grid stacks to 1-col
←→ Cards go full-width
←→ Spacing scale adjusts
1440px
5
Close
~30 sec
▶
Your guidelines pages are going to become part of your final site. Put effort into them now and Week 7 gets a lot easier.
If you're stuck, start by opening Material Design's button page and ask yourself: what decisions did they document? Then do the same for yours.
Selling Your Design System
Your presentation isn't a class assignment recap. It's a pitch. You're convincing a head of design and engineering that your system is worth adopting.
1
Open — The Audience Matters
~30 sec
▶
Your presentation brief says you're pitching to a head of design and a head of engineering. That framing is intentional.
These people don't care about your process for the sake of process. They care about what problems your system solves and why they should invest in it.
2
Structure Your Story, Not Just Your Slides
~1 min
▶
Your deck has required sections: intro, research, design process, development process, key features, responsive design, reflection, conclusion. That's the skeleton.
But the skeleton isn't the presentation. The presentation is the story that connects those sections. What did you find in your research? How did that shape your decisions? What trade-offs did you make?
A common mistake: slides that say "I made buttons" with a screenshot. That's not a story. "Our audit found 14 inconsistent button styles across the app, so we consolidated to 4 types with clear use cases" — that's a story.
Your presentation arc
1
Problem
What's broken?
What's broken?
2
Research
What did you find?
What did you find?
3
Process
Design + Dev
Design + Dev
4
Solution
Key features
Key features
5
Demo
Show the site
Show the site
6
Reflect
What's next?
What's next?
3
Show the Work, Don't Describe It
~1 min
▶
Your slides should be mostly visual. Screenshots of your Figma components. Before-and-after comparisons from your UI audit. Side-by-side of your Figma and your coded version.
Keep text on slides minimal. You're the narrator. The slides are the evidence.
When you get to the demo section, walk through your actual site. Don't just show static screenshots of it — show navigation, show the component page, show the guidelines.
Text-heavy slide vs. visual slide
4
The Draft Is a Draft — But a Useful One
~45 sec
▶
Your presentation draft can have placeholder content. That's fine. But the structure should be solid. I should be able to see the arc of your story even if some slides are incomplete.
Same with your site draft. Homepage, at least one component page, at least one guidelines page. Include notes on what's missing and a clear task list for next week.
Drafts that show intentional planning are always stronger than polished work without direction.
5
Close
~15 sec
▶
You're one week from the finish line after this. Use Week 6 to get your story and your site into a shape where Week 7 is about polishing, not scrambling.
Ship It: Finals Checklist and Common Pitfalls
This is the last push. Here's what separates a finished project from a polished one, and what I'll be looking at when I review your work.
1
Open — You're Closer Than You Think
~30 sec
▶
If you've been keeping up each week, most of your site is already built. Your components are coded, your guidelines pages exist, your presentation has structure.
This week is about pulling it all together, filling gaps, and making it something you're proud to present.
2
The Five Things I'm Evaluating
~1 min
▶
Comprehensive Component Library — Are your components complete with variants and states? Do they match your Figma source?
Consistency and Cohesion — Does everything feel like it belongs to the same system? Same spacing logic, same color usage, same typography.
Scalability and Flexibility — Could someone add a new page or component using your tokens and patterns? Or would they have to guess?
Accessibility — Semantic HTML, sufficient color contrast, meaningful alt text thinking. The basics.
Design Communication — Can someone understand your system just by reading your site? That's what the guidelines and documentation are for.
Rubric breakdown (same for site + presentation)
20
Component Library
Complete variants, states, Figma match
20
Consistency
Unified spacing, color, type across all pages
20
Scalability
Tokens and patterns someone else could extend
20
Accessibility
Semantic HTML, contrast, focus states
20
Design Communication
Can someone understand and use the system from the docs alone?
Each of these is worth 20 points for both your site and your presentation. They're weighted equally because they all matter equally.
3
Common Mistakes I See Every Semester
~1 min
▶
Figma and code don't match. If your coded button doesn't look like your Figma button, that's a red flag. The whole point is the design file is the source of truth.
Guidelines that describe but don't guide. "This is a card component" isn't a guideline. "Use the card component to display preview content in browse views. Always include an image, title, and one action" — that's a guideline.
Presentation is a recap, not a pitch. Don't walk through the semester chronologically. Lead with the problem, show the solution, explain why it works.
Broken links, missing pages, sloppy HTML. Run your code through the W3C Validator. Check every link. Test at both breakpoints.
Pre-submit checklist
☐
CSS variables match every Figma token (no raw hex codes)☐
All button types x all states coded and visible☐
Guidelines page has do's/don'ts, not just descriptions☐
Site works at 375px and 1440px (test both)☐
HTML passes W3C Validator with no errors☐
All internal links work (no dead pages)☐
Presentation tells a story (problem → solution), not a timeline☐
Recorded presentation is under 10 minutes
4
Close — Make It Count
~30 sec
▶
Your recorded presentation is 10 minutes. Practice it at least once before you hit record. Know your transitions. Have your demo ready.
This project is portfolio-worthy work if you give it the polish it deserves. Future you will appreciate the effort.