Files
OrbitWard/docs/progress.md
T
Keith Smith 16932957b2 Add ping and TCP monitor types
Adds ping and TCP monitor creation APIs, worker collectors, network checks UI, dashboard monitor status support, and progress documentation.
2026-05-23 15:01:57 -06:00

3.7 KiB

OrbitalWard Progress

Last updated: 2026-05-23

Current State

OrbitalWard has a working Docker Compose development stack with PostgreSQL, Redis, FastAPI backend, Python worker, and React/Vite frontend.

Implemented foundation:

  • Monorepo layout, README, MIT license, Dockerfiles, Compose files, helper scripts, and initial docs.
  • FastAPI backend with health endpoint, JWT login, local initial owner bootstrap, and role checks.
  • SQLAlchemy models and Alembic initial migration for users, assets, credentials, monitors, check results, metrics, alert rules, incidents, notification channels, and audit events.
  • React frontend with login, authenticated shell, dashboard, assets, websites, alerts, notifications, and placeholder admin/discovery/graphs/credentials pages.
  • Worker process that polls HTTP website monitors, records check results, updates monitor/asset status, opens incidents, resolves incidents on recovery, and sends webhook notifications.

Implemented website-monitor slice:

  • Create, edit, delete website monitors from the UI.
  • HTTP status and expected-text checks.
  • Optional TLS certificate expiry checks for HTTPS monitors.
  • Monitor status and recent incident visibility on dashboard.
  • Basic alert rules created with website monitors.
  • Incidents can be acknowledged and silenced from the UI.
  • Deleting a monitor resolves any open incidents tied to that monitor.

Implemented network-monitor slice:

  • Create, edit, delete ping and TCP port monitors from the UI.
  • Worker performs ICMP ping checks and TCP connection checks.
  • Ping and TCP monitors use the same alert rule, incident, recovery, and notification flow as website monitors.
  • Dashboard monitor status includes website, ping, and TCP monitors.

Implemented notification slice:

  • Create, edit, test, and delete notification channels from the UI.
  • Generic webhook, Mattermost, and Zoom Team Chat channel types.
  • Webhook URLs encrypted at rest using ORBITALWARD_SECRET_KEY.
  • Saved webhook URLs are not returned to the UI.
  • Configurable post username per notification channel.
  • Worker sends incident open and recovery notifications.
  • Notification state/history is stored in incident details to avoid duplicate sends.

Known Gaps

  • Credential vault UI and real credential encryption workflows are not complete.
  • Audit logging tables exist, but events are not consistently written yet.
  • User management UI is not implemented.
  • Role management is basic and needs full admin flows.
  • Alert rule editing UI is not implemented.
  • Notification routing/policies are not implemented; all enabled webhook channels receive incident notifications.
  • Email/SMTP notifications are not implemented yet.
  • Graphing exists only as placeholders; metric visualization is not implemented.
  • Worker scheduling is simple polling, not a Redis queue yet.
  • Tests are still minimal and need meaningful backend/worker/frontend coverage.
  • Production deployment hardening is not done.
  1. Add alert rule editing UI and richer alert conditions.
  2. Add notification policy/routing controls.
  3. Add email/SMTP notification channel.
  4. Add audit event writes for auth, monitor, credential, notification, and incident actions.
  5. Build credential vault UI with masked secret handling.
  6. Add user administration UI.
  7. Add graphs for website response time and monitor status history.
  8. Add backend and worker tests for the website-monitor and notification flows.

Operational Notes

Development URLs:

  • Frontend: http://localhost:5173
  • Backend API: http://localhost:8000
  • API docs: http://localhost:8000/docs

Default local login comes from .env:

  • INITIAL_ADMIN_EMAIL=admin@example.com
  • INITIAL_ADMIN_PASSWORD=change-me

Change these values before using OrbitalWard outside local development.