./blog/hello-world

Hello, World

This blog is now generated by a Rust binary (gen-content) that reads Markdown with YAML front matter and uses Leptos components to render static HTML at build time — no WASM in the browser, no server running.

Why Rust?

The previous version of this site was built with other web technologies, which worked perfectly well, but it also brought along a stack that felt unnecessarily large for what I actually wanted to build.

I wanted something simpler, more predictable, and closer to the way I like to work.

So I rebuilt it in Rust.

Rust handles the content generation, the build process, and the static site generation itself. The result is a small pipeline where the source is Markdown, the generator is a Rust binary, and the final output is plain HTML, CSS, and assets.

No JavaScript framework is required in the browser.

Why Leptos?

Leptos gives me the component model I wanted without forcing the final website to become a client-side application.

The site uses Leptos components during the build process to construct the pages, but the browser receives static HTML. There is no WebAssembly application that needs to boot after the page loads, and there is no server-side runtime involved.

In other words, I’m using Leptos as part of the generation process rather than turning this blog into a traditional web application.

Markdown as the source

The actual content is intentionally boring.

Blog posts are Markdown files with YAML front matter:

---
title: "Hello, World"
slug: "hello-world"
date: "2026-08-29"
summary: "Why I rebuilt this site in Rust with Leptos."
tags: ["rust", "leptos", "meta"]
---

The gen-content binary reads these files, parses the metadata, renders the Markdown, and generates the corresponding pages.

This means writing a new post doesn’t require touching the application’s source code. I can simply create another Markdown file and let the build pipeline take care of the rest.

Static by design

There is something satisfying about knowing exactly what happens when someone visits this website.

The server doesn’t need to execute application code.

The browser doesn’t need to download a JavaScript framework.

There is no database involved.

There is just static content being served.

That makes the architecture small, easy to understand, and remarkably boring — which, for a personal website, is exactly what I want.

Why rebuild it?

This site is more than a redesign.

It is an experiment in building the web with tools I actually enjoy using.

Rust is a big part of my development workflow, and rebuilding this site gave me an excuse to push it further into the tooling around the website itself.

From content generation to the build pipeline, I wanted Rust to be more than something used for a small isolated component.

So here we are.

A website, generated with Rust, written with Markdown, rendered with Leptos, and served as static files.

Perhaps a little over-engineered for a personal blog.

But that’s half the fun.

Hello, World. 🦀

If it hasn’t worked out yet, it’s because it’s not over yet.

rustleptosmeta