Initial commit: Potatium

This commit is contained in:
Michael Böhmländer committed 2026-10-24 21:01:13 +00:00
commit e2d0be22fd
58 files changed
+1551

No files matched your search

View File
Whitespace-only changes.
+15
View File
@@ -0,0 +1,15 @@
'use strict';
// Status only. This preview never generates keys or sends transactions.
(async () => {
try {
const response = await fetch('/api/v1/status', { cache: 'no-store' });
if (!response.ok) return;
const data = await response.json();
document.getElementById('phase').textContent = `Phase: ${data.phase ?? 'unbekannt'}`;
document.getElementById('chain').textContent = data.chain_ready ? 'Verfügbar' : 'Nicht implementiert';
document.getElementById('wallet').textContent = data.wallet_ready ? 'Verfügbar' : 'Nicht implementiert';
document.getElementById('mining').textContent = data.mining_ready ? 'Verfügbar' : 'Nicht implementiert';
} catch (_) {
document.getElementById('phase').textContent = 'Server offline';
}
})();
+24
View File
@@ -0,0 +1,24 @@
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex,nofollow">
<title>Potatium Wallet | Vorschau</title>
<link rel="stylesheet" href="/styles.css">
<script src="/app.js" defer></script>
</head>
<body>
<main class="shell">
<header class="top"><div class="brand"><span class="coin">P</span><div><h1>Potatium</h1><p>PTM Wallet · Entwickler-Vorschau</p></div></div><span class="pill" id="phase">Nicht verbunden</span></header>
<section class="warning" role="status"><strong>Design-Prototyp, keine echte Wallet.</strong> Blockchain, Schlüsselverwaltung, Mining und Überweisungen sind noch nicht implementiert. Bitte keine echten Werte verwenden.</section>
<section class="grid">
<article class="panel hero"><span class="eyebrow">Guthaben</span><div class="balance">— <small>PTM</small></div><p>Keine Wallet verbunden</p><div class="actions"><button disabled>PTM senden</button><button disabled>PTM empfangen</button></div></article>
<article class="panel"><h2>Meine Wallet</h2><p class="muted">Wallet erstellen oder importieren</p><button disabled>Neue Wallet erstellen</button><button disabled class="secondary">Wallet importieren</button><p class="hint">Verschlüsselung und Transaktionssignatur werden erst nach Protokollentscheidungen umgesetzt.</p></article>
<article class="panel"><h2>Letzte Transaktionen</h2><div class="empty">Noch keine Transaktionen vorhanden.</div><p class="hint">Nach der Anbindung werden Bestätigung und Blockhöhe angezeigt.</p></article>
<article class="panel"><h2>Netzwerkstatus</h2><dl><dt>Blockchain</dt><dd id="chain">Nicht implementiert</dd><dt>Wallet-Funktion</dt><dd id="wallet">Nicht implementiert</dd><dt>Mining</dt><dd id="mining">Nicht implementiert</dd></dl></article>
</section>
<footer>Proof of Potato 🥔 · Design-Vorschau · Open-Source-Hobbyprojekt</footer>
</main>
</body>
</html>
+22
View File
@@ -0,0 +1,22 @@
:root { color-scheme: dark; font-family: Inter, system-ui, -apple-system, Segoe UI, sans-serif; background:#0d1118; color:#f0f1f3 }
* { box-sizing: border-box }
body { margin: 0; min-height: 100vh; background: radial-gradient(circle at 50% -20%,#25251b,transparent 55%),#0d1118 }
.shell { max-width: 1030px; margin: 0 auto; padding: 34px 20px 30px }
.top,.brand,.actions { display:flex;align-items:center;gap:14px }
.top { justify-content:space-between; margin-bottom:30px }
.coin { display:grid;place-items:center;width:54px;height:54px;border-radius:16px;background:linear-gradient(140deg,#ffe187,#bc7925);font-size:32px;font-weight:850;color:#25200f }
h1 { font-size:1.65rem; margin:0; letter-spacing:-.025em } h2 { margin:0 0 18px;font-size:1.15rem }
.brand p { color:#a3aab6; font-size:.83rem;margin:3px 0 0 }
.pill { background:#242b35;color:#bfc5ce;padding:8px 11px;border-radius:999px;font-size:.76rem }
.warning { border:1px solid #aa8540; border-radius:15px; background:#2c261b;color:#f8de9a; padding:17px 19px;line-height:1.65;margin-bottom:20px }
.grid { display:grid;grid-template-columns:1fr 1fr;gap:18px }
.panel { min-height:235px; padding:25px;border:1px solid #29323c;background:linear-gradient(150deg,#1b222b,#171c23);border-radius:20px }
.hero { background:linear-gradient(150deg,#2c2a20,#192128) }
.eyebrow { color:#a7a7a0;font-size:.88rem }.balance { margin:14px 0 0;font-size:3.5rem;font-weight:750;letter-spacing:-.03em }.balance small {font-size:1.1rem;color:#eec36b}
p,.muted { color:#a5adbb }.actions { margin-top:24px;flex-wrap:wrap }
button {background:#ecc16c;color:#262019;border:0;border-radius:10px;padding:11px 14px;font-size:.9rem;font-weight:700;margin:3px 7px 3px 0}
button.secondary {background:#434956;color:#f2f2f2} button:disabled {opacity:.42;cursor:not-allowed}
.hint { font-size:.77rem;line-height:1.6;margin-top:19px } .empty {text-align:center;border:1px dashed #46515f;border-radius:12px;padding:37px 14px;color:#a5adbb }
dl {display:grid;grid-template-columns:1fr 1fr;gap:17px 10px} dt {color:#a5adbb} dd {margin:0;text-align:right;color:#f1ce83}
footer {color:#77808d;font-size:.8rem;text-align:center;padding-top:40px}
@media(max-width:720px) {.grid{grid-template-columns:1fr}.top{align-items:flex-start}.pill{white-space:nowrap}.balance{font-size:3rem} }