Tomas Dvorak and Devin
f9fd1d9cf2
feat: domain monitoring (merge plan M2, phase 1)
...
Port of the domain-intelligence pipeline from the old Beszel fork,
adapted to Dash's SQLite + no-PocketBase architecture:
- internal/domain: RDAP via IANA bootstrap (cached), TCP WHOIS :43
fallback with multi-format parser, DNS (NS/MX/TXT/CNAME/A/AAAA),
TLS leaf cert details, ip-api.com geolocation, provider detection
(DNS/email/hosting/CA). HTML scraping, paid APIs, and exec-based
whois deliberately dropped.
- API: domains CRUD + synchronous refresh + domain_checks snapshot
history; refresh runs inside the monitor sweep on interval_h.
- UI: /domains + /domains/:id pages, add/edit dialog, domain board
widget (favicon + expiry countdown), palette + nav entries,
domainId picker in the widget dialog.
- Test seam: Server.lookup injects the refresh; domain tests run
hermetic against a stubbed result.
Verified live: github.com resolves MarkMonitor expiry 2028-10,
Route 53 DNS, GitHub Pages hosting, Sectigo cert with 69d left.
Authored By: TDvorak <[email protected] >
Generated with Devin (https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 18:35:47 +02:00
Tomas Dvorak and Devin
1ff1b29ae7
feat: external importers + uptime monitors (merge plan M1)
...
Two tracks from the Beszel/Domain-Locker merge plan in ROADMAP.md:
- Importers: POST /api/import/external sniffs Homepage services.yml,
Homarr JSON, and Dashy conf.yml into sections/items; SettingsDialog
import now accepts all four formats.
- Monitors (M1): monitors + heartbeats schema, pure checkers for
http/tcp/ping/dns/keyword/json-query/push, scheduler on app ctx,
CRUD + check-now + push ingest API, /monitors + /monitors/:id pages
(wouter), monitor board widget, ServiceDialog monitor opt-in.
Authored By: TDvorak <[email protected] >
Generated with Devin (https://devin.ai )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 18:14:36 +02:00
Tomas Dvorak
6004105038
feat: phase 1 MVP — sections, services, drag-drop, renderers
...
Backend: migration 0002 (sections/items/urls/settings), CRUD +
fractional reorder, icon upload, settings, export/import, cached
status pings. Handler tests cover reorder, URL scheme validation,
settings round-trip.
Frontend: shared board store over the generated client, dnd-kit
layer (same-section, cross-section, section reorder persisted),
URL chooser popover, add/edit service dialog, settings dialog,
Bento + Cards renderers behind the shared seam, dark/light theme.
Generated with [Devin](https://devin.ai )
Authored By: TDvorak <[email protected] >
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-17 20:29:22 +02:00
Tomas Dvorak
b60821350a
feat: phase 0 foundation — monorepo scaffold, backend, frontend, CI, docker
...
Establishes the skeleton every later phase builds on: Go+Gin API with
zap logging, /api/healthz, SQLite+goose runner; Vite+React18+TS strict+
Tailwind v4 frontend with bento-mono theme tokens; openapi.yaml driving
a generated TS client; oxlint with vendored anti-slop rules; GitHub CI;
multi-stage Dockerfile -> 33.6MB distroless image; docker compose up
serves the blank board.
Generated with [Devin](https://devin.ai )
Authored By: TDvorak <[email protected] >
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-17 20:29:21 +02:00