Why this works
The DOM is the database. A save is one blob and one replaceable event — no backend anywhere in the loop.
A malleable HTML file whose host is Nostr. Everything below lives in this document’s markup.
This file edits and republishes itself. Sign in as the owner and type.
A save serialises the whole page, pushes it to Blossom as one content-addressed blob,
and republishes the nsite manifest pointing at it. The file on disk is always the
current state, so curl and crawlers see exactly what you see.
The DOM is the database. A save is one blob and one replaceable event — no backend anywhere in the loop.
Blobs are immutable, so a kind-5128 snapshot event pins a version by naming a set of hashes. Nothing is ever overwritten.
This block is one editable container, so it behaves the way a document
should: Enter starts a new paragraph. Select any text and a toolbar
appears — its first control is the block menu, which turns the current paragraph into a
heading, a list, a quote or a code block.
Shortcuts work too: ⌘B ⌘I ⌘K, ⌘⇧8 for a
bulleted list, ⌥1–⌥3 for headings. Or type
# , - or > at the start of a line.
Whatever you write here is markup in the file after a save — open the saved bytes and the paragraphs are just paragraphs.
Fetched from relays when this page loads, signature-checked in your browser.