~/projects/this-website
[03 / 04] ● live rust · axum · web

This website

the page you are on: a rust server, a hand-written ascii water simulation, and no front-end framework.

year
2026
role
everything
stack
rust, axum, minijinja
front end
hand-written css + js
deploy
uberspace
[ specimen ]
the route table, typed by hand like everything else.

[01] the server

axum serves the pages, minijinja renders the templates on the server, and the blog reads a self-hosted writefreely instance instead of framing it. static directories carry their own cache headers. templates are read from disk at startup and compiled into the binary as a fallback.

there is no client-side router. each page is a document, and every internal link is a normal link.

[02] the water

the landing page is an ascii water simulation drawn into a <pre>. the grid is sized from the viewport, the characters are the pixels, and typing stirs the surface. the same simulation runs dimmed behind the blog, with the landing instance paused while it is off screen.

the artwork is avif. the grain is an inline svg turbulence filter, not an image request.

[03] two names, one binary

the host header picks the identity. the personal site keeps the easter eggs, the social links and the blog; the professional mirror hides everything that would tie the two names together. canonical redirects are resolved before a page is rendered, so a request never lands on the wrong identity.

  • server-side html with minijinja
  • plain css, no preprocessor
  • vanilla javascript, no bundler
  • one deploy, two domains
a site about the water should be built out of the same characters the water is made of.