Replaces the static HTML page with a Next.js 15 + Tailwind v4 + Motion app. The hero renders the dashboard itself - live tiles, ticking clock, wandering metrics, pulsing status dots - instead of screenshots. Adds a playable four-renderer switcher (bento/cards/index/console) with layout animations, live monitor/domain/system mocks, and a cycling alert feed. Vercel project dash is now git-connected with root dir landing/; pushes deploy automatically. Canonical alias: dash-homelab.vercel.app. Authored By: TDvorak <[email protected]> Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Dash
Self-hosted homelab dashboard.
Service boards, uptime monitors, domain watch, and system metrics in one container.
Quick Start · Documentation · Releases · Contributing
What is Dash?
Dash is a self-hosted homelab dashboard: service boards with drag-and-drop, uptime monitors, domain intelligence, push-based system metrics, incidents, and public status pages — one static Go binary serving an embedded React UI. No YAML, no external database; auth is optional and off by default.
Screenshots
| Board | Monitors | Systems |
|---|---|---|
![]() |
![]() |
![]() |
Features
- Service boards — multiple boards, sections, drag-and-drop, multi-URL services, icon upload, four renderers (Bento, Cards, Index, Console), dark/light themes, custom accent/wallpaper/CSS.
- Uptime monitors — HTTP, TCP, ping, DNS, keyword, JSON-path, and push checks on a schedule; heartbeat history, uptime graphs, per-monitor alert rules.
- Domain watch — WHOIS/RDAP, TLS certificate, host geolocation, and CT-log subdomain discovery; every DNS record is attributed to its vendor (Cloudflare, Google Workspace, Purelymail, …) with provider badges across registrar, DNS, hosting, email, and CA.
- System monitoring — lightweight
dash-agentpushes CPU, memory, disk, network, load, temperatures, per-container stats, and SMART/ZFS/GPU when available; rendered as stacked per-container charts, per-sensor temperature lines, and load/bandwidth series. - Incidents & status pages — automatic incidents on monitor down, maintenance windows, public
/status/:slugpages, SVG badges. - Alerts — webhook, Slack, Discord, Telegram, Gotify, ntfy, and SMTP transports.
- Observability — Prometheus
/api/metrics, JSON export, CSV bulk import, importers for Homepage, Homarr, and Dashy configs. - Optional auth — local username/password, bcrypt + SQLite sessions, off by default; public status pages stay open either way.
- i18n + PWA — English and Czech UI, installable manifest/service worker.
Architecture
Browser ──▶ dash (single static Go binary)
├── Embedded React UI (embed.FS)
├── REST API (Gin) ──▶ SQLite
└── Schedulers ──▶ monitors, domain refresh, alerts, retention
│
▼ outbound
HTTP/TCP/ICMP/DNS, WHOIS/RDAP, TLS, SMTP
dash-agent (one binary per host) ──push JSON──▶ POST /api/systems/ingest
Quick Start
Prerequisites: Docker.
curl -fsSL https://raw.githubusercontent.com/Dvorinka/Dash/main/install.sh | sh
Installs into ./dash and starts the stack on port 3000. Or from a clone:
git clone https://github.com/Dvorinka/Dash.git && cd Dash
./scripts/setup.sh # builds the image and starts the stack
Or plain docker run, no script needed:
docker run -d -v ./data:/data -p 3000:3000 ghcr.io/dvorinka/dash:latest
Then open http://localhost:3000 — everything is configured from the UI.
For the system agent, binary installs, reverse proxies, and upgrades see
docs/installation.md.
Configuration
Dash is configured from the UI; the server reads three environment
variables (DASH_PORT, DASH_DATA_DIR, DASH_DEV). All state lives in one
directory — a SQLite database plus uploaded icons. See
docs/configuration.md.
System agent
Monitor a Linux host: create a system in the UI, copy the token, then:
dash-agent -url http://dash:3000 -token <token>
One static binary, no dependencies. systemd unit and container image covered in docs/installation.md.
Documentation
- docs/installation.md — Docker, binary, agent, reverse proxy, upgrades
- docs/configuration.md — env vars, notifications, auth, boards, operations
- docs/widgets.md — widget development guide
openapi.yaml— API contract (generated TS client inpackages/api-client)- ROADMAP.md — design decisions and release history
Develop
Requires Go 1.24+ and Node 20+.
npm install # workspaces: frontend + api-client
npm run dev # vite dev on :5173, proxies /api to :8080
cd apps/backend
DASH_DEV=1 go run ./cmd/dash # API on :8080 (DASH_DEV skips embedded UI)
Contributing
See CONTRIBUTING.md for the development workflow.
Security
See SECURITY.md for reporting vulnerabilities.





