Skip to content

Server-rendered, then live

Prose arrives in the HTML; the CRDT takes over on hydrate.

ssr

Server-rendered, then live

View source on any page here and the prose is already in the HTML. A Nitro runner keeps a cache of every document and the page renders straight out of it, so the first paint is content rather than a skeleton. Once the browser hydrates, the same page becomes a live CRDT document and every edit β€” yours or anyone else's β€” lands in place.

Why the cache is a pool

The runner syncs each document over its own short-lived connection, through a small pool rather than all at once. Opening one socket per document trips the server's per-IP cap, and the documents past the cap never sync β€” they render empty, with no error anywhere. Behind a proxy every visitor shares one IP, so that failure is invisible in dev and total in production.

Feeds come from the same place

/feed.xml, /feed.json and /sitemap.xml are all built from the cached tree. A page type opts into syndication explicitly β€” a grid of project tiles is full-width, but a portfolio is not a publication.