Skip to main content
The Lumera Research Archive is an open source decentralized academic publishing platform. It is a production grade example of integrating Cascade, the permanent storage service of Lumera Protocol. This page walks through its architecture so you can reuse the same patterns in your own app. The app supports four things.
  • 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
To run it locally you need Node.js 18 or later, the Keplr extension, and testnet LUME from the faucet.

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. Collaboration flow The app link carries key material in the URL hash fragment (#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 uses localStorage for three things.
  • Draft metadata (IDs, titles, versions)
  • Encrypted document keys wrapped with the wallet-derived key
  • Collaboration invitations
Cascade is the source of truth for file content. 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.