Stop 04 · Frontend with ReactProjects · 2/2

Dashboard UI

Part of the Full Stack Developer Roadmap

In short

Admin panels, analytics screens, college ERP portals. Dashboards are everywhere in real jobs, and building one shows you can handle dense layouts, tables and reusable components.

A data-dense admin-style interface — stat cards, a table, and a chart — practice for composing many components together before you wire it up to real backend data in later phases.

The jaadu mascot sits at a steering wheel, glancing at a speedometer, fuel gauge and a small warning light.

Think of it like this

A car's dashboard

Speed, fuel, engine warnings, all visible at a glance without hunting. A good dashboard UI does the same for data: the most important numbers big and up top, details below, and warnings impossible to miss.

Watch it happen

The dashboard's layout tree

.app shell
sidebar
top bar
main
.stats grid
.table-wrap

1/4The shell is a grid with sidebar, top bar and main area.

The big ideas

What you need to know

Shell layout

Sidebar, top bar and a scrollable content area, built with Grid like an app shell.

Stat cards on top

Three or four key numbers in a row of cards, each with a label and a small change indicator.

Tables that fit

Wrap wide tables in a container with overflow-x: auto so they scroll on phones instead of breaking the page.

Design tokens

Use CSS variables for colours, spacing and radius so every card and table looks consistent.

How it works

Build plan

  1. 1

    Tokens first

    Set colours, spacing and radius as CSS variables on :root.

  2. 2

    App shell

    Grid with a collapsible sidebar, top bar and main area.

  3. 3

    Stat cards

    A responsive row of four cards with auto-fit Grid.

  4. 4

    Data table

    A recent orders table with sticky header and horizontal scroll on mobile.

  5. 5

    Dark mode

    Swap the token values under a data-theme attribute.

See it in code

Walk through the code

css
1:root { --gap: 1rem; --card: #fff; --radius: 12px; }2 3.stats {4  display: grid;5  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));6  gap: var(--gap);7}8.stat {9  background: var(--card);10  border-radius: var(--radius);11  padding: var(--gap);12}13 14.table-wrap { overflow-x: auto; }15.table-wrap thead th { position: sticky; top: 0; background: var(--card); }

1/4Design tokens for spacing, card colour and corner radius.

Stat cards wrap from four to one column on their own. The table wrapper scrolls sideways on phones and the header sticks while scrolling down.

Save yourself the pain

Common mistakes

Oops

Cramming every chart and number onto one screen.

Do this instead

Lead with the three or four numbers that matter. Put the rest in tabs or lower sections.

Oops

Using colour alone to show 'up' or 'down'.

Do this instead

Add an arrow or a + or − sign too, for colour-blind users.

Your mission

First milestone: overview page

~45 min

Quick check

A wide data table breaks your dashboard layout on phones. What's the cleanest fix?

Go deeper

  1. 1Break the dashboard into small, independent, reusable components.
  2. 2Use placeholder/mock data structured the way your future API will actually return it.
  3. 3Add loading skeleton states, even before there's a real API to be slow.

More projects at this stop

Stuck on this topic? Ask an Insider

Get 1:1 guidance from people who've walked this exact path — on the InsideEdge app.

Download
InsideEdge