diff --git a/.gitignore b/.gitignore index 8cbb8ea..5e9b36a 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,4 @@ dist/ # local tooling artifacts .playwright-mcp/ .playwright-cli/ +.vercel diff --git a/AGENTS.md b/AGENTS.md index 2485a6c..1aa429e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -9,6 +9,7 @@ Optional auth (off by default), no YAML. See `ROADMAP.md` (canonical) and - `apps/frontend` — React 18 + Vite + TS strict + Tailwind v4 + shadcn/ui - `apps/backend` — Go + Gin + zap, CGO-free, SQLite via `modernc.org/sqlite` - `packages/api-client` — generated TS client; `openapi.yaml` at repo root is the contract +- `landing/` — static marketing page, deployed to Vercel; no build step, plain HTML/CSS/JS - `infra/` — Dockerfile (multi-stage, one image) - `tools/oxlint/anti-slop` — vendored lint plugin (do not extend casually) - `data/` — runtime SQLite + uploaded icons (gitignored) diff --git a/landing/.gitignore b/landing/.gitignore new file mode 100644 index 0000000..245259b --- /dev/null +++ b/landing/.gitignore @@ -0,0 +1,2 @@ +.vercel +.env* diff --git a/landing/assets/board.png b/landing/assets/board.png new file mode 100644 index 0000000..3215a09 Binary files /dev/null and b/landing/assets/board.png differ diff --git a/landing/assets/dash.svg b/landing/assets/dash.svg new file mode 100644 index 0000000..804cb76 --- /dev/null +++ b/landing/assets/dash.svg @@ -0,0 +1,9 @@ + diff --git a/landing/assets/domains.png b/landing/assets/domains.png new file mode 100644 index 0000000..b3ec17e Binary files /dev/null and b/landing/assets/domains.png differ diff --git a/landing/assets/monitors.png b/landing/assets/monitors.png new file mode 100644 index 0000000..9388949 Binary files /dev/null and b/landing/assets/monitors.png differ diff --git a/landing/assets/status-page.png b/landing/assets/status-page.png new file mode 100644 index 0000000..e48e1bf Binary files /dev/null and b/landing/assets/status-page.png differ diff --git a/landing/fonts/geist-mono-var.woff2 b/landing/fonts/geist-mono-var.woff2 new file mode 100644 index 0000000..0750682 Binary files /dev/null and b/landing/fonts/geist-mono-var.woff2 differ diff --git a/landing/fonts/geist-var.woff2 b/landing/fonts/geist-var.woff2 new file mode 100644 index 0000000..991445d Binary files /dev/null and b/landing/fonts/geist-var.woff2 differ diff --git a/landing/index.html b/landing/index.html new file mode 100644 index 0000000..c5a113a --- /dev/null +++ b/landing/index.html @@ -0,0 +1,465 @@ + + +
+ + +Dash is a self-hosted dashboard: service boards, uptime monitors, domain + watch, and system metrics in a single static Go binary with the UI baked in. + No YAML, no external database, no mandatory accounts.
+ +
+ Sections, drag-and-drop, multi-URL services, icon upload. Four renderers + - Bento, Cards, Index, Console - share one state, so the look is a setting, + not a migration.
+HTTP, TCP, ping, DNS, keyword, JSON-path, and push checks with heartbeat + history, latency graphs, and per-monitor alert rules.
+ +RDAP/WHOIS, TLS expiry, DNS records attributed to their provider, and + CT-log subdomain discovery.
+A tiny dash-agent pushes CPU, memory, disk, + network, temps, and per-container stats.
+Public /status/:slug pages, incidents, + maintenance windows, and SVG badges.
+Alert rules for monitors, domains, and systems dispatch through the + transports you already run.
+


$ curl -fsSL https://raw.githubusercontent.com/+
Dvorinka/Dash/main/install.sh | sh
# installs into ./dash, serves :3000
$ docker run -d -v ./data:/data \+
-p 3000:3000 \
ghcr.io/dvorinka/dash:latest
Everything is configured from the UI at
+ http://localhost:3000. All state lives in one directory - a SQLite
+ database plus uploaded icons. Importers for Homepage, Homarr, and Dashy
+ configs are built in.
MIT licensed. Self-hosted. Yours.
+