MotorSignal-App/website/app
Billie Ponder 9d99bfa4e4
feat(ops): implement production operations infrastructure dashboard (phase 1) (#14)
* feat(ops): implement production operations infrastructure dashboard (phase 1)

- Add backend read-only infrastructure metrics collector (CPU, RAM, swap, disk with 80%/90% thresholds, uptime, network cumulative totals, systemd service allowlist) using standard library only (no psutil).

- Register GET /api/v1/ops/infrastructure endpoint guarded by require_ops_roles('operator', 'owner').

- Add Next.js API proxy route /api/ops/infrastructure validating ops session cookie and forwarding to backend.

- Implement dark-surface OperationsInfrastructure component in website admin console with 30s visibility-gated polling and overlap prevention.

- Add comprehensive backend and frontend test suites (8 backend tests, 43 ops-experience tests).

* fix(ops): query internal website version endpoint defensively on verified port 3001

- Query internal website GET /api/version on verified production listener http://127.0.0.1:3001 (configurable via WEBSITE_INTERNAL_URL).

- Parse JSON defensively with a 4096-byte response bound and validate exact 40-char hex revision pattern.

- Add comprehensive tests for valid, missing, malformed, oversized, and unreachable version responses.

- Do not expose internal URLs or connection errors in API responses.

* fix(ops): map postgresql service to cluster unit postgresql@14-main and preserve health errors

- Map public logical service ID 'postgresql' to fixed systemd unit 'postgresql@14-main'.

- Reject direct systemd unit names and arbitrary service names.

- Preserve HTTP 5xx responses as degraded on /api/health before root fallback.

- Add regression tests for postgresql unit mapping, API response name stability, and health 5xx preservation.

---------

Co-authored-by: Developer <dev@example.com>
2026-09-20 17:14:21 -04:00
..
account feat(website): standardize dark glass design system, obsidian contrast buttons, and rider account management 2026-09-18 18:35:31 -04:00
admin feat(ops): add incident management, user administration, support tickets, and website CMS 2026-09-18 18:35:12 -04:00
api feat(ops): implement production operations infrastructure dashboard (phase 1) (#14) 2026-09-20 17:14:21 -04:00
clubs fix(website): normalize founder portal page widths across profile, applications, and ranks (#12) 2026-09-20 13:46:58 -04:00
download Improve ride recording and telemetry workflows 2026-09-08 02:13:03 -04:00
features feat(website): standardize dark glass design system, obsidian contrast buttons, and rider account management 2026-09-18 18:35:31 -04:00
forgot-password feat(website): standardize dark glass design system, obsidian contrast buttons, and rider account management 2026-09-18 18:35:31 -04:00
group-rides feat(website): standardize dark glass design system, obsidian contrast buttons, and rider account management 2026-09-18 18:35:31 -04:00
login feat(website): standardize dark glass design system, obsidian contrast buttons, and rider account management 2026-09-18 18:35:31 -04:00
pricing feat(website): standardize dark glass design system, obsidian contrast buttons, and rider account management 2026-09-18 18:35:31 -04:00
privacy Improve ride recording and telemetry workflows 2026-09-08 02:13:03 -04:00
register feat(website): standardize dark glass design system, obsidian contrast buttons, and rider account management 2026-09-18 18:35:31 -04:00
support Improve ride recording and telemetry workflows 2026-09-08 02:13:03 -04:00
terms Improve ride recording and telemetry workflows 2026-09-08 02:13:03 -04:00
verify-email Improve ride recording and telemetry workflows 2026-09-08 02:13:03 -04:00
globals.css fix(website): expand Founder Portal layout width to fill available canvas (#11) 2026-09-20 08:59:43 -04:00
layout.tsx fix(website): expand Founder Portal layout width to fill available canvas (#11) 2026-09-20 08:59:43 -04:00
page.tsx feat(website): standardize dark glass design system, obsidian contrast buttons, and rider account management 2026-09-18 18:35:31 -04:00