Svekyll
Svekyll takes the simple conventions of Jekyll and marries them to the incredible power of Svelte.
Read more here: https://svekyll.com
Svekyll achieves perfect lighthouse scores: all 100s

Svekyll CLI
The original Svekyll was SvelteKit based. This meant a user had to use an entire full stack JavaScript system when the goal was to create a static blog. This was the wrong approach.
The new Svekyll uses a CLI tool much like the original Jekyll. Your project can be nothing more than a posts directory and a package.json file.
Sample package.json:
{
"version": "0.0.1",
"scripts": {
"build": "yarn svekyll-cli build && yarn svekyll-cli finalize",
"verify": "yarn svekyll-cli verify",
"upload": "yarn svekyll-cli upload"
},
"type": "module",
"dependencies": {
"svekyll-cli": "0.0.71"
}
}
And, posts can be something like this:
$ ls -1 posts/
2023-05-26-i-m-a-dad-i-replaced-myself-with-an-llm.md
2023-06-04-expose-any-private-service-using-headscale.md
2023-06-30-why-is-gitlab-source-code-public-and-discourse-community-private-.md
2023-07-20-llms-aren-t-woke-they-are-just-really-bad-at-math.md
2023-07-20-using-the-llm-tool-inside-docker.md
Each posts is a standard jekyll style post, but you can also add Svelte components using MDSveX.
$ cat posts/2023-07-20-using-the-llm-tool-inside-docker.md
---
title: "using the LLM tool inside docker"
published: true
date: 2023-07-20
data:
a: 1
b: 2
---
<script>
import MyComponent from './MyComponent.svelte'
</script>
Katarismo uses the excellent llama.cpp project. But, recently I've been reading about the LLM tool from the prolific Simon Willison.
<MyComponent {data}/>
I run NixOS as my \*nix of choice. But, python and nix's immutable file systems approach are like oil and water, so I generally like to run anything with Python inside a docker container.
This is the Dockerfile I used:
...
Building your blog
Once you have this structure, you can build it like this:
yarn # install svekyll and dependencies
yarn build
Then, look inside the build directory.
Technical Notes on Svekyll CLI
Svekyll CLI eschews the traditional JavaScript build system. Internally, svekyll-cli creates a vite configuration with the right plugins (like tailwind, postcss). It then generates a set of templates inside the root directory. Each of these is a standalone Svelte app, and then svekyll-cli compiles them using vite and svelte and the preprocessor. The result in the build directory is a series of indThisex.html files with the JavaScript compiled, minimized, tree-shaken and inlined. This results in an incredibly fast experience for readers, but without compromises on the experience as you can use the full capabilities of Svelte.
For example, on a blog with five posts, this is the directory structure. This can be put on any static hosting service:
$ tree build/
build/
├── 2023-05-26-i-m-a-dad-i-replaced-myself-with-an-llm
│ └── index.html
├── 2023-06-04-expose-any-private-service-using-headscale
│ └── index.html
├── 2023-06-30-why-is-gitlab-source-code-public-and-discourse-community-private-
│ └── index.html
├── 2023-07-20-llms-aren-t-woke-they-are-just-really-bad-at-math
│ └── index.html
├── 2023-07-20-using-the-llm-tool-inside-docker
│ └── index.html
├── index.html
├── katarismo.png
├── page
│ └── 0
└── tags
├── headscale
│ └── index.html
├── internal
│ └── index.html
├── tailscale
│ └── index.html
└── wireguard
└── index.html