Architecture of vancoola.dev
A technical review of the portfolio's server-side rendering, browser hydration and the constraints of the chosen stack.
Goal and stack
The site is built with Leptos and Axum. This stack lets me use Rust on the server and in the browser while delivering core content in the initial HTML response.
Key decisions
The server renders the first response, so core content is available before JavaScript and WebAssembly load.
Leptos hydrates the interface after the HTML arrives. The server and client share Rust types and some application code.
Request flow
Axum receives the HTTP request and passes it to Leptos. The page is rendered on the server; the browser receives the HTML and then starts WASM hydration.
Delivery
The application is packaged as a Docker image and deployed to Fly.io. Static assets and the WebAssembly bundle are delivered with Brotli compression.
Constraints of the chosen stack
Client bundle sizeFor a mostly static site, WebAssembly ships more code than a minimal JavaScript client.
Build timeCompiling Rust and WebAssembly takes longer than an equivalent Vite or esbuild build.
Ecosystem maturitySome browser integrations require custom implementations because fewer libraries are available than in the JavaScript ecosystem.
This stack is more complex than a portfolio requires. I chose it deliberately because the site also serves as a working Leptos and Axum project.