Three bugs found deploying a fresh clone to seedproject.com, each fatal to the documented "spin up a new site" flow: - .gitignore: the unanchored `public/` pattern (meant for the root build output) also ignored api/public/ (the framework's front controller, controllers, models, views) and app/public/ (theme static assets: fonts, avatar placeholder). Neither was ever committed, so every fresh clone 500'd on all /api routes and 404'd on theme assets. Anchor the pattern to /public/ and commit both directories. - api/install/dump.sql: stray `CREATE DATABASE ochenta80_db123` (SQLyog export artifact) aborted `php console app:install` for any non-privileged DB user. The schema must import into whatever database the installer connects to. - PluginManager::boot() queries sp_plugins on every request, but no shipped schema creates it — even a successful install 500'd on every endpoint. Add migration 002_create_sp_plugins.sql matching the columns PluginManager reads/writes. Also empty api/system/errors.json, which shipped with stale error logs from an unrelated project. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C3JqxTe7TKaR7xufcMr7Ds
23 lines
811 B
PHP
23 lines
811 B
PHP
<?php
|
|
use App\Controllers\PublicController;
|
|
|
|
/** GET /api/health — public health round-trip (proves DB connectivity). */
|
|
class Health extends PublicController
|
|
{
|
|
public function index()
|
|
{
|
|
$this->guardPublic('health', 120, 60);
|
|
try {
|
|
$up = (int) \Db::getValue("SELECT 1");
|
|
$rows = (int) \Db::getValue("SELECT COUNT(*) FROM `config`");
|
|
} catch (\Throwable $e) {
|
|
$this->json(null, 500, ['code' => 'db_error', 'message' => DEBUG ? $e->getMessage() : 'Database unavailable']);
|
|
}
|
|
$this->json([
|
|
'db' => $up === 1 ? 'connected' : 'unknown',
|
|
'app' => defined('PROJECT_NAME') ? PROJECT_NAME : '',
|
|
'config_rows' => $rows,
|
|
'time' => date('c'),
|
|
]);
|
|
}
|
|
}
|