My goal is to find a cms that allows one to have one directory full of markdown documents that can be automatically deployed to any frontend without any manipulation of the static .md directory. This way the workflow isn’t tied to any byzantine proprietary framework or bloated and impotent web interface.

Hugo is pretty nice. It seems very modular. Installing themes is pretty straightforward. This theme is called terminal.

linking

Linking to other content seems reasonable. For example I have another post containing my install notes for pleroma. The md file is stored in content/posts/pleroma.md, and the link pleroma install is /posts/pleroma.

Static assets are stored in the static directory. This image:

Example image

is stored in static/img/parrot.gif and is linked with /img/parrot.gif.

This is almost certainly due tohugo’s lookup order functionality, and seems mostly fine but these links could break if you tried to render the md in another framework (essentially you would have to make sure that /posts and /img were at the root of the new project directory (as they are when hugo builds the site), that your router interpreted the routes this way, or change the links themselves).

The terminal theme

This theme handles markdown and code highlighting reasonably well (see markdown demo and the pleroma install notes above) but the style is a little minimal.

It does require a few heavy development dependencies (and also this wide code excerpt doesn’t render so well):

yarn add -D @babel/cli @babel/core @babel/preset-env browserslist clipboard cssnano postcss-cli postcss-import postcss-mixins postcss-nested postcss-preset-env postcss-url

building the site

Running hugo -D generates the the following build in public:

404.html    css    img         index.xml  markdown  posts        tags
categories  fonts  index.html  js         page      sitemap.xml

The js directory contains menu.js and prisma.js (for code highlighting) so most of the site should be functional even if JS is disabled, which is great.