wanderer is a static site generator that I open-sourced on Github:

https://github.com/dmliao/wanderer

It is an attempt at making a custom static site generator, because I have fallen into the pattern of:

  1. Using a new framework to write my personal site
  2. Very quickly scaffolding up a site, because getting started with new frameworks is very streamlined
  3. Import my content into the framework in the format they require
  4. Forget how said format works, and how to maintain framework
  5. Never update my site

I’ve done that several times now, with Jekyll, Metalsmith, Gatsby, etc. So I decided to figure out how those site generators tick, and make my own with my own authoring format so that if I forget how it works, at least I already write like this.

Goals

This project is more for education than for production. But if it works for me, then I will probably use it in production.

  • Personal Use - I write a lot in Markdown. I’ll want to make sure that this supports the formats that I use, without me having to think too hard about various transforms. This also means having the web site structure mirror the content directory structure.
  • Separated Frame and Content Concerns - content goes in one folder, layout and site stylings in another. If I decide later on to change my site or use another framework, the content should be portable.
  • Maintainability - my main pain point with frameworks was how difficult it was to maintain both the site and the framework. This generator should be written so that the tools can be examined and edited (by me), and to have as few third-party dependencies as possible. For handling text, I enforce a rule that all npm dependencies must have 0 depencies of their own (It’s difficult to enforce this for images.)
  • Accessibility - I don’t have any defined criteria beyond ‘pay attention to this’. I’ll figure it out later.

Note that there are no guidelines for what content should be, like text and images. I work equally in art and writing; I want the site to support both. I like web animations – while they are usually unnecessary, I am not going to say that they shouldn’t exist.

But the web is tremendously complicated now; I don’t shy away from media and images, but I also wanted to examine exactly what using them entails. So far, the generator supports compiling down Markdown documents and using HTML templates to create web pages, but I’m still thinking out how styles, images, etc. will all work together.