feat: update landing page with ontology-derived architecture info

Align rstack.online with the new ONTOLOGY.md three-layer model
(rStack Foundation / rSpace Platform / rApps). Key changes:
- Architecture section now shows rApps → rSpace → rStack layers
- Hero subtitle uses ontology framing (local-first, composable, etc.)
- Add x402 micropayments and Gnosis Safe to value architecture
- Update Y.js/tldraw references to Automerge/FolkJS (current state)
- EncryptID flow diagram shows full HKDF key hierarchy
- Link to full ontology doc on GitHub
- Nav updated: Architecture, Apps, Identity, Payments, Open Source

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jeff Emmett 2026-03-02 16:31:04 -08:00
parent 9b54b26daf
commit 257a1b2fd9
1 changed files with 82 additions and 94 deletions

View File

@ -1117,9 +1117,10 @@
</div> </div>
<div class="nav-right"> <div class="nav-right">
<div class="nav-links"> <div class="nav-links">
<a href="#architecture">Architecture</a>
<a href="#areas">Apps</a> <a href="#areas">Apps</a>
<a href="#identity">Identity</a> <a href="#identity">Identity</a>
<a href="#self-host">Self-Host</a> <a href="#tokens">Payments</a>
<a href="#open-source">Open Source</a> <a href="#open-source">Open Source</a>
</div> </div>
<a class="nav-demo-btn" href="https://demo.rspace.online/rspace">Try Demo</a> <a class="nav-demo-btn" href="https://demo.rspace.online/rspace">Try Demo</a>
@ -1132,13 +1133,14 @@
<span class="hero-label">Open Source &middot; Self-Hosted &middot; Community-Owned</span> <span class="hero-label">Open Source &middot; Self-Hosted &middot; Community-Owned</span>
<h1>The community stack you actually own</h1> <h1>The community stack you actually own</h1>
<p class="subtitle"> <p class="subtitle">
A complete suite of open-source tools for community self-governance &mdash; A composable, local-first platform for collaborative knowledge work,
tied together with zero-knowledge identity and data sovereignty to the user. democratic governance, and programmable economic flows.
</p> </p>
<p class="description"> <p class="description">
rStack combines the latest open-source tools into a cohesive platform that communities rStack combines self-sovereign identity, Automerge CRDTs, x402 micropayments, and
can self-host on their own infrastructure or run on shared community servers. One login, wallet-abstracted multi-chain treasuries into a cohesive foundation. 25+ composable
one data layer, twenty apps &mdash; no vendor lock-in, no surveillance, no kill switch. modules render on a spatial canvas. One passkey, one data layer &mdash;
no vendor lock-in, no surveillance, no kill switch.
</p> </p>
<div class="hero-actions"> <div class="hero-actions">
<a href="#areas" class="btn btn-primary">Explore the Stack</a> <a href="#areas" class="btn btn-primary">Explore the Stack</a>
@ -1176,38 +1178,32 @@
<span class="section-label purple">Architecture</span> <span class="section-label purple">Architecture</span>
<h2>How the stack fits together</h2> <h2>How the stack fits together</h2>
<p class="section-desc"> <p class="section-desc">
rStack isn't a monolith. It's four independent layers that compose into Three layers, one coherent platform. Each layer is independently useful
something greater than the sum of their parts. Each layer can be swapped, but gains power through composition. The cheapest layer with sufficient
extended, or self-hosted independently. guarantees always wins &mdash; most operations never touch a blockchain.
<a href="https://github.com/rspace-online/rspace-online/blob/main/ONTOLOGY.md" target="_blank" rel="noopener noreferrer" style="color:#a78bfa; text-decoration:underline;">Read the full ontology &rarr;</a>
</p> </p>
<div class="arch-layers"> <div class="arch-layers">
<div class="arch-layer apps"> <div class="arch-layer apps">
<div class="arch-layer-label">App Layer</div> <div class="arch-layer-label">rApps</div>
<div class="arch-layer-content"> <div class="arch-layer-content">
<h4>20 purpose-built apps</h4> <h4>25+ composable modules</h4>
<p>Each app handles one job well &mdash; notes, voting, budgets, maps, chat. They share data through the sync layer below, so a vote in rVote can reference a budget in rFunds without either app knowing the other's internals.</p> <p>Each module implements a standard interface with typed feeds (data, economic, governance, creative) and renders as a shape on the canvas. Modules communicate through flows, not hard-wired integrations &mdash; a vote in rVote references a budget in rFunds without either knowing the other's internals.</p>
</div> </div>
</div> </div>
<div class="arch-layer sync"> <div class="arch-layer sync">
<div class="arch-layer-label">Sync Layer</div> <div class="arch-layer-label">rSpace</div>
<div class="arch-layer-content"> <div class="arch-layer-content">
<h4>CRDT-based real-time data mesh</h4> <h4>Platform &mdash; Spaces, Canvas, Flows</h4>
<p>Conflict-free replicated data types keep every app in sync &mdash; peer-to-peer, offline-capable, and eventually consistent. No central database, no single point of failure. Byzantine fault tolerant token ledger included.</p> <p>The unification layer. Spaces are collaborative contexts (teams, projects, communities) with role-based access. The FolkJS spatial canvas positions modules as interactive shapes. Inter-module flows (data, economic, trust, governance) connect everything. Each space is itself an Automerge CRDT &mdash; collaborative, offline-capable, conflict-free.</p>
</div> </div>
</div> </div>
<div class="arch-layer identity"> <div class="arch-layer identity">
<div class="arch-layer-label">Identity Layer</div> <div class="arch-layer-label">rStack</div>
<div class="arch-layer-content"> <div class="arch-layer-content">
<h4>rIDs (EncryptID) &mdash; zero-knowledge passkeys</h4> <h4>Foundation &mdash; Identity, Data, Payments, Crypto</h4>
<p>One biometric prompt creates your identity, derives encryption/signing/DID keys on-device, and provisions a gasless smart wallet. Social recovery replaces seed phrases. One login for every app.</p> <p>No module implements its own auth, sync, or payments. <span class="hl-green">EncryptID</span> derives all keys from a single passkey. <span class="hl-purple">Automerge CRDTs</span> provide local-first sync with Byzantine fault tolerance. <span class="hl">x402 micropayments</span> make any HTTP endpoint payable. <span class="hl-orange">Gnosis Safe</span> wallets abstract multi-chain treasuries.</p>
</div>
</div>
<div class="arch-layer infra">
<div class="arch-layer-label">Infra Layer</div>
<div class="arch-layer-content">
<h4>Docker + Traefik + your hardware</h4>
<p>Every app ships as an optimized Docker container. Traefik handles routing and TLS automatically. Deploy the full stack with a single <code>docker compose up</code> on any Linux server.</p>
</div> </div>
</div> </div>
</div> </div>
@ -1250,16 +1246,16 @@
<div class="app-card-icon">🌌</div> <div class="app-card-icon">🌌</div>
<div><div class="app-card-name">rSpace</div><div class="app-card-domain">rspace.online</div></div> <div><div class="app-card-name">rSpace</div><div class="app-card-domain">rspace.online</div></div>
</div> </div>
<div class="app-card-desc">Collaborative spatial canvas. The integration hub where all r-Stack tools come together on a shared, infinite workspace. Real-time multiplayer with CRDT sync.</div> <div class="app-card-desc">Collaborative spatial canvas. The integration hub where all rStack tools come together on a shared, infinite workspace. Real-time multiplayer with Automerge CRDT sync.</div>
<div class="app-card-built"><span>tldraw</span><span>Y.js</span><span>WebSocket</span></div> <div class="app-card-built"><span>FolkJS</span><span>Automerge</span><span>WebSocket</span></div>
</a> </a>
<a href="https://rnotes.online" class="app-card" target="_blank" rel="noopener noreferrer"> <a href="https://rnotes.online" class="app-card" target="_blank" rel="noopener noreferrer">
<div class="app-card-header"> <div class="app-card-header">
<div class="app-card-icon">📝</div> <div class="app-card-icon">📝</div>
<div><div class="app-card-name">rNotes</div><div class="app-card-domain">rnotes.online</div></div> <div><div class="app-card-name">rNotes</div><div class="app-card-domain">rnotes.online</div></div>
</div> </div>
<div class="app-card-desc">Real-time collaborative notebooks, checklists, and meeting notes. Block-based editor with end-to-end encryption and offline support.</div> <div class="app-card-desc">Real-time collaborative notebooks, checklists, and meeting notes. Local-first with end-to-end encryption and offline support.</div>
<div class="app-card-built"><span>BlockNote</span><span>Y.js</span><span>E2EE</span></div> <div class="app-card-built"><span>Automerge</span><span>E2EE</span><span>Offline-first</span></div>
</a> </a>
<a href="https://rpubs.online" class="app-card" target="_blank" rel="noopener noreferrer"> <a href="https://rpubs.online" class="app-card" target="_blank" rel="noopener noreferrer">
<div class="app-card-header"> <div class="app-card-header">
@ -1548,95 +1544,87 @@
<div class="eid-card-icon">💳</div> <div class="eid-card-icon">💳</div>
<h3>Wallet Abstraction</h3> <h3>Wallet Abstraction</h3>
<p> <p>
Every user gets an <span class="hl">ERC-4337</span> smart wallet &mdash; without Your passkey derives a <span class="hl">secp256k1 EOA</span> that signs for
ever seeing a wallet address or gas fee. Your passkey <em>is</em> your wallet signer. <span class="hl">Gnosis Safe</span> multisig wallets across 12+ EVM chains.
A paymaster sponsors fees. Session keys allow daily operations with a single biometric No MetaMask, no hardware wallet &mdash; the passkey <em>is</em> the wallet.
prompt per session. Rollup-first (Base, Optimism) for sub-cent transactions, settle to L1 when needed.
</p> </p>
</div> </div>
</div> </div>
<div class="flow-box"> <div class="flow-box">
<pre> <pre>
You (fingerprint / face scan) Passkey (biometric / PIN on device)
| &rarr; PRF extension yields hardware-bound salt
v &rarr; HKDF Master Key (256-bit)
┌──────────────────────────────────────────────────────────┐ &rarr; AES-256-GCM &mdash; encrypt documents, files, backups
| EncryptID | &rarr; Ed25519 &mdash; DID (did:key:z6Mk...) for identity
| | &rarr; ECDSA P-256 &mdash; TLS-grade signing
| Layer 1: WebAuthn Passkey (hardware-backed) | &rarr; secp256k1 &mdash; Ethereum EOA &rarr; Gnosis Safe wallet
| | | &rarr; Multi-chain treasury (12+ EVM chains)
| Layer 2: Derived Keys (on-device, HKDF) | &rarr; x402 micropayment signing
| |── Encryption Key ── rFiles, rNotes, rSpace E2E | &rarr; Threshold confirm &rarr; execute
| |── Signing Key ───── rVote ballots, authorship |
| └── DID Key ───────── portable identity | Auth Levels (time-decaying, re-escalated by fresh passkey tap):
| | | Basic &rarr; Standard (&lt;15m) &rarr; Elevated (wallet ops) &rarr; Critical (key ops)
| Layer 3: Smart Wallet (Account Abstraction) |
| |── Gasless transactions (paymaster-sponsored) |
| |── Session keys (one prompt per session) |
| └── Community treasury (multi-sig) |
| | |
| Layer 4: Cross-App SSO |
| └── One login for all r-Stack apps |
└──────────────────────────────────────────────────────────┘
|
v
rSpace · rVote · rWallet · rFunds · rMaps · rFiles · ...
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
<!-- ════════════════════════════════════════════════ TOKENS ════ --> <!-- ════════════════════════════════════════════════ VALUE ════ -->
<div class="section" id="tokens"> <div class="section" id="tokens">
<div class="section-inner"> <div class="section-inner">
<span class="section-label amber">Token Layer</span> <span class="section-label amber">Value Architecture</span>
<h2>Community token issuance</h2> <h2>Payments as protocol, not product</h2>
<p class="section-desc"> <p class="section-desc">
Any r-Stack app can issue tokens through the shared CRDT data layer &mdash; Four layers of economic infrastructure. Use the cheapest layer that provides
no smart contract deployment, no gas fees, no blockchain expertise required. sufficient guarantees &mdash; most operations never touch a blockchain.
Bridge to on-chain when you're ready.
</p> </p>
<div class="token-features"> <div class="token-features">
<div class="token-card" style="grid-column: 1 / -1;"> <div class="token-card" style="grid-column: 1 / -1;">
<h3>x402 Micropayments</h3>
<p>
<span class="hl">HTTP 402 Payment Required</span> as a first-class protocol.
Any route can require payment by adding middleware. The client receives a 402
with requirements (payTo, amount, network), signs with their passkey-derived wallet,
and re-requests with an <code>X-PAYMENT</code> header. Settled on EVM L2 rollups
(Base, Optimism) for sub-cent transaction costs. Use cases: file upload gates,
AI generation costs, premium content, per-query API access.
</p>
</div>
<div class="token-card">
<h3>BFT-CRDT Tokens</h3> <h3>BFT-CRDT Tokens</h3>
<p> <p>
Tokens are built on <span class="hl">Byzantine Fault Tolerant CRDTs</span> &mdash; Tokens built on <span class="hl">Byzantine Fault Tolerant CRDTs</span> &mdash;
the same conflict-free data structures that power real-time sync across every app. peer-to-peer, conflict-free, no central mint. Membership tokens gate access,
They replicate peer-to-peer, resolve conflicts automatically, and maintain a contribution credits reward participation. Bridge to ERC-20 when you need
consistent ledger without a central mint. When ready, the CRDT ledger can bridge DeFi composability.
to an ERC-20 on any EVM chain through the Account Abstraction wallet.
</p> </p>
</div> </div>
<div class="token-card"> <div class="token-card">
<h3>Membership &amp; access tokens</h3> <h3>Gnosis Safe Treasury</h3>
<p> <p>
Gate access to private canvases, files, or voting channels. Revoke by removing Spaces can have multi-sig treasuries via Gnosis Safe. Funding proposals
the token. Permissions propagate in real-time through the CRDT mesh. from rFunds flow into Safe wallets. Threshold signing by space admins.
Same Safe address across L1 and 12+ L2 chains.
</p> </p>
</div> </div>
<div class="token-card"> <div class="token-card">
<h3>Contribution credits</h3> <h3>Governance Tokens</h3>
<p> <p>
Reward participation: meetings attended, tasks completed, content contributed. Module-minted ERC-20 tokens via the canvas. Voting power in rVote tied to
Credits accumulate and can be redeemed for governance weight, budget allocation, token holdings or delegation. Quadratic funding in rFunds weighted by
or marketplace purchases. token-gated participation.
</p> </p>
</div> </div>
<div class="token-card"> <div class="token-card">
<h3>Fundraising &amp; grants</h3> <h3>Rollup Strategy</h3>
<p> <p>
Distribute project tokens to supporters. Track contributions transparently through Data consensus via Automerge CRDT (off-chain, free, instant). Payment settlement
rFunds and vote on allocation through rVote. Full history auditable by token holders. on L2 rollups (~$0.001/tx). Governance finality on L1/L2 when needed.
</p> Token issuance on L2 for low-cost deployment.
</div>
<div class="token-card">
<h3>Bridge to on-chain</h3>
<p>
Start with zero-friction off-chain CRDT tokens. When you need DeFi composability
or cross-community exchange, bridge to ERC-20 with a single action through
the smart wallet.
</p> </p>
</div> </div>
</div> </div>
@ -1656,13 +1644,13 @@
<div class="oss-grid"> <div class="oss-grid">
<div class="oss-card"> <div class="oss-card">
<h4>tldraw</h4> <h4>FolkJS</h4>
<p>Infinite canvas engine powering rSpace. Real-time multiplayer drawing, diagramming, and spatial thinking.</p> <p>Spatial canvas engine powering rSpace. Web components positioned, connected, and composed on an infinite 2D surface.</p>
<span class="oss-tag">Canvas</span> <span class="oss-tag">Canvas</span>
</div> </div>
<div class="oss-card"> <div class="oss-card">
<h4>Y.js / CRDTs</h4> <h4>Automerge</h4>
<p>Conflict-free replicated data types for real-time sync. Peer-to-peer, offline-capable, eventually consistent.</p> <p>Local-first CRDTs for real-time sync. Peer-to-peer, offline-capable, Byzantine fault tolerant. The data layer for every rApp.</p>
<span class="oss-tag">Sync Layer</span> <span class="oss-tag">Sync Layer</span>
</div> </div>
<div class="oss-card"> <div class="oss-card">
@ -1706,8 +1694,8 @@
<span class="oss-tag">Analytics</span> <span class="oss-tag">Analytics</span>
</div> </div>
<div class="oss-card"> <div class="oss-card">
<h4>ERC-4337</h4> <h4>Gnosis Safe</h4>
<p>Account Abstraction standard for smart wallets. Gasless transactions, session keys, and social recovery.</p> <p>Multi-sig wallet standard. Passkey-derived EOA as signer. Threshold signing for community treasuries across 12+ EVM chains.</p>
<span class="oss-tag">Wallet</span> <span class="oss-tag">Wallet</span>
</div> </div>
<div class="oss-card"> <div class="oss-card">
@ -1716,8 +1704,8 @@
<span class="oss-tag">Infrastructure</span> <span class="oss-tag">Infrastructure</span>
</div> </div>
<div class="oss-card"> <div class="oss-card">
<h4>Hono / Next.js</h4> <h4>Hono + x402</h4>
<p>Edge-first web frameworks. Fast, lightweight, and deployable anywhere &mdash; from Cloudflare Workers to Docker.</p> <p>Edge-first web framework with HTTP 402 micropayment middleware. Any route can require payment &mdash; settled on EVM L2 rollups.</p>
<span class="oss-tag">Framework</span> <span class="oss-tag">Framework</span>
</div> </div>
</div> </div>