SKP
Get in touch

CASE FILE 01 / 2026 / LEAD FRONTEND

NEXUS — REALTIME GRAPH.

An analytics platform for infrastructure teams. The brief was a live dependency graph of roughly forty thousand nodes that stays readable and stays at sixty frames per second while the data underneath it keeps moving.

Year
2026
Role
Lead frontend
Stack
Next.js / TS / WebGL
Team
Four engineers
Observability dashboard showing a live cyan dependency graph of 40,000 service nodes beside realtime metrics
Concept render — realtime dependency graph

//The constraint#

Forty thousand nodes is the number where the obvious approaches stop working. Rendering each node as a DOM element is out immediately. Canvas 2D gets you to roughly four thousand before the main thread starts missing frames. And the data isn't static: nodes appear, health states flip, edges re-route, all arriving over a socket at up to twelve updates a second during an incident — which is exactly when the tool has to work.

//What I built#

Geometry moved to the GPU as instanced quads, one draw call for all nodes and one for all edges, with position and colour packed into a texture that the shader reads per instance. Updating a thousand nodes became a partial texture write rather than a thousand object mutations. Layout ran in a worker on a fixed thirty-hertz tick, independent of the render loop, so a heavy relayout could never stall a frame.

Sprawling cyan point-cloud mesh annotated with latency and throughput labels, node density at scale
Concept render — node density at scale

Labels were the harder half. Text in WebGL is either expensive or ugly, so labels stayed in the DOM — but only the forty or so that are legible at the current zoom, recycled from a fixed pool and positioned from the same projection matrix the shader uses.

//Result and regrets#

Sustained sixty frames per second on a 2019 ThinkPad with integrated graphics, and around forty on mid-range Android. Interaction to paint on a node selection landed under sixteen milliseconds. What I'd change: I built a custom force layout before checking whether a simpler hierarchical one would satisfy the actual use case. It would have, and it would have cost three weeks less.

Dense operations console combining a topology map, time-series charts and status tiles in one view
Concept render — the operator's view
Fig. 04 — next.js, typescript, webgl