The activity heat map

Collections × operations, incremented live by the change stream, with colour tracking recency rather than totals.

The activity heat map in Kubo
Rows are the busiest namespaces, columns are insert / update / replace / delete.

The Activity section is the at-a-glance dashboard, and its centrepiece is a heat map of collections × operations: rows are the busiest namespaces, columns are insert, update, replace and delete.

Colour is recency, not volume

Every change event carries an exponential recency decay — a weight that halves roughly every twelve seconds, over a window of about a minute. That decayed weight drives the cell’s colour, while the raw event count stays the readable label.

The result is a display that behaves the way you expect a live one to: a burst of writes lights a cell up, and it cools smoothly as the burst subsides, instead of staying bright because it was busy a minute ago. Collections are ranked by decayed weight too, so a namespace that is busy right now rises above one that was.

That separation — colour for “how recent”, number for “how much” — is why the grid is readable at a glance and still accurate when you look closely.

The rest of the section

  • an operations-mix strip — which write operations dominate right now, across the whole database;
  • an index-usage summary, with a tap through to Indexes.

The grid itself

The heat map is a shared component: a skinnable labelled grid with animated cells that brighten and cool, a per-cell tooltip, normalisation per column or across the whole matrix, and an optional second channel so colour and number can track different signals — which is exactly what the recency decay uses.

The sample MongoDB connection ships a mock shop database with evolving counters and a timer-driven synthetic change stream, so the heat map animates with no backend at all.

Back to MongoDB.