Back to posts

Atomic Design in Practice: From Atoms to Pages

Build interfaces like chemists build molecules. Learn Brad Frost's 5-level methodology—atoms, molecules, organisms, templates, pages—with practical React examples.

TS
Thiago Saraiva
7 min read

Atomic Design

Atomic Design in Practice: From Atoms to Pages

What if we could build interfaces like chemists build molecules?

That's the premise of Atomic Design, a methodology created by Brad Frost that changed how we think about interface components.

The Chemistry Metaphor

In chemistry:

  • Atoms are the basic building blocks
  • Atoms combine to form molecules
  • Molecules combine to form organisms

In interface design:

  • Atoms are basic elements (buttons, inputs, labels)
  • Molecules are groups of atoms (search form, media block)
  • Organisms are complete sections (header, footer, card grid)
  • Templates are layouts without real content
  • Pages are templates with final content

The 5 Levels

1. Atoms

The smallest possible components. They can't be broken down without losing meaning.

Examples of atoms:

  • Buttons
  • Inputs
  • Labels
  • Icons
  • Images
  • Headings
  • Paragraphs

2. Molecules

Groups of atoms working together as a unit.

Examples of molecules:

  • Search form
  • Media block
  • Nav item
  • Card (simple)
  • Product thumbnail

3. Organisms

Distinct interface sections composed of molecules and/or atoms.

Examples of organisms:

  • Header
  • Footer
  • Sidebar
  • Product grid
  • Comment section
  • Newsletter signup

4. Templates

Layouts that define page structure without real content.

Templates are structure without content. They use placeholders or props to receive organisms.

5. Pages

Templates filled with real content.

Folder Structure

src/
  components/
    atoms/
      Button/
      Input/
      Icon/
      Text/
    molecules/
      SearchForm/
      MediaBlock/
      NavItem/
      ProductCard/
    organisms/
      Header/
      Footer/
      ProductGrid/
      FilterSidebar/
    templates/
      ProductListTemplate/
      ProductDetailTemplate/
      CheckoutTemplate/
    pages/
      ProductListPage/
      ProductDetailPage/
      CheckoutPage/

Advantages of Atomic Design

1. Consistency

Same atom used throughout the app = same look everywhere.

2. Reusability

Smaller components are more reusable.

1 Button × 50 uses = 1 component
vs
50 different buttons = 50 components

3. Maintainability

Change in one atom propagates automatically.

4. Testability

Small components are easier to test.

5. Onboarding

New devs understand the structure quickly.

Implementing in Practice

Step 1: Visual Audit

Before creating components, take inventory:

  1. Screenshot all project screens
  2. Cut out repeating elements
  3. Group by similarity
  4. Identify variations

Step 2: Define Atoms

Start with the most basic elements:

□ Typography (h1-h6, p, span)
□ Button (primary, secondary, ghost)
□ Input (text, email, password)
□ Select
□ Checkbox/Radio
□ Icon set
□ Image/Avatar
□ Badge/Tag
□ Link

Step 3: Compose Molecules

Identify groups that always appear together:

□ Form Field (label + input + error)
□ Search Bar (input + button)
□ Card (image + title + description)
□ Nav Item (icon + label + badge)
□ User Avatar (image + name + status)

Step 4: Build Organisms

Complete interface sections:

□ Header (logo + nav + search + user)
□ Footer (links + social + copyright)
□ Sidebar (filters + categories)
□ Hero (title + subtitle + cta + image)
□ Product Grid (title + cards)

Step 5: Define Templates

Content-less layouts:

□ Home Layout
□ List Layout
□ Detail Layout
□ Dashboard Layout
□ Auth Layout

Common Pitfalls

1. Over-engineering

Not everything needs to be an atom. If something is used once, it doesn't need to be componentized.

2. Wrong Coupling

Atoms shouldn't know about context:

3. Too Many Props

If an atom has 20 props, it should probably be a molecule.

4. Rigid Levels

The 5 levels are guides, not rules. If something doesn't fit perfectly, that's okay.

Storybook + Atomic Design

The Atomic Design structure maps perfectly to Storybook:

└── Stories
    ├── Atoms/
    │   ├── Button
    │   ├── Input
    │   └── Icon
    ├── Molecules/
    │   ├── SearchForm
    │   └── MediaBlock
    ├── Organisms/
    │   ├── Header
    │   └── ProductGrid
    └── Templates/
        └── ProductList

Conclusion

Atomic Design isn't about following rigid rules — it's about thinking in systems.

When you look at an interface and see atoms, molecules, and organisms instead of "a bunch of divs", you start building more consistently, reusably, and maintainably.

The chemistry metaphor is powerful: just as all the complexity of the physical universe emerges from ~100 elements, all the complexity of an interface can emerge from a few dozen well-designed components.