A living world with no server: real-time on the client
A live ops dashboard with no backend. The trick was decoupling the thing that changes fast (animation) from the thing that changes meaningfully (data) — three layers, one smooth result.
The Lumen Review
A demo publication powered by a headless CMS — every word here is modelled and edited in Contentful, then rendered statically by Next.js.
A live ops dashboard with no backend. The trick was decoupling the thing that changes fast (animation) from the thing that changes meaningfully (data) — three layers, one smooth result.
Setting material.opacity did nothing. The fix was one line — and a reminder that in retained-mode 3D, some properties are compiled into the shader, not read every frame.
A deploy pipeline that kept failing taught me to read the HTTP status, not the stack trace — and that the cheapest fix is often moving the work, not forcing the path.
A custom PlateJS editor is only as good as its serialisation layer. How this one round-trips Contentful Rich Text without losing a node.
Instead of five App Framework apps with five bundles and five CI jobs, this project ships one app that routes on location. Anatomy of the pattern.
Computing reading time on publish means a webhook that edits the entry that triggered it. Here's how it avoids eating its own tail.
The fields you choose on day one quietly decide how painful year two will be. Principles for modelling content you won't regret.
Moving data fetching to the server and keeping client islands small made the pages faster and the codebase calmer. Notes from the shift.
Incremental Static Regeneration is the quiet workhorse of content sites. When to reach for it, and where on-demand revalidation fits.