This repository has been archived on 2025-08-23. You can view files and clone it, but cannot push or open issues or pull requests.
Files
GreenCoast/client/index.html

149 lines
4.9 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>GreenCoast — Client</title>
<meta name="viewport" content="width=device-width,initial-scale=1"/>
<link rel="stylesheet" href="./styles.css"/>
<!-- Optional: pin API base -->
<!-- <meta name="gc-api-base" content="https://api-gc.fullmooncyberworks.com"> -->
<style>
#flash{position:fixed;right:12px;bottom:12px;background:#0b1222;border:1px solid #1f2937;color:#e5e7eb;
padding:.55rem .7rem;border-radius:.5rem;box-shadow:0 6px 18px rgba(0,0,0,.35);display:none;z-index:9999}
</style>
</head>
<body>
<header class="topbar">
<div class="brand">GreenCoast</div>
<nav class="tabs">
<a data-route href="#/">Feed</a>
<a data-route href="#/privacy">Privacy</a>
<a data-route href="#/gdpr">GDPR</a>
<a data-route href="#/terms">Terms</a>
</nav>
<div class="actions">
<button id="signIn" type="button">Sign in (device key)</button>
<button id="discordStart" type="button">Discord</button>
<button id="panic" type="button">Panic wipe</button>
</div>
</header>
<div id="banner" class="banner" hidden>
You are in <strong>anonymous (limited) mode</strong>. Only public text posts are available until you authorize this device.
</div>
<!-- Three-column shell -->
<div class="shell">
<aside id="left" class="col">
<section class="card">
<h3>Profile</h3>
<div class="profile">
<img id="avatar" alt="avatar" width="56" height="56"/>
<div class="profile-meta">
<div><code id="fp">(pseudonymous)</code></div>
<div class="muted small">Avatar is derived locally.</div>
</div>
</div>
</section>
<section class="card">
<h3>Quick links</h3>
<ul class="links">
<li><a data-route href="#/">Feed</a></li>
<li><a data-route href="#/privacy">Privacy Policy</a></li>
<li><a data-route href="#/gdpr">GDPR</a></li>
<li><a data-route href="#/terms">Terms</a></li>
</ul>
</section>
</aside>
<main id="feed" class="col">
<section class="card">
<h2>Connection</h2>
<div class="row">
<label>Shard URL</label>
<input id="shardUrl" placeholder="https://api-gc.fullmooncyberworks.com"/>
</div>
<details id="adv" class="advanced">
<summary>Advanced (security)</summary>
<div class="row">
<label>Bearer (hidden)</label>
<input id="bearer" type="password" placeholder="gc2 token" autocomplete="off"/>
</div>
<div class="row">
<label>Passphrase</label>
<input id="passphrase" type="password" placeholder="••••••••" autocomplete="off"/>
</div>
<p class="muted small">
Security fields are local to your browser. We do not store PII or logs.
Third-party SSO is optional and not endorsed for security.
</p>
</details>
<button id="saveConn" type="button">Save</button>
<div id="health" class="muted"></div>
</section>
<section class="card">
<h2>Compose</h2>
<div class="row">
<label>Visibility</label>
<select id="visibility">
<option value="public">Public (plaintext)</option>
<option value="private">Private (E2EE via passphrase)</option>
</select>
</div>
<div class="row">
<label>Title</label>
<input id="title" placeholder="Optional title"/>
</div>
<div class="row">
<label>Body</label>
<textarea id="body" rows="6" placeholder="Write your post..."></textarea>
</div>
<button id="publish" type="button">Publish</button>
<div id="publishStatus" class="muted"></div>
</section>
<section class="card">
<h2>Posts (live index)</h2>
<div id="posts"></div>
</section>
</main>
<!-- Legal/other pages render here (SPA routing) -->
<main id="page" class="col" hidden>
<section class="card">
<div id="pageContent">Loading…</div>
</section>
</main>
<aside id="right" class="col">
<section class="card">
<h3>About</h3>
<p class="muted small">Zero-trust, E2EE optional, no analytics, no PII.</p>
</section>
<section class="card">
<h3>Legal</h3>
<ul class="links">
<li><a data-route href="#/privacy">Privacy</a></li>
<li><a data-route href="#/gdpr">GDPR</a></li>
<li><a data-route href="#/terms">Terms</a></li>
</ul>
</section>
</aside>
</div>
<footer class="footer">
<a data-route href="#/privacy">Privacy</a> ·
<a data-route href="#/gdpr">GDPR</a> ·
<a data-route href="#/terms">Terms</a>
</footer>
<div id="flash"></div>
<script type="module" src="./app.js"></script>
</body>
</html>