Screenshot of o1tean.com: the 3D scene typeset in Hack characters.
section 1

brief

v1 was one long static page. A hand-written WebGL2 engine drew a 3D form as Hack characters, and liquid-glass lenses followed the pointer to show the smooth render underneath.

v2 keeps that idea and gives the work room: real pages at real URLs, each one prerendered to plain HTML that reads fine without JavaScript, then hydrated into one app so the 3D scene and the page transitions carry on across navigation.

section 2

stack

ui
React 19, TypeScript
3d
three.js r186 via @react-three/fiber
motion
motion 14, CSS for the rest
routing
react-router 8
build
Vite 8 and a Node prerender
hosting
Cloudflare Workers static assets

Node is the build toolchain only: nothing runs on a server. The per-pixel work runs as shaders on the GPU, so there was nothing for Rust or WebAssembly to speed up.

section 3

renderer

One persistent three.js scene renders behind every page, is redrawn as Hack characters by brightness, and a loupe of liquid glass shows the smooth render underneath. Changing page coarsens the characters into large cells, re-forms the scene for the next page and resolves it back into fine type.

how the renderer works →

section 4

outcome

Each build records the gzip size of its JavaScript, 3D chunk and CSS, and the weight of its fonts. The colophon shows those numbers for the build serving this page, next to the budgets.