Jamie Software Lab
Projects / Server Pulse
Python Flask DevOps Linux

Server Pulse

Live dashboard showing real-time CPU, RAM, disk, and uptime from a Hetzner CX23 server. Polls a Flask endpoint backed by psutil : no refresh needed.

Status Active
Server Hetzner CX23
Backend Flask + psutil
Polling 5 seconds

Demo

Connecting…

CPU usage
-
RAM usage
-
Disk usage
-
Uptime
-
Load average
-1 min
-5 min
-15 min

What it solves

Clear outcomes, no marketing language.

  • Gives instant visibility into whether the server is healthy without SSH.
  • Demonstrates real-time data polling, API design, and basic infrastructure awareness.
  • Shows how to expose system metrics safely behind a reverse proxy with CORS + SSL.

How it works

Three moving parts, all simple.

psutil
Reads CPU, RAM, disk, uptime, and load averages from the OS.
Flask API
/api/pulse endpoint returns JSON. Runs behind nginx + SSL on Hetzner.
Frontend
Polls every 5 seconds. Renders gauges and bars with no dependencies.

Decisions

The tradeoffs that make this maintainable.

Same API service
Added as a route on the existing Flask app rather than a separate service. One deployment, one systemd unit.
No history storage
Metrics are point-in-time only. No database, no time-series. Keeps it simple for a demo.
Pure CSS gauges
Progress bars use CSS transitions on width. No chart library, no canvas, no external JS.