Files
landingpage/index.html
VS-Code 468d7d9a35 -
2026-02-06 22:30:18 +01:00

303 lines
10 KiB
HTML
Executable File

<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Helios Server</title>
<link rel="icon" type="image/png" href="https://img.icons8.com/ios-filled/50/1793d1/sun--v1.png">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@700&display=swap">
<style>
:root {
--text-color: #e0e0e0;
--accent-color: #1793d1;
}
/* Grundlayout */
body {
background-color: #1e1e1e;
color: #e0e0e0;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
margin: 0;
display: flex;
justify-content: center; /* Zentriert alles horizontal */
min-height: 100vh;
}
/* Der Hauptcontainer - hält alles zusammen */
.container {
width: 90%;
max-width: 800px; /* Nicht breiter als 800px */
text-align: center;
padding-top: 20px;
}
/* Navigation oben rechts */
.top-nav {
position: absolute;
top: 20px;
right: 20px;
display: flex;
gap: 15px;
}
.nav-link {
color: var(--text-color);
font-size: 1.5rem;
padding: 10px;
border-radius: 50%;
transition: all 0.3s ease;
position: relative;
display: flex; /* Zum Zentrieren des Icons */
align-items: center;
justify-content: center;
width: 30px;
height: 30px;
background-color: rgba(255, 255, 255, 0.05);
text-decoration: none;
}
.nav-link:hover {
background-color: var(--accent-color);
color: #fff;
transform: translateY(-2px);
box-shadow: 0 5px 15px rgba(23, 147, 209, 0.4);
}
.nav-link::after {
content: attr(data-tooltip); /* Holt Text aus HTML attribute */
position: absolute;
bottom: -35px;
left: 50%;
transform: translateX(-50%);
background-color: #333;
color: #fff;
padding: 5px 10px;
border-radius: 4px;
font-size: 0.8rem;
opacity: 0;
visibility: hidden;
transition: opacity 0.3s;
white-space: nowrap;
pointer-events: none;
}
.nav-link:hover::after {
opacity: 1;
visibility: visible;
}
/* Texte */
h1 {
font-family: 'JetBrains Mono', monospace; /* Die neue Code-Schrift */
font-size: 4rem;
margin-bottom: 10px;
color: #fff;
letter-spacing: 4px;
/* Ein leichter Leuchteffekt passend zum Blau */
text-shadow: 0 0 10px rgba(23, 147, 209, 0.3), 0 0 20px rgba(23, 147, 209, 0.2);
min-height: 1.2em; /* Verhindert das Springen des Layouts */
display: flex;
justify-content: center;
align-items: center;
}
p { color: #aaa; line-height: 1.6; margin-bottom: 30px; }
/* Terminal Style */
.terminal {
background-color: #111;
border-left: 3px solid #1793d1;
padding: 20px;
font-family: 'JetBrains Mono', monospace;
text-align: left;
border-radius: 5px;
margin-bottom: 50px; /* Abstand nach unten zu den Games */
box-shadow: 0 10px 30px rgba(0,0,0,0.5);
}
/* Spezifische Farben für das Terminal-Banner */
.t-blue { color: #3498db; } /* Das Blau von ~]$ */
.t-yellow { color: #f1c40f; } /* Ein kräftiges Gelb für Symbole */
.t-white { color: #ffffff; } /* Reinweiß für den Rest */
.terminal pre {
margin: 0 0 20px 0;
font-family: 'JetBrains', monospace;
line-height: 1.2;
white-space: pre; /* Behält die Abstände der ASCII-Art bei */
}
.prompt { color: #2ecc71; }
.path { color: #3498db; }
.command { color: #e0e0e0; }
.title-cursor {
display: inline-block;
color: var(--accent-color); /* Nutzt dein Helios-Blau */
margin-left: 5px;
animation: blink 1s infinite;
font-family: 'JetBrains Mono', monospace;
font-weight: 300; /* Etwas dünner sieht oft edler aus */
}
@keyframes blink {
0%, 100% { opacity: 1; }
50% { opacity: 0; }
}
/* --- NEU: DASHBOARD GRID FÜR SPIELE --- */
.apps-title {
text-align: left;
margin-bottom: 20px;
font-weight: 300;
border-bottom: 1px solid #333;
padding-bottom: 10px;
color: #fff;
}
.dashboard-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); /* Automatische Spalten */
gap: 20px; /* Abstand zwischen den Karten */
}
/* Das Design der Karten */
.app-card {
background-color: #2a2a2a;
padding: 20px;
border-radius: 12px;
text-decoration: none;
color: white;
display: flex;
align-items: center;
gap: 15px;
transition: transform 0.2s, background-color 0.2s;
border: 1px solid #333;
}
.app-card:hover {
transform: translateY(-5px); /* Schwebe-Effekt */
background-color: #333;
border-color: #555;
}
.app-icon { font-size: 30px; }
/* Spezifische Farben für die Icons */
.icon-darts { color: #e67e22; }
.icon-games { color: #9b59b6; }
.app-info h3 { margin: 0; font-size: 18px; }
.app-info span { font-size: 12px; color: #888; }
</style>
</head>
<body>
<div class="top-nav">
<a href="https://code.helios.giize.com" class="nav-link" data-tooltip="Code" target="_blank">
<i class="fa-solid fa-code"></i>
</a>
<a href="https://git.helios.giize.com" class="nav-link" data-tooltip="Gitea" target="_blank">
<i class="fa-brands fa-git-alt"></i>
</a>
<a href="https://docker.helios.giize.com" class="nav-link" data-tooltip="Docker" target="_blank">
<i class="fa-brands fa-docker"></i>
</a>
<a href="https://admin.helios.giize.com" class="nav-link" data-tooltip="Admin" target="_blank">
<i class="fa-solid fa-server"></i>
</a>
</div>
<div class="container">
<h1><span id="typewriter"></span><span class="title-cursor">_</span></h1>
<div class="terminal">
<pre>
<span class="t-blue">SERVER STATS</span>
<span class="t-yellow">__ __ ___ -------------------------</span>
<span class="t-yellow">/ / / /__ / (_)___ _____</span> <span class="t-white">Users </span><span class="t-yellow">:</span> <span class="t-white" id="stat-users">0</span>
<span class="t-yellow">/ /_/ / _ \/ / / __ \/ ___/</span> <span class="t-white">Procs </span><span class="t-yellow">:</span> <span class="t-white" id="stat-procs">0</span>
<span class="t-yellow">/ __ / __/ / / /_/ (__ )</span> <span class="t-white">Load </span><span class="t-yellow">:</span> <span class="t-white" id="stat-load">0.0</span><span class="t-white">%</span>
<span class="t-yellow">/_/ /_/\___/_/_/\____/____/</span> <span class="t-white">Memory </span><span class="t-yellow">:</span> <span class="t-white" id="stat-memory">0.0</span><span class="t-white">%</span>
<span class="t-white">Disk </span><span class="t-yellow">:</span> <span class="t-white" id="stat-disk">0</span><span class="t-white">%</span></pre>
<span class="path">[</span><span class="prompt">admin@helios:</span> <span class="path">~]$</span>
<span class="command">./deploy-projects.sh --active</span>
</div>
<h2 class="apps-title">Apps & Dashboard</h2>
<div class="dashboard-grid">
<a href="/darts/" class="app-card">
<div class="app-icon icon-darts">🎯</div>
<div class="app-info">
<h3>Darts Counter</h3>
<span>Scoreboard & Stats</span>
</div>
</a>
<a href="games/games_index.html" class="app-card">
<div class="app-icon icon-games">🕹️</div>
<div class="app-info">
<h3>Arcade</h3>
<span>Sammlung</span>
</div>
</a>
</div>
<br><br><br>
</div>
<script>
const text = "Helios";
const speed = 150;
let i = 0;
// Funktion zum Hochzählen der Zahlen
function animateValue(id, start, end, duration, decimals = 0) {
const obj = document.getElementById(id);
const startTime = Date.now();
function update() {
const currentTime = Date.now();
const elapsed = currentTime - startTime;
const progress = Math.min(elapsed / duration, 1);
const currentVal = (progress * (end - start) + start).toFixed(decimals);
obj.innerHTML = currentVal;
if (progress < 1) {
requestAnimationFrame(update);
}
}
requestAnimationFrame(update);
}
function startStatsAnimation() {
// Hier definierst du Zielwerte, Dauer und Nachkommastellen
animateValue("stat-users", 0, 2, 1000, 0);
animateValue("stat-procs", 0, 186, 1200, 0);
animateValue("stat-load", 0, 14.3, 1500, 1);
animateValue("stat-memory", 0, 18.2, 1500, 1);
animateValue("stat-disk", 0, 6, 1500, 0);
}
function typeWriter() {
if (i < text.length) {
document.getElementById("typewriter").innerHTML += text.charAt(i);
i++;
setTimeout(typeWriter, speed);
} else {
// Wenn HELIOS fertig ist, starte die Zahlen-Animation
setTimeout(startStatsAnimation, 500); // Kurze Pause für den Effekt
}
}
// Beim Laden: Erst 800ms warten, dann Schreibmaschine starten
window.onload = () => {
setTimeout(typeWriter, 800);
};
</script>
</body>
</html>