ServPulse/Domain

From Nasqueron Agora
Revision as of 15:32, 17 February 2026 by Ieli (talk | contribs)

Lexicon

Configuration
Application-level settings stored in config/app.json and served via the config API.
Attributes: navbar.title, navbar.buttons_left (array of {name, link}), footer.line1 (text with %link1%/%link2% placeholders, labels, URLs), footer.line2 (text with %link% placeholder, label, URL).
Endpoint: GET /api/config/getAll (public), PUT /api/config (admin)
Service
A monitored entity on the status page (server, application, database, API, etc.). Services can be grouped and ordered.
Attributes: name, group, description, url, auto_status, status (operational, degraded, partial, major, maintenance), order.
Database table: service
Metrics
Performance data recorded per service, either by the health check service (automatic) or via the API (manual).
Attributes: service_id, uptime (decimal 0-100), response_time (integer, ms), error_rate (decimal 0-100), recorded_at.
Database tables: metric (indexed on service_id + recorded_at)
Endpoint: GET /api/metrics (latest per service), GET /api/metrics/service/:id?days=30 (raw), GET /api/metrics/service/:id/daily?days=30 (aggregated)
Incidents
An outage, disruption, or degradation reported on the status page. Incidents follow a lifecycle and can affect multiple services.
Attributes: title, status (investigating, identified, monitoring, resolved), impact (none, minor, major, critical), start_date, update_date, end_date.
Database tables: incident, incident_update, incident_service
Incident Update
A timestamped status change within an incident, forming the incident timeline.
Attributes: incident_id, status, message.
Database tables: incident_update
Users
Admin access is controlled by JWT tokens signed with JWT_SECRET. There is no user table, no user accounts, and no permissions system. A single admin role exists. Tokens are generated via CLI and pasted into the login page.
Token payload: { role: 'admin' }
Endpoint: POST /api/auth/verify