Zoriah Cocio · Tucson, AZ · MMXXVI
← Back to index
Volume 01 · Finance UI · 2025

SpendBoard

What does a finance dashboard look like when scanning fifty thousand rows is the first design constraint, not the last?

Role
Design & build
Year
2025
Stack
React · Vite · TanStack

The dashboard genre has a default look. SpendBoard is what happens when you refuse it.

Most spend dashboards open with a chart. Then a stat tile. Then another stat tile. Then, eventually, the table — the thing the finance team actually came for. SpendBoard inverts the order. The table is the page. Everything else is a margin note.

Fifty thousand transactions sit in a virtualized grid that renders only the rows you can see. Filters live as a typed state object that survives the URL, so a saved view is just a sharable link. Charts load lazily and stay on a side panel that you can close. Keyboard shortcuts mirror what spreadsheet users already know.

None of this is novel on its own. What makes the surface feel different is the discipline — every pixel of chrome is on trial, and the table is allowed to win every argument.

Density is honest. A finance team scanning fifty thousand rows doesn't need decoration — it needs the page to stay out of the way.

Evidence — three details that earned their place
i.

Saved views are URLs

Filter, sort, group, and column state all serialize into the address bar. A view is shareable by the act of being viewed.

ii.

Charts are dismissible, not central

The trends panel collapses to a 16-pixel rail. The table reclaims the screen. Most users keep it closed after the first session.

iii.

Sub-second interaction budget

Every filter, sort, and column toggle has a 200-millisecond budget. Anything slower is treated as a bug, not a tradeoff.