aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md149
1 files changed, 149 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..16b42b6
--- /dev/null
+++ b/README.md
@@ -0,0 +1,149 @@
+# 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
+docker run -p 8080:8080 -v ./config.yaml:/app/config.yaml 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