Live over WebSocket

Metrics thatmove in real time

A single-page dashboard streaming live data from a Rust service over a WebSocket, rendered with hand-drawn SVG charts — never polling.

Scroll

Dashboard

Live, the moment it happens

Connecting
Waiting for the first snapshot...

About

Streamed, not polled

A Rust service on Fly.io advances a set of simulated metric series once a second and broadcasts a single JSON snapshot to every connected client. The browser opens one WebSocket and simply reacts to what arrives.

There is no interval timer hammering an API. When the connection drops, the client reconnects with exponential backoff and the dashboard reports its status honestly rather than freezing.

1
Persistent WebSocket
4
Live metric series
1s
Server tick interval
0
Polling requests

Features

A full-stack pipeline, end to end

Rust WebSocket backend

An axum service holds a one-second tick, advances simulated metric series, and fans a JSON snapshot out to every client over a single broadcast channel.

Streamed, never polled

The frontend opens one WebSocket and reacts to pushes, so the dashboard reflects new data the instant the server produces it.

Hand-drawn SVG charts

The area chart, sparklines, and category bars build their own SVG paths from the data. No charting dependency, full control over every animation.

Resilient by design

The client reconnects with capped exponential backoff and surfaces an honest status: connecting, live, reconnecting, or offline.

Animated in real time

Values count up smoothly and bars spring to new heights, calming to instant updates when reduced motion is requested.

Interactive filters

Choose which metric the large chart plots; the selection reshapes the view live without interrupting the stream.