initial commit

This commit is contained in:
TheOnlyMace
2026-06-18 23:45:08 +02:00
commit 3ebdc96381
104 changed files with 4778 additions and 0 deletions

89
frontend/admin.html Normal file
View File

@@ -0,0 +1,89 @@
<!doctype html>
<html lang="de" data-theme="dark">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Admin HexaWetter</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="stylesheet" href="style.css" />
</head>
<body class="admin-page">
<header class="site-header">
<div class="container header-inner">
<a class="brand-link" href="index.html">
<div class="brand-logo">H</div>
<div>
<div class="brand-sub">HexaWetter</div>
<div class="brand-title">Admin</div>
</div>
</a>
<div class="header-actions">
<a href="index.html" class="btn btn-secondary">Zurück</a>
<button id="logoutBtn" class="btn btn-ghost admin-hidden">Abmelden</button>
</div>
</div>
</header>
<main class="app-main">
<div class="container">
<section id="loginSection" class="admin-login-wrap">
<div class="glass-card admin-login-card">
<h1>Admin Login</h1>
<p class="muted">Geschützter Bereich für Service-Status und Einstellungen.</p>
<form id="loginForm">
<label>Benutzername<input id="adminUser" autocomplete="username" required /></label>
<label>Passwort<input id="adminPass" type="password" autocomplete="current-password" required minlength="8" /></label>
<button class="btn btn-primary full-width" type="submit" style="margin-top:12px">Anmelden</button>
</form>
<p id="loginError" class="admin-error"></p>
</div>
</section>
<section id="dashboardSection" class="admin-hidden">
<div class="admin-toolbar">
<div>
<h1>Dashboard</h1>
<p class="muted" id="adminTime"></p>
</div>
<div style="display:flex;gap:8px;flex-wrap:wrap">
<button id="refreshBtn" class="btn btn-secondary">Aktualisieren</button>
<button id="clearCacheBtn" class="btn btn-secondary">Redis-Cache leeren</button>
</div>
</div>
<section class="admin-grid" id="infraGrid"></section>
<section class="glass-card" style="margin-top:16px">
<h2>Dienste & Datenquellen</h2>
<div class="source-status-grid" id="serviceGrid"></div>
</section>
<section class="glass-card">
<h2>Speicher</h2>
<div class="admin-grid" id="storageGrid"></div>
</section>
<section class="glass-card">
<h2>Konfiguration</h2>
<pre class="config-block" id="configBlock"></pre>
</section>
<section class="glass-card">
<h2>Runtime-Einstellungen</h2>
<form id="settingsForm" class="settings-grid">
<label>Rate-Limit / Minute<input id="setRateLimit" type="number" min="10" max="1000" /></label>
<label>Cache Forecast (s)<input id="setCacheForecast" type="number" min="60" max="86400" /></label>
<label>Cache Observations (s)<input id="setCacheObs" type="number" min="60" max="86400" /></label>
<label>Cache Warnings (s)<input id="setCacheWarn" type="number" min="30" max="3600" /></label>
<label>Radar-Retention (h)<input id="setRadarRetention" type="number" min="6" max="168" /></label>
<div><button class="btn btn-primary full-width" type="submit">Speichern</button></div>
</form>
<p class="muted" id="settingsMsg" style="margin-top:10px"></p>
</section>
</section>
</div>
</main>
<script src="admin.js"></script>
</body>
</html>