The original reporting system was a set of static dashboards built using GitHub Pages, JavaScript, and ApexCharts. It pulled data from my mining setup — via log parsers and CSV exports — and rendered clean, interactive graphs. Fast to prototype, zero maintenance, and visually solid. But it was always separate from the core system. A sidecar, not a cockpit.
That setup wasn’t cracking — it was brittle by design. It depended on loosely-coupled scripts, triggered or scheduled updates, and a deployment model that exposed far too much of the mining infrastructure. Public HTML, public JS, and CSVs pushed from inside the network — all with the assumption that the presentation layer should live outside the operational layer. That sort of transparency is a bit much for Monero. Our community places a premium on privacy.
It’s fine for hobbyist-level setups. But not for something like db4e, where deployments, logs, and metrics are integrated and need to be tightly scoped — not broadcasted.
I pivoted to Textual not because the browser setup failed, but because Textual let me pull everything back into a unified interface. I didn’t want to manage a frontend/backend divide. I wanted a live system UI — something I could run on the node itself, with direct access to logs, real-time state, and deployment controls.
Textual gave me that. It’s terminal-native but modern. I can render status views, log panels, even historical charts, and place them right next to the toggles and buttons that control the stack. And unlike a browser dashboard, it doesn’t leak anything I don’t want to leak.
ApexCharts is still brilliant — but I no longer need it. It was a patch for something I now solve more elegantly in-terminal. If I want browser-based views later, I’ll do it behind authenticated APIs. For now, the telemetry lives where it belongs: inside the operator console.
The Textual UI has the reporting capability that drove me to GitHub Pages. Goodbye GitHub Pages.
Textual let me do something Urwid never could: merge deployment, monitoring, and reporting into one consistent app — one pane of glass. And that shift — from patched-together dashboards to a single TUI — is what finally makes db4e feel like a real platform.