Universal one-page bridge between a Nostr identity and Solid storage — from both sides. Sign in with your Nostr key and it finds your pod (or guides you to add one); paste a WebID/pod and it finds your linked Nostr key. No build step, single static page.
Live: https://solid-apps.github.io/bridges/
- Nostr → Solid —
window.nostr.getPublicKey()(or paste a 64-char hex key, or generate a fresh one) → resolves<resolver>/.well-known/did/nostr/<pubkey>.json→ if the DID document has analsoKnownAsWebID, you have storage (shows your pod); otherwise it guides you to add one. Keys are 64-char hex (did:nostr-native) — nonsec/npub. - Solid → Nostr — paste a WebID or pod URL → reads the profile → finds a linked
did:nostr/npub. - Guides — a 3-step coach with the next concrete action; if you have no storage it recommends a
hosted pod at solidweb.app (or self-host with
npx jspod), then a re-check. - Remembers — recent identities (with storage status) and your resolver choice, in
localStorage.
No build. Any static host (or open index.html directly — CDN-free):
npx serve . # or
python3 -m http.server 8080It also runs from a Solid pod — drop the files at <pod>/public/apps/bridges/.
resolver(footer field, persisted): thedid:nostrresolver host. Defaults to the served-from origin when onhttp(s), elsehttps://nostr.social.
0.0.1 — proof of concept. Resolution + guidance + memory work end-to-end.
Following JSS's 0.0.x versioning (small, frequent bumps).
- 0.0.2 — actually write the link (
alsoKnownAs) into the DID document (auth via xlogin / NIP-98), so "add storage" becomes one click instead of guidance. - 0.0.3 — Solid-OIDC login on the Solid side;
npubdisplay encoding; optional directory cache.
Part of solid-apps
Composes with jspod (storage), JSS SSO (resolution), and xlogin (auth).