Files
wp-healthcheck/server/src/routes.php
Steve Hanlon 9f13d871bf Server: HTML dashboard at /dashboard showing all sites + session history
Browsable at /dashboard — authenticates via ?key=<api_key> once per browser
session (stored in a PHP session cookie). Lists all sites ordered by most-
recently-active, with session counts and in-progress badge. Click any site
to see its full healthcheck history with dates and durations.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-10 09:01:05 +01:00

34 lines
1.5 KiB
PHP

<?php
declare(strict_types=1);
use AttHc\Server\Config;
use AttHc\Server\Controllers\Dashboard;
use AttHc\Server\Controllers\Healthchecks;
use AttHc\Server\Controllers\Sites;
use AttHc\Server\Controllers\Steps;
use AttHc\Server\Http;
use AttHc\Server\Router;
$router = new Router();
// Health check / version. Public, no auth — used by the plugin to verify reachability before submitting.
$router->add('GET', '/', static function (): void {
Http::json(200, [
'ok' => true,
'service' => 'att-site-healthcheck-server',
'version' => (string) Config::get('version', '0.0.0'),
]);
}, requiresAuth: false);
$router->add('POST', '/healthchecks', [Healthchecks::class, 'create']);
$router->add('GET', '/healthchecks', [Healthchecks::class, 'list']);
$router->add('GET', '/healthchecks/{id}', [Healthchecks::class, 'get']);
$router->add('PUT', '/healthchecks/{id}', [Healthchecks::class, 'update']);
$router->add('PUT', '/healthchecks/{id}/steps/{step_id}', [Steps::class, 'upsert']);
$router->add('GET', '/healthchecks/steps/{step_id}', [Steps::class, 'history']);
$router->add('GET', '/step-counts', [Steps::class, 'counts']);
$router->add('GET', '/sites', [Sites::class, 'recent']);
$router->add('GET', '/dashboard', [Dashboard::class, 'index'], requiresAuth: false);
return $router;