# status A status page written in Go. Join our [Matrix room](https://matrix.to/#/#status-page:exozy.me) for development discussion. ## TODO Tech stack - [x] HTTP Server - `net/http` - [x] listen on unix socket PORT (if set) - [x] Templating - {{mustache}} - [x] spawn with dinit/systemd - [x] Config file - load TOML config (1. `/opt/status-config/config.toml` 2. test config at `proto/config.toml`) - .socket_path (UNIX socket, string) - .service (array of services) - .matrix (Matrix-related settings, see below) - [x] Auto deploy script (run as dinit service) Check online methods - [x] TCP Connect - [x] HTTP 2xx - [x] ICMP Services - [x] HTML page - [x] Page Styling - [x] show service type (tcp/http) - [x] Increase constrast. Current RED/GREEN is contrast fail. Maybe don't show the border when service is up? - [x] Bundle directory contents into executable in release mode. (not necessary) - [ ] show historical data - Status history, database note for integration: the dumb database code is in `core/database.go`. When integrating, you don't need to touch that code much. - store events - [x] self boot up/shutdown - [x] check service status every 5 minutes since boot - [x] persist data on disk - [x] clean up old checkpoints - [x] Matrix notification - [x] serves plain text to curl Tests - [ ] HTML page works ## Environment Variables When config file is down, those variables will be made non-optional and load from config instead of envvar. - `MAUTRIX_USER_ID`: Matrix user ID, optional, e.g. `@bot:exozy.me` - `MAUTRIX_ACCESS_TOKEN`: Matrix access token - `MAUTRIX_ROOM_ID`: Matrix room ID, optional, e.g. `#notifications:exozy.me`