Add Coolify REST API server with Scalar docs and UI integration

Express API server on :3100 exposing all Coolify operations:
- CRUD for apps, env vars, servers
- Full upsert pipeline (create/update + env + route + deploy)
- Drift detection, Traefik route management via SSH
- Scalar API docs at /reference, OpenAPI 3.1 spec

UI: New Coolify page with app cards, deploy/delete actions,
env var expansion. Sidebar nav + React Query hooks + fetch client.

Both UI and LLM/CLI use the same HTTP endpoints.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-27 11:02:17 -06:00
parent 2fe49b6725
commit 93d40455d9
16 changed files with 1426 additions and 5 deletions

24
api/lib/config.js Normal file
View File

@@ -0,0 +1,24 @@
import { readFileSync, existsSync } from 'fs';
import { join, dirname } from 'path';
import { fileURLToPath } from 'url';
const __dirname = dirname(fileURLToPath(import.meta.url));
// Shared config from gitea.repo.management
const CONFIG_PATH = join(__dirname, '..', '..', '..', 'gitea.repo.management', 'config.json');
let _cached = null;
export function loadConfig() {
if (_cached) return _cached;
if (!existsSync(CONFIG_PATH)) {
throw new Error(`Config not found at ${CONFIG_PATH}`);
}
_cached = JSON.parse(readFileSync(CONFIG_PATH, 'utf8'));
return _cached;
}
export function reloadConfig() {
_cached = null;
return loadConfig();
}