/** * Main landing page for rspace.online/ * * Server-rendered using the same shell (header, CSS, theme) as all module * landing pages. Content is ported from the old static Next.js export and * adapted to use the shared rl-* utility classes. */ import type { ModuleInfo } from "../shared/module"; import { escapeHtml, escapeAttr, MODULE_LANDING_CSS, RICH_LANDING_CSS } from "./shell"; export function renderMainLanding(modules: ModuleInfo[]): string { const moduleListJSON = JSON.stringify(modules); const demoUrl = "https://demo.rspace.online/rspace"; // Build the ecosystem grid dynamically from registered modules const ecosystemCards = modules .map( (m) => `
${m.icon}

${escapeHtml(m.name)}

${escapeHtml(m.description)}

`, ) .join("\n"); return ` rSpace — Community Platform
Try Demo
Community Platform

(ou)rSpace

Remember back when the internet was cool?

A collaborative, local-first platform with ${modules.length}+ interoperable tools. Own your data, run your community, connect your world — no landlords required.

Try the Demo Create a Space
Local-First Self-Hosted Open Source Offline-Ready

Everything Your Community Needs

Each tool works on its own, and they all work together.

💰

Community Funds

Budget rivers, revenue splits, and enoughness thresholds. Transparent finances with quadratic funding built in.

💬

Messaging & Forum

Real-time chat, threaded discussions, and async forums. All synced across devices with CRDT magic.

📁

Files & Media

Upload, organize, and share with memory cards. Public links, folder trees, and metadata that travels with content.

🔐

Passkey Identity

One passwordless login for the entire ecosystem. EncryptID uses WebAuthn — no passwords to leak, no accounts to hack.

📊

Dashboards & Data

Community analytics, voting results, spatial canvases. See everything at a glance and drill into what matters.

🛡

Privacy by Design

Your data lives on your device first. End-to-end encrypted sync, per-document keys, zero-knowledge architecture.

EncryptID

One Passkey for Everything

Sign in once with your fingerprint or device PIN. Your passkey works across every rApp — no passwords, no email verification loops, no third-party auth providers.

  • WebAuthn passkeys — phishing-resistant by default
  • Guardian recovery — 2-of-3 trusted contacts restore access
  • Device linking — QR scan adds your phone or tablet
  • One RP ID — shared across all r*.online domains
🔒

Passwordless Login

Touch your fingerprint sensor, tap your security key, or use your device PIN. That’s it.

Offline-First, Always

Your data lives on your device. Changes sync when you’re online, merge automatically when you’re not.

1

Local Persistence

Every document is stored in encrypted IndexedDB on your device. Works without internet.

2

Auto-Merge CRDT

Automerge CRDTs resolve conflicts automatically. No “someone else is editing” lockouts.

3

Incremental Sync

Only changed bytes travel over the wire. Reconnect after days offline and catch up in seconds.

The Internet as It Was Always Meant to Be

No algorithms deciding what you see. No ads. No data harvesting. Just tools that work for you, run by you, owned by you. rSpace is infrastructure for communities who refuse to rent their digital commons.

${modules.length} rApps and Growing

Each app is independent and composable. Use one, use all, mix and match.

${ecosystemCards}
`; } const MAIN_LANDING_CSS = ` /* Main landing page extras (on top of rl-* utilities) */ .main-wordmark { font-size: 3.5rem; } @media (min-width: 640px) { .main-wordmark { font-size: 4.5rem; } } .main-wordmark__accent { background: linear-gradient(135deg, #14b8a6, #22d3ee); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .main-badges { display: flex; gap: 0.5rem; justify-content: center; flex-wrap: wrap; margin-top: 1.5rem; } .main-footer { border-top: 1px solid rgba(255,255,255,0.06); padding: 2.5rem 1.5rem; } `;