Managing the Manager: The dashboard-admin Web UI
The Other Half of the System
In my Dashboard TUI article, I introduced the Dashboard TUI, a fast, keyboard-driven menu for running homelab scripts. The power of that tool comes from its data-driven design: the menu is built dynamically from a MySQL table. But how do you manage that table? While any database client would work, a dedicated tool makes the process faster, safer, and more intuitive. That tool is the dashboard-admin.
The dashboard-admin is a simple, single-page web application that serves as the dedicated control panel for the TUI. It’s the manager for the manager. It allows you to add, edit, delete, and reorder the commands for your dashboard through a clean web interface, without ever needing to write a single line of SQL.
The Command Structure
The interface is built around the core components of a dashboard command:
- Key: The single keyboard character (a-z, 0-9) that triggers the command in the TUI.
- Name: The descriptive name shown in the TUI menu.
- Command Type: A dropdown to specify if the command is a `shell` script or a `python` script, which helps the TUI's runner handle it correctly.
- Command String: The exact command or script path to execute (e.g., `sudo apt update` or `/home/al/py/my_script.py`).
- Flags: Simple checkboxes to indicate if the command `Requires User Input` or if that input should be automatically wrapped in quotes (`Quote User Input`).
Effortless Reordering
One of the most important features is the ability to change the menu order on the fly. Every command in the list has a simple set of up and down arrows. Clicking an arrow instantly swaps the command with its neighbor. Behind the scenes, the application is intelligently re-calculating the `sort_order` column in the database, ensuring there are no gaps. This allows you to organize your menu exactly how you want it, with your most-used commands at the top, without any manual database editing.
Part of the AL Haines Homelab Suite
This tool is another component of my ongoing project to build a suite of simple, robust, and interconnected tools for the command-line focused system operator. The `dashboard-admin` (a web app) and the `Dashboard TUI` (a terminal app) work together on the same set of data, each providing the best interface for its specific task. This is the core philosophy: use the right tool for the job, and ensure your data, not your code, defines the behavior.
Copyleft
Like the TUI, this project is free to use, modify, and share. The code is available on my GitHub. I build these tools to solve real-world problems for myself, and my hope is that they might be useful to others as well.