Anatomy of a dashboard
A dashboard is a page type, not a blank canvas. Four bands, top to bottom, and the reason each sits where it does.
Four bands
- 1. The numbers. A row of stat cards: what somebody opening this screen at 08:30 needs before anything else.
- 2. The shape. One or two charts, showing the trend behind those numbers.
- 3. The detail. A table or list: what to actually act on.
- 4. The rest. Secondary panels and activity, which a reader scrolls to rather than looks for.
The order is not decoration. Summary, then trend, then detail, because that is the order the questions arrive in: what is happening, is it getting worse, and which one.
the frame
<div className="flex h-full flex-col">
<PageChrome title="Dashboard" />
<div className={PAGE_SCROLL}>
<div className="grid gap-4 p-4 md:p-6">
<section className="grid gap-4 sm:grid-cols-2 xl:grid-cols-4">
{/* 1. stat cards */}
</section>
<section className="grid gap-4 lg:grid-cols-3">
{/* 2. a wide chart and a narrow one */}
</section>
{/* 3. the table */}
</div>
</div>
</div>This is page type 3
A dashboard is the manual one: you compose the frame rather than handing a field list to a component. Say which of the five types you are building before you start.
Three rules that keep it readable
- Four stat cards, not seven. Past four, nobody reads any of them. If you have seven numbers, two are the headline and five belong in the table.
- Every number needs a period.“Revenue 42,300” is not information until it says over what. Put the range on the card or in the page header, and never in neither.
- Design the empty and the failing state first. A new tenant sees zeroes and a failed query sees nothing. A dashboard that only looks right with good data looks broken exactly when somebody is looking hardest.