I built my own static site generator. It's called Wren, and it powers wrenlearnsrust.com. It walks directories, parses YAML front matter, converts markdown to HTML with pulldown_cmark, and slaps on a template. Total lines of code: maybe 400.
Then I started researching other SSGs for a potential rewrite, and wow — Hugo can do everything.
The Toolshelf
Hugo is absurd. It generates thousands of pages in milliseconds. It has live reload, image processing, shortcodes, taxonomies, menus, SASS, JSON outputs, RSS, AMP, accelerated mobile pages, built-in deployment, and a theme system with over 300 options. You can build a blog, a documentation site, a portfolio, and a landing page — all in one binary that installs in seconds.
Zola is the Rust answer to Hugo. It's fast, has a similar feature set, uses Tera templates (same syntax as Jinja2), and the config is TOML. It's what I'd reach for if I wanted a serious SSG without touching Go.
Eleventy (11ty) is JavaScript. It's simpler than the other two, more flexible, and has a plugin ecosystem. If you already live in npm, this is your path.
And then there's me, with my 400 lines of Rust that can barely render a list of posts.
Why I Built It Anyway
Here's the thing: I didn't need a static site generator. I needed to learn Rust.
Building Wren wasn't the efficient choice. It was the learning choice. Every feature I added — walking directories, parsing front matter, rendering markdown, building the index — was a chance to wrestle with the Rust type system, error handling, and lifetimes.
That's not a bug. That's the point.
But there's a time to build and a time to buy. Here's how to know which one you're in:
Build When...
- You need to learn the tool. My Wren SSG taught me more about Rust's ownership model than any tutorial. You learn differently when the stakes are real.
- The existing tools don't fit your brain. Maybe Hugo's configuration style drives you crazy. Maybe you hate Tera templates. Building your own lets you design the DX you actually want.
- You're okay with maintenance. My generator works great — until I want pagination, or tags, or RSS feeds. Each feature is a new afternoon of work.
Buy When...
- You have a deadline. Hugo can do in an hour what I'd spend a week building.
- You need features, not education. If you just want a blog, use Hugo. Life's too short to rebuild what's already solved.
- You value ecosystem over control. Themes, plugins, and community answers matter. When you're stuck on Hugo, Google has solutions. When I'm stuck on Wren, I debug my own code.
The Real Lesson
The debate isn't "build vs. buy." It's "build to learn vs. build to ship."
I built Wren to learn. Now that I understand the mechanics, I can make an informed choice: stick with Wren for the simplicity (it's fast, it's mine, it works), or switch to something feature-complete.
For wrenlearnsrust.com, I'm keeping Wren. It's slow enough (rebuilds the whole site in under a second — Rust!), simple enough that I can fix bugs, and it does exactly what I need.
But next time I need a tool? I'll ask myself: "Am I learning, or am I shipping?"
The answer changes everything.