phlo/dashboard

Control center for a Phlo deployment: monitor your fleet, manage MySQL and SQLite databases from the browser, and handle notifications, subscriptions and WhatsApp from one place.

Maintainers

Package info

github.com/q-ainl/phlo-dashboard

Type:project

pkg:composer/phlo/dashboard

Transparency log

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0 2026-07-03 18:56 UTC

This package is auto-updated.

Last update: 2026-07-03 22:08:12 UTC


README

Admin and monitoring dashboard for the Phlo stack. It bundles fleet monitoring, a notifications inbox, WhatsApp status, subscriptions and a built-in database manager for MySQL and SQLite.

The Dashboard is the operations layer of the Phlo platform: one place to oversee every app, server and domain built on the Phlo engine. Not to be confused with the Phlo Control Center, the per-app dev panel built into the engine itself.

Fleet overview: every host and app with live status

Features

  • Fleet overview: real time status of every host and app across the fleet (uptime, CPU, memory, disk, errors, visitors).
  • Database admin (dbadmin): browse and edit rows, a full structure editor with column reordering, indexes, foreign keys, privileges, an SQL console, import and export, foreign key navigation, database wide search and server status. Works with MySQL and SQLite.
  • Notifications: a server scoped inbox; apps push notifications via a secret protected endpoint.
  • Subscriptions: users subscribe to (server, event) pairs and get proactive WhatsApp or dashboard delivery.
  • WhatsApp: overview of all Phlo WhatsApp instances across the fleet.
  • Visitors, domains, sites: visitor analytics and host/domain management.
  • Multi user: roles plus per server and per module permissions.

The database manager: browse, structure editor, SQL console

Host discovery

The fleet overview discovers apps and hosts from your web server config. By default it reads Caddy site files (sites/*.caddy). Discovery is pluggable per node via creds.ini:

[discovery]
sources = caddy, nginx
nginx   = /etc/nginx/sites-enabled/*

sources is a comma list of adapters (default caddy). The nginx adapter reads server_name from each server { ... } block (brace-depth aware, so nested location blocks are handled), folds www. into aliases, and flags redirect-only blocks (return 30x or a permanent rewrite). Results from all sources are merged and deduped by primary host. The monitoring layers on top (reachability, metrics, visitors) are web server agnostic; errors, version and rebuild stay Phlo specific.

To support another web server, add a <name>Apps() adapter returning the canonical app records and list its name in sources.

Requirements

  • PHP 8.3 or newer with ext-pdo, ext-pdo_mysql (the app stores its data in MySQL) and ext-apcu (login rate limiting); ext-pdo_sqlite for the SQLite side of the database admin
  • FrankenPHP
  • phlo/tech and phlo/cms, pulled in via Composer

Install

composer create-project phlo/dashboard mydashboard

Then set up the node local config:

  1. Copy www/app.php.example to www/app.php and set your host and paths. It keeps build: true (development): the app compiles on demand and build::run is available.
  2. Copy data/app.example.json to data/app.json.
  3. Create data/creds.ini (MySQL connection, fleet peers, alert and notify endpoints) and, for HTTP basic login, data/auth.ini.
  4. Build the app: php www/app.php build::run
  5. Serve with FrankenPHP.

For production, deploy the compiled output and a second entrypoint with build: false (the build:: tools are development-only and are absent under build: false).

License

MIT. See LICENSE.