diff options
Diffstat (limited to 'site')
| -rw-r--r-- | site/about.html | 59 | ||||
| -rw-r--r-- | site/assets/site.css | 192 | ||||
| -rw-r--r-- | site/downloads.html | 60 | ||||
| -rw-r--r-- | site/index.html | 54 |
4 files changed, 365 insertions, 0 deletions
diff --git a/site/about.html b/site/about.html new file mode 100644 index 0000000..512047d --- /dev/null +++ b/site/about.html @@ -0,0 +1,59 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>About — MeshBay</title> + <link rel="stylesheet" href="/site/assets/site.css"> +</head> +<body> + + <nav class="site-nav"> + <a class="site-nav-brand" href="/">MeshBay</a> + <div class="site-nav-links"> + <a href="/about.html">About</a> + <a href="/downloads.html">Downloads</a> + <a href="/app">Open App</a> + </div> + </nav> + + <div class="page"> + <h1>About MeshBay</h1> + + <p>MeshBay is a decentralized, peer-to-peer platform for file sharing, + video streaming, and group messaging. It combines identity federation + (via Mesh Hubs) with truly peer-to-peer data exchange (via Mesh Nodes).</p> + + <h2>Architecture</h2> + <p>The system has three components:</p> + <ul> + <li><strong>Mesh Hub</strong> — a lightweight identity authority and group registry. + It stores user accounts and group metadata, but never touches content.</li> + <li><strong>Mesh Node</strong> — runs on the host user's machine. It stores and serves + all files, streams, and chat messages directly to group members.</li> + <li><strong>Mesh Client</strong> — a web browser or Android app. Connects directly to + nodes for all data transfer. The hub is never in the data path.</li> + </ul> + + <h2>Security</h2> + <p>Private groups use end-to-end encryption with ChaCha20-Poly1305. + Authentication uses Ed25519 signed JWTs. Key exchange is based on + X25519 ECDH with HKDF. Passwords are hashed with Argon2id (256 MB).</p> + + <h2>Open Source</h2> + <p>MeshBay is open source. The code is available on + <a href="https://github.com/cbesson/meshbay">GitHub</a>.</p> + + <h2>Contact</h2> + <p>For questions or bug reports, open an issue on the + <a href="https://github.com/cbesson/meshbay/issues">GitHub issue tracker</a>.</p> + </div> + + <footer class="site-footer"> + <a href="/">Home</a> · + <a href="/downloads.html">Downloads</a> · + <a href="https://github.com/cbesson/meshbay">GitHub</a> + </footer> + +</body> +</html> diff --git a/site/assets/site.css b/site/assets/site.css new file mode 100644 index 0000000..032450f --- /dev/null +++ b/site/assets/site.css @@ -0,0 +1,192 @@ +/* MeshBay site overlay — landing, about, downloads */ + +:root { + --bg: #f8fafc; + --bg-card: #ffffff; + --text: #0f172a; + --text-secondary: #475569; + --text-dim: #94a3b8; + --border: #e2e8f0; + --accent: #0ea5e9; + --accent-hover: #0284c7; + --accent-text: #ffffff; + --nav-bg: #0f172a; + --nav-text: #e2e8f0; + --nav-brand: #38bdf8; + --shadow: 0 1px 3px rgba(0,0,0,0.08); + --shadow-lg: 0 4px 16px rgba(0,0,0,0.1); +} + +@media (prefers-color-scheme: dark) { + :root { + --bg: #0f172a; + --bg-card: #1e293b; + --text: #f1f5f9; + --text-secondary: #94a3b8; + --text-dim: #64748b; + --border: #334155; + --nav-bg: #020617; + --shadow: 0 1px 3px rgba(0,0,0,0.3); + --shadow-lg: 0 4px 16px rgba(0,0,0,0.3); + } +} + +*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } + +body { + font-family: system-ui, -apple-system, sans-serif; + background: var(--bg); + color: var(--text); + line-height: 1.6; + min-height: 100vh; +} + +a { color: var(--accent); text-decoration: none; } +a:hover { text-decoration: underline; } + +/* ── Nav ─────────────────────────────────────────────────────────────────── */ + +.site-nav { + background: var(--nav-bg); + color: var(--nav-text); + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 24px; + height: 52px; +} + +.site-nav-brand { + font-size: 1.25rem; + font-weight: 700; + color: var(--nav-brand); + text-decoration: none; +} + +.site-nav-links { display: flex; gap: 20px; } + +.site-nav-links a { + color: var(--nav-text); + font-size: 0.9rem; + opacity: 0.85; + transition: opacity 0.15s; +} +.site-nav-links a:hover { opacity: 1; text-decoration: none; } + +/* ── Hero ────────────────────────────────────────────────────────────────── */ + +.hero { + text-align: center; + padding: 80px 24px 60px; + max-width: 720px; + margin: 0 auto; +} + +.hero h1 { + font-size: 2.5rem; + font-weight: 800; + margin-bottom: 12px; + letter-spacing: -0.02em; +} + +.hero .tagline { + font-size: 1.15rem; + color: var(--text-secondary); + margin-bottom: 32px; +} + +.hero .cta { + display: inline-block; + background: var(--accent); + color: var(--accent-text); + padding: 12px 32px; + border-radius: 8px; + font-size: 1rem; + font-weight: 600; + transition: background 0.15s; +} +.hero .cta:hover { background: var(--accent-hover); text-decoration: none; } + +/* ── Feature cards ───────────────────────────────────────────────────────── */ + +.features { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); + gap: 24px; + max-width: 840px; + margin: 0 auto; + padding: 0 24px 60px; +} + +.feature-card { + background: var(--bg-card); + border: 1px solid var(--border); + border-radius: 12px; + padding: 28px 24px; + box-shadow: var(--shadow); +} + +.feature-card .icon { + font-size: 2rem; + margin-bottom: 12px; +} + +.feature-card h3 { + font-size: 1.1rem; + margin-bottom: 8px; +} + +.feature-card p { + color: var(--text-secondary); + font-size: 0.92rem; +} + +/* ── Content page ────────────────────────────────────────────────────────── */ + +.page { + max-width: 680px; + margin: 0 auto; + padding: 48px 24px; +} + +.page h1 { font-size: 2rem; margin-bottom: 16px; } +.page h2 { font-size: 1.3rem; margin: 32px 0 12px; } +.page p { margin-bottom: 16px; color: var(--text-secondary); } +.page ul { margin: 0 0 16px 24px; color: var(--text-secondary); } +.page li { margin-bottom: 8px; } + +.page .pkg-table { + width: 100%; + border-collapse: collapse; + margin-bottom: 24px; +} +.page .pkg-table th, +.page .pkg-table td { + text-align: left; + padding: 10px 14px; + border-bottom: 1px solid var(--border); +} +.page .pkg-table th { font-weight: 600; } + +/* ── Footer ──────────────────────────────────────────────────────────────── */ + +.site-footer { + text-align: center; + padding: 32px 24px; + border-top: 1px solid var(--border); + color: var(--text-dim); + font-size: 0.85rem; +} + +.site-footer a { color: var(--text-secondary); } + +/* ── Responsive ──────────────────────────────────────────────────────────── */ + +@media (max-width: 600px) { + .hero h1 { font-size: 1.8rem; } + .hero { padding: 48px 16px 40px; } + .features { padding: 0 16px 40px; } + .site-nav { padding: 0 16px; } + .site-nav-links { gap: 12px; } + .site-nav-links a { font-size: 0.82rem; } +} diff --git a/site/downloads.html b/site/downloads.html new file mode 100644 index 0000000..7602fdb --- /dev/null +++ b/site/downloads.html @@ -0,0 +1,60 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>Downloads — MeshBay</title> + <link rel="stylesheet" href="/site/assets/site.css"> +</head> +<body> + + <nav class="site-nav"> + <a class="site-nav-brand" href="/">MeshBay</a> + <div class="site-nav-links"> + <a href="/about.html">About</a> + <a href="/downloads.html">Downloads</a> + <a href="/app">Open App</a> + </div> + </nav> + + <div class="page"> + <h1>Downloads</h1> + + <p>MeshBay packages will be available through standard package managers. + Package repositories are being set up.</p> + + <h2>Web Client</h2> + <p>No installation needed. Open the + <a href="/app">web app</a> in any modern browser (Chrome, Firefox, Edge, Safari).</p> + + <h2>Server Packages</h2> + <table class="pkg-table"> + <thead> + <tr><th>Package</th><th>Platform</th><th>Status</th></tr> + </thead> + <tbody> + <tr><td>meshbay-hub</td><td>Fedora / RHEL (RPM)</td><td>Coming soon</td></tr> + <tr><td>meshbay-hub</td><td>Ubuntu / Debian (DEB)</td><td>Coming soon</td></tr> + <tr><td>meshbay-node</td><td>Fedora / RHEL (RPM)</td><td>Coming soon</td></tr> + <tr><td>meshbay-node</td><td>Ubuntu / Debian (DEB)</td><td>Coming soon</td></tr> + </tbody> + </table> + + <h2>Android</h2> + <p>An Android client is planned. It will be available as an APK download + and eventually on F-Droid.</p> + + <h2>Source Code</h2> + <p>Clone the repository from + <a href="https://github.com/cbesson/meshbay">GitHub</a> + and follow the instructions in the README.</p> + </div> + + <footer class="site-footer"> + <a href="/">Home</a> · + <a href="/about.html">About</a> · + <a href="https://github.com/cbesson/meshbay">GitHub</a> + </footer> + +</body> +</html> diff --git a/site/index.html b/site/index.html new file mode 100644 index 0000000..39339e0 --- /dev/null +++ b/site/index.html @@ -0,0 +1,54 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>MeshBay — Decentralized P2P Platform</title> + <link rel="stylesheet" href="/site/assets/site.css"> +</head> +<body> + + <nav class="site-nav"> + <a class="site-nav-brand" href="/">MeshBay</a> + <div class="site-nav-links"> + <a href="/about.html">About</a> + <a href="/downloads.html">Downloads</a> + <a href="/app">Open App</a> + </div> + </nav> + + <section class="hero"> + <h1>MeshBay</h1> + <p class="tagline">Decentralized peer-to-peer file sharing, video streaming, and group messaging.</p> + <a class="cta" href="/app">Open App</a> + </section> + + <section class="features"> + <div class="feature-card"> + <div class="icon">🌐</div> + <h3>Peer-to-Peer</h3> + <p>Files and messages transfer directly between users. + No central server stores or relays your data.</p> + </div> + <div class="feature-card"> + <div class="icon">🔒</div> + <h3>End-to-End Encrypted</h3> + <p>Private groups use strong encryption (ChaCha20-Poly1305, Ed25519). + Only group members can read the content.</p> + </div> + <div class="feature-card"> + <div class="icon">🏠</div> + <h3>Self-Hostable</h3> + <p>Run your own hub and nodes. The software is open source + and designed for home servers and small communities.</p> + </div> + </section> + + <footer class="site-footer"> + <a href="/about.html">About</a> · + <a href="/downloads.html">Downloads</a> · + <a href="https://github.com/cbesson/meshbay">GitHub</a> + </footer> + +</body> +</html> |