Files
status/todo.md
Blake Ridgway 9f6cac1003 Initial commit
2026-03-21 18:00:32 -05:00

83 lines
2.7 KiB
Markdown

# arcline-status — Static Status Page Generator
A Go binary that reads a YAML config and generates a static HTML status page.
No database, no SaaS, no external dependencies. Customers self-host at status.yourdomain.com.
## Stack
- Language: Go
- Output: static HTML (single file or directory)
- Config: YAML
- Optional: cron job or systemd timer for auto-regeneration
## Config format (status.yaml)
```yaml
site:
title: "Arcline Status"
domain: "status.arclineit.com"
logo: "[arcline]"
components:
- name: "Shared Hosting"
status: operational # operational | degraded | outage | maintenance
- name: "VPS Hosting"
status: operational
- name: "Control Panel"
status: operational
- name: "DNS / Nameservers"
status: operational
- name: "SSL Provisioning"
status: operational
- name: "Network"
status: operational
incidents:
- id: 1
title: "Brief network disruption"
status: resolved # investigating | identified | monitoring | resolved
severity: minor # minor | major | critical
started: "2026-02-28T14:00:00Z"
resolved: "2026-02-28T15:30:00Z"
updates:
- time: "2026-02-28T14:00:00Z"
body: "Investigating reports of connectivity issues."
- time: "2026-02-28T15:30:00Z"
body: "Issue resolved. Root cause: upstream BGP flap."
maintenance:
- title: "NVMe storage upgrade"
status: scheduled
starts: "2026-03-10T02:00:00Z"
ends: "2026-03-10T04:00:00Z"
body: "Brief VPS downtime expected during storage migration."
```
## Output
- `index.html` — current status (all components, active incidents, upcoming maintenance)
- `history.html` — past incidents (90-day window)
- Arcline terminal aesthetic (matches brand CSS)
- Embeds all CSS/JS inline — truly single-file, no asset dependencies
## CLI interface
```
arcline-status build --config status.yaml --out ./public
arcline-status build --config status.yaml --out ./public --watch # rebuild on config change
arcline-status serve --config status.yaml --port 8080 # dev server
arcline-status validate --config status.yaml # lint config
```
## Tasks
- [ ] Project scaffold
- [ ] YAML config parser + validator
- [ ] HTML template (Go text/template, embed Arcline CSS inline)
- [ ] Component status renderer (operational/degraded/outage/maintenance badges)
- [ ] Active incident renderer
- [ ] Maintenance banner renderer
- [ ] History page (filter resolved incidents)
- [ ] --watch mode (fsnotify)
- [ ] Dev serve mode (net/http)
- [ ] validate subcommand
- [ ] Single-file output (inline all CSS)
- [ ] README with self-hosting guide (nginx config snippet)
- [ ] Example status.yaml
- [ ] Cross-compile Makefile