Skip to content

Hybrid architecture: static reads + Solid writes #3

@melvincarvalho

Description

@melvincarvalho

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

  1. Public profile on GitHub Pages → writes go to personal Solid pod
  2. Cached CDN copy → writes go to origin server
  3. Archived/historical data → read-only, no write target
  4. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions