Files
HODA/internal/server/web/index.html
T
TMCandClaude Opus 5.5 9d6a921c34
CI / build (push) Successful in 30s
Start HODA: a homelab dashboard built from Docker labels
Apps opt in with sema.dashboard.* labels in their own compose file. The
primary reads its host's containers through a read-only socket proxy,
follows Docker events, and merges in what the agent on the second host
reports. Icons come from the icon label, the dashboard-icons set or the
app's favicon, with a letter as the fallback.

Go with only the standard library, a distroless image, and a Gitea
Actions workflow copied from FiMa's: checks in the Dockerfile's check
stage, a Trivy scan, and a push to git.mariosem.es/msemes/hoda.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 21:18:20 +01:00

25 lines
1022 B
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="color-scheme" content="light dark">
<title>{{.Title}}</title>
<link rel="icon" href="/static/favicon.svg?v={{.Version}}" type="image/svg+xml">
<link rel="stylesheet" href="/static/app.css?v={{.Version}}">
<script src="/static/app.js?v={{.Version}}" defer></script>
</head>
<body data-link-target="{{.LinkTarget}}" data-label-prefix="{{.LabelPrefix}}">
<header class="top">
<h1 class="title">{{.Title}}</h1>
<div class="search">
<input id="search" type="search" placeholder="Search apps" autocomplete="off" spellcheck="false" aria-label="Search apps">
<kbd aria-hidden="true">/</kbd>
</div>
</header>
<div id="banners" class="banners" role="status" aria-live="polite"></div>
<main id="groups" class="groups" aria-busy="true"></main>
<noscript><p class="note">HODA needs JavaScript to list your apps.</p></noscript>
</body>
</html>