- Public paper publishing with permanent archival on Cascade
- Encrypted private drafts with wallet-based XChaCha20-Poly1305 encryption
- Secure collaboration through wallet-derived key exchange
- Paper discovery through LumeScope, a read-only REST aggregator that indexes Cascade actions
Tech stack
Architecture
The key design decision is that there is no backend server. The entire application runs in the browser. It talks to the Lumera blockchain over RPC for transactions and to the SuperNode API for file storage.Three file types on Cascade
The app stores three distinct file types on Cascade and tells them apart by filename conventions.Published papers
Public, unencrypted academic papers permanently archived on Cascade.Encrypted drafts
Private drafts encrypted with a per-document key. The title stays readable as public metadata.Collaboration invitations
Key-exchange files that grant draft access to collaborators.Discovery with LumeScope
The app uses LumeScope to discover files without scanning the entire blockchain.Collaboration flow
Sharing a draft moves a wrapped document key from the owner to the collaborator.#key=...). Browsers never send the hash fragment to servers, so it stays on the client. That makes the link safe to share over any messaging channel.
Local state
The app useslocalStorage for three things.
- Draft metadata (IDs, titles, versions)
- Encrypted document keys wrapped with the wallet-derived key
- Collaboration invitations
localStorage only caches keys and metadata.
Source code
Browse the full implementation at github.com/kaleababayneh/Lumera-Research-Archive.Next steps
Encrypted storage
Implement the wallet-derived encryption pattern used for drafts.
Build a browser app
Start your own Vite and Keplr app from scratch.
JavaScript SDK reference
Look up every SDK method the archive calls.