# Kaze A minimal, performant status page application written in Go. ## Features - **Monitor Types**: HTTP, HTTPS (with SSL certificate tracking), TCP - **Full Metrics**: Response time, SSL expiry, status codes, uptime percentage - **Configurable History**: 7, 30, or 90 days retention - **Monitor Groups**: Organize monitors into logical categories - **Incidents**: Manual incident tracking via YAML configuration - **Dark/Light Mode**: System preference detection with manual toggle - **Single Binary**: All assets embedded, no external dependencies - **SQLite Storage**: Lightweight, file-based database ## Quick Start ```bash # Build make build # Copy and edit configuration cp config.example.yaml config.yaml # Run ./kaze ``` Open http://localhost:8080 to view the status page. ## Configuration ```yaml site: name: "My Status Page" description: "Service Status" server: host: "0.0.0.0" port: 8080 storage: path: "./kaze.db" history_days: 90 groups: - name: "Web Services" monitors: - name: "API" type: https target: "https://api.example.com/health" interval: 30s timeout: 10s expected_status: 200 - name: "Infrastructure" monitors: - name: "Database" type: tcp target: "db.example.com:5432" interval: 30s timeout: 5s incidents: - title: "Scheduled Maintenance" status: scheduled message: "Database upgrade" scheduled_start: "2026-02-01T02:00:00Z" scheduled_end: "2026-02-01T04:00:00Z" ``` See `config.example.yaml` for full configuration reference. ## Monitor Types ### HTTP/HTTPS ```yaml - name: "API" type: https target: "https://api.example.com" interval: 30s timeout: 10s expected_status: 200 verify_ssl: true method: GET headers: Authorization: "Bearer token" ``` ### TCP ```yaml - name: "Database" type: tcp target: "db.example.com:5432" interval: 30s timeout: 5s ``` ## API Endpoints | Endpoint | Description | |----------|-------------| | `GET /` | Status page HTML | | `GET /api/status` | All monitors status (JSON) | | `GET /api/monitor/{name}` | Single monitor status (JSON) | | `GET /api/history/{name}` | Monitor uptime history (JSON) | ## Building ```bash # Development build make build # Production build (optimized) make build-prod # Cross-platform builds make build-all ``` ## Docker ```bash # Build image docker build -t kaze . # Run with single data volume (recommended) # Place config.yaml in your data directory before running mkdir -p data cp config.example.yaml data/config.yaml # Edit data/config.yaml and set storage.path to "./data/kaze.db" docker run -d -p 8080:8080 -v $(pwd)/data:/app/data kaze # Or run with separate mounts (legacy) docker run -p 8080:8080 -v ./config.yaml:/app/config.yaml -v ./data:/app/data kaze ``` ## Command Line Options ``` Usage: kaze [options] Options: -config string Path to configuration file (default "config.yaml") -debug Enable debug logging -version Show version information ``` ## License MIT