Add offline-first section to rSpace landing page
New feature card in hero grid and a dedicated section explaining local IndexedDB persistence, Automerge auto-merge, and incremental sync. Matches the existing visual style with pillars and identity cards. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
6b06168f11
commit
ea8f1b3f95
|
|
@ -125,7 +125,7 @@
|
||||||
|
|
||||||
.features {
|
.features {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(3, 1fr);
|
grid-template-columns: repeat(4, 1fr);
|
||||||
gap: 1.5rem;
|
gap: 1.5rem;
|
||||||
margin-top: 4rem;
|
margin-top: 4rem;
|
||||||
}
|
}
|
||||||
|
|
@ -329,7 +329,7 @@
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
}
|
}
|
||||||
.features {
|
.features {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: repeat(2, 1fr);
|
||||||
}
|
}
|
||||||
.section h2 {
|
.section h2 {
|
||||||
font-size: 1.5rem;
|
font-size: 1.5rem;
|
||||||
|
|
@ -380,6 +380,11 @@
|
||||||
<div class="feature-title">Real-time Sync</div>
|
<div class="feature-title">Real-time Sync</div>
|
||||||
<div class="feature-desc">Powered by Automerge CRDT</div>
|
<div class="feature-desc">Powered by Automerge CRDT</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="feature">
|
||||||
|
<div class="feature-icon">📡</div>
|
||||||
|
<div class="feature-title">Offline-First</div>
|
||||||
|
<div class="feature-desc">Works without internet, merges on reconnect</div>
|
||||||
|
</div>
|
||||||
<div class="feature">
|
<div class="feature">
|
||||||
<div class="feature-icon">🌐</div>
|
<div class="feature-icon">🌐</div>
|
||||||
<div class="feature-title">Your Subdomain</div>
|
<div class="feature-title">Your Subdomain</div>
|
||||||
|
|
@ -442,6 +447,50 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Offline-First Section -->
|
||||||
|
<div class="section">
|
||||||
|
<div class="section-divider"></div>
|
||||||
|
<h2>Offline-First, Always Available</h2>
|
||||||
|
<p class="section-subtitle">
|
||||||
|
rSpace works without an internet connection. Edit your canvas on a plane,
|
||||||
|
in a field, or underground — your changes merge automatically when
|
||||||
|
you're back online. No sync buttons, no conflict dialogs.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="pillars">
|
||||||
|
<div class="pillar">
|
||||||
|
<div class="pillar-icon">💾</div>
|
||||||
|
<div class="pillar-title">Local Persistence</div>
|
||||||
|
<div class="pillar-desc">Your canvas is cached in the browser. Refresh the page — it loads instantly, even offline.</div>
|
||||||
|
</div>
|
||||||
|
<div class="pillar">
|
||||||
|
<div class="pillar-icon">🔀</div>
|
||||||
|
<div class="pillar-title">Auto-Merge</div>
|
||||||
|
<div class="pillar-desc">Automerge CRDTs resolve conflicts automatically. Multiple people can edit the same canvas offline and merge without data loss.</div>
|
||||||
|
</div>
|
||||||
|
<div class="pillar">
|
||||||
|
<div class="pillar-icon">⚡</div>
|
||||||
|
<div class="pillar-title">Incremental Sync</div>
|
||||||
|
<div class="pillar-desc">Only new changes are transferred on reconnect — not the whole document. Fast even on slow connections.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="identity-card">
|
||||||
|
<h3>How it works</h3>
|
||||||
|
<p>
|
||||||
|
Every rSpace canvas is an <span class="hl">Automerge CRDT document</span> stored
|
||||||
|
locally in your browser's IndexedDB. When you open a canvas, it renders from the
|
||||||
|
local cache first — no waiting for the server. Edits you make are saved locally
|
||||||
|
and synced to the server via WebSocket when a connection is available. If you go offline,
|
||||||
|
the app keeps working: a <span class="hl">Service Worker</span> serves the app shell
|
||||||
|
from cache, and your changes accumulate in the local CRDT document. When connectivity
|
||||||
|
returns, Automerge's <span class="hl">incremental sync protocol</span> reconciles
|
||||||
|
your changes with everyone else's — conflict-free, automatically. No manual
|
||||||
|
merge, no "which version do you want to keep?" dialogs.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Interoperable Ecosystem Section -->
|
<!-- Interoperable Ecosystem Section -->
|
||||||
<div class="section">
|
<div class="section">
|
||||||
<div class="section-divider"></div>
|
<div class="section-divider"></div>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue