I want something that is:
- SSG (static site output)
- looks nice
- is a template I can use out of the box by just dropping in my content and configurations, rather than designing or building myself
- is not feature-poor. I want it to have features like footnotes, jump-to-section links, citations, on-hover pop-ups for citations or footnotes, syntax highlighting for code blocks, etc.
- nice to have: ability to draw basic graphs or diagrams (helps in technical explanations)
- is not too difficult to customize by editing the code directly, Customizing the looks, structure, or adding functionality if I needed
Programming language doesn’t matter much. I can use whatever. I do have a preference for functional languages.
Eleventy seems like a great framework to do this, but as I said I want a template that’s ready out of the box not just a framework. The blogging template I found for eleventy does not look as nice as I hope.
I don’t know a good template, but whatever you choose make sure it uses Markdown for the post format. Markdown was originally designed for exactly your use case. The Daring Fireball blog has been using Markdown for 20 years now.
There are variants of markdown, and I’d go with Github Flavoured Markdown which has all the features you require and has quite a few improvements over the original spec:
For the few things it can’t do, like embedding graphs — Markdown is a superset of HTML, meaning that arbitrary HTML is valid Markdown. You could, for example, use D3.js.
Personally I would also use GitHub as my distribution method. Write your posts in any text editor, push to GitHub, and then a GitHub action triggers an action that re-generates the HTML and publishes your site.
That approach will work well and if it ever stops working well you can easily move part of your system to something else without reinventing the entire thing.