Summary
Support a hybrid architecture where read-only static servers handle discovery/browsing, and Solid (or WebDAV) servers handle writes.
Architecture
┌─────────────────────────────────────────────────────┐
│ READS │
│ Static hosting / CDN / regular web servers │
│ (HTML + data islands, read-only, fast, cached) │
└─────────────────────────────────────────────────────┘
│
discovery
│
▼
┌─────────────────────────────────────────────────────┐
│ WRITES │
│ Solid server (or WebDAV) │
│ (auth, permissions, persistence) │
└─────────────────────────────────────────────────────┘
Benefits
- Reads scale infinitely - CDN, static hosting, cached at edge
- Public discovery is cheap - no server-side logic needed
- Only writes need infrastructure - Solid pod for auth/persistence
- Graceful degradation - no Solid server? Still browsable as read-only
- Separation of concerns - display vs. storage
Implementation Ideas
Option 1: Link header in HTML
<link rel="solid-storage" href="https://pod.example/profile">
solidos-lite reads locally, writes to linked Solid pod.
Option 2: Data attribute
<script type="text/turtle" data-writable="https://pod.example/profile.ttl">
...
</script>
Option 3: Same-origin detection
- If same-origin and writable → write directly
- If cross-origin or read-only → look for alternate write location
- Fall back to read-only mode
Use Cases
- Public profile on GitHub Pages → writes go to personal Solid pod
- Cached CDN copy → writes go to origin server
- Archived/historical data → read-only, no write target
- Collaborative editing → multiple read replicas, single write primary
Considerations
- Need CORS or proxy for cross-origin writes
- Auth flow for Solid pod (WebID-OIDC)
- Sync/freshness between read replica and write primary
- UI indication of read-only vs. writable mode
Related
Summary
Support a hybrid architecture where read-only static servers handle discovery/browsing, and Solid (or WebDAV) servers handle writes.
Architecture
Benefits
Implementation Ideas
Option 1: Link header in HTML
solidos-lite reads locally, writes to linked Solid pod.
Option 2: Data attribute
Option 3: Same-origin detection
Use Cases
Considerations
Related