I really like the turbolinks approach - you simply write HTML and then include the script in your head tags. However, I'm still hooked on Markdown. So I am still prerendering HTML - and then doing the routing with Hyperapp. (See https://href.cool/Tapes/Africa for an example - you get a prerendered static HTML page, but it uses JavaScript from there to render the other pages.)
The ultimate approach is Beaker Browser though. You can actually just write your whole site in Markdown (/index.md, /posts/batman-review.md, /posts/covid-resources.md) and then write a nice wrapper for them at /.ui/ui.html. This means you can edit posts with the built-in editor - and people can 'view source' to see your original Markdown! It's like going beyond the 90s on an alternate timeline.
(A sample of this is this wiki: hyper://1c6d8c9e2bca71b63f5219d668b0886e4ee2814a818ad1ea179632f419ed29c4/. Hit the 'Editor' button to see the Markdown source.)
I kinda went down the same path to generate my site. I had a static generator, which worked as most static generators, being a standalone program, and moved to having a python script (and it's .venv) in the root folder of my content, that has markdown, that converts it to a HTML.
The ultimate approach is Beaker Browser though. You can actually just write your whole site in Markdown (/index.md, /posts/batman-review.md, /posts/covid-resources.md) and then write a nice wrapper for them at /.ui/ui.html. This means you can edit posts with the built-in editor - and people can 'view source' to see your original Markdown! It's like going beyond the 90s on an alternate timeline.
(A sample of this is this wiki: hyper://1c6d8c9e2bca71b63f5219d668b0886e4ee2814a818ad1ea179632f419ed29c4/. Hit the 'Editor' button to see the Markdown source.)