Initial commit
This commit is contained in:
55
README.md
Normal file
55
README.md
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
# arcline-status
|
||||||
|
|
||||||
|
Static status page generator. Reads a YAML config and produces a single-file HTML status page — no database, no SaaS, no external dependencies.
|
||||||
|
|
||||||
|
Designed to be self-hosted at `status.arclineit.com` and regenerated on a cron/systemd timer.
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Planned. Not yet started.
|
||||||
|
|
||||||
|
## Stack
|
||||||
|
|
||||||
|
- Go — single static binary
|
||||||
|
- Config: YAML
|
||||||
|
- Output: static HTML with all CSS inlined (no asset dependencies)
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sh
|
||||||
|
arcline-status build --config status.yaml --out ./public
|
||||||
|
arcline-status build --config status.yaml --out ./public --watch
|
||||||
|
arcline-status serve --config status.yaml --port 8080
|
||||||
|
arcline-status validate --config status.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
## Config
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
site:
|
||||||
|
title: "Arcline Status"
|
||||||
|
domain: "status.arclineit.com"
|
||||||
|
|
||||||
|
components:
|
||||||
|
- name: "Shared Hosting"
|
||||||
|
status: operational # operational | degraded | outage | maintenance
|
||||||
|
|
||||||
|
incidents:
|
||||||
|
- title: "Brief network disruption"
|
||||||
|
status: resolved
|
||||||
|
severity: minor
|
||||||
|
started: "2026-02-28T14:00:00Z"
|
||||||
|
resolved: "2026-02-28T15:30:00Z"
|
||||||
|
updates:
|
||||||
|
- time: "2026-02-28T14:00:00Z"
|
||||||
|
body: "Investigating."
|
||||||
|
- time: "2026-02-28T15:30:00Z"
|
||||||
|
body: "Resolved. Root cause: upstream BGP flap."
|
||||||
|
```
|
||||||
|
|
||||||
|
## Output pages
|
||||||
|
|
||||||
|
- `index.html` — current status, active incidents, upcoming maintenance
|
||||||
|
- `history.html` — past incidents (90-day window)
|
||||||
|
|
||||||
|
See [todo.md](todo.md) for the full task list.
|
||||||
82
todo.md
Normal file
82
todo.md
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
# 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
|
||||||
Reference in New Issue
Block a user