Tower DevOps Monitoring
The Tower dashboard surfaces project health telemetry directly in the admin UI, providing a single pane of glass for platform operations. Three widgets give platform admins real-time visibility into development progress, commit activity, and test coverage.
NOTE
These widgets are powered by the Tower Rust subgraph's devops module, which reads local markdown files and git history. In containerized environments, the relevant directories must be volume-mounted.
Widgets
TODO Aggregation
The Project Status widget parses BACKEND_TODO.md and FRONTEND_TODO.md to display:
- Overall progress bar โ Aggregate completion percentage across all TODO files
- Per-file breakdown โ Expandable sections showing open/completed counts per
###section - Checkbox states:
- [ ](open),- [x](completed),- [/](in-progress, counted as open)
GraphQL Query:
query {
projectStatus {
totalOpen
totalCompleted
overallCompletionPct
reports {
file
total
open
completed
completionPct
sections { name total open completed }
}
}
}
Git Activity Feed
Recent commits across all 4 Ngwenya repositories, merged and sorted by timestamp (newest first):
| Repository | Default Path |
|---|---|
ngwenya-federation |
../../ |
ngwenya-front |
../../../ngwenya-front |
ngwenya-dev |
../../../ngwenya-dev |
ngwenya-support |
../../../ngwenya-support |
Each commit displays: short hash, author name, first line of message, relative timestamp, and a color-coded repo badge.
GraphQL Query:
query {
gitActivity(limit: 15) {
reposScanned
reposAvailable
commits { hash author message timestamp repo }
}
}
Test Coverage Heatmap
Visual heatmap parsed from COVERAGE_REPORT.md:
- Aggregate metrics โ Statement, branch, function, and line coverage percentages
- Per-service rows โ Color-coded cells: ๐ข >70%, ๐ก 40-70%, ๐ด <40%
- Sortable columns โ Click any metric header to sort ascending/descending
- Tier badges โ Excellent, Good, Moderate, Low classifications
GraphQL Query:
query {
coverageOverview {
aggregateStatements
aggregateBranches
aggregateFunctions
aggregateLines
lastAudited
totalTests
services { name statements branches functions lines suites tier }
}
}
Architecture
Backend Module
The devops module in the Tower Rust subgraph consists of 3 file-system parsers:
apps/tower/src/devops/
โโโ mod.rs # Module root + DevOpsConfig struct
โโโ todo_parser.rs # Markdown checkbox regex parser
โโโ git_feed.rs # git2-based commit log reader
โโโ coverage_parser.rs # Coverage report table parser
All parsers are synchronous and file-system bound โ no network I/O. They read from paths configured via environment variables and return parsed structs that are converted to GraphQL types via From implementations.
Configuration
| Variable | Default | Description |
|---|---|---|
TOWER_DOCS_DIR |
../../docs |
Path to the docs/ directory containing TODO and coverage files |
TOWER_GIT_REPOS |
../../,../../../ngwenya-front,../../../ngwenya-dev,../../../ngwenya-support |
Comma-separated paths to git repositories |
Paths are relative to the Tower binary's working directory. For Docker environments, use absolute paths with volume mounts.
Security
All 3 queries are gated by require_auth() โ the same authentication guard used by all existing Tower queries. Only users with the user header (set by the Gateway's propagateHeaders) can access these endpoints.
Graceful Degradation
Each parser handles missing files/repos gracefully:
- TODO parser: Returns empty reports if files don't exist
- Git feed: Skips repos that can't be opened, reports
reposScannedvsreposAvailable - Coverage parser: Returns zeroed overview if
COVERAGE_REPORT.mdis missing
Frontend Components
| Component | Path | Purpose |
|---|---|---|
ProjectStatusWidget.svelte |
src/lib/components/admin/ |
TODO progress bars + Git commit timeline |
CoverageHeatmap.svelte |
src/lib/components/admin/ |
Sortable coverage table with color-coded cells |
towerDevOps.ts |
src/lib/queries/ |
GraphQL queries and TypeScript interfaces |
Both widgets are mounted on the Tower Overview tab, positioned between the Error Tracking and Quick Actions sections.
Related
- Tower Health Observability โ Dual-layer health probing and PlatformHealthWidget
- Error Tracking (GlitchTip) โ Error overview and crash-free rate
- Seed Infrastructure โ Full platform seeding workflow
- Local Development Environment โ Service startup and configuration