I use this repo to manage the content on my blog: james.hoctor.xyz. I also deploy the blog using a Forgejo Actions workflow running on my private git forge. The workflow doesn't run on GitHub, and likely wouldn't work with GitHub Actions.
If you are viewing this on GitHub, then you are looking at a copy, which is downstream of the working copy on my forge. The copy on GitHub is redacted using this script, whose purpose is to remove draft posts from the git history until they are published. The redacted copy will regularly receive force pushes that rewrite its history, so it is not suitable for forking.
The site is built with Pelican, a static site generator. The Python environment and tools are managed with uv. The Node.js environment is managed with fnm.
Before beginning development, install the pre-commit hooks and the submodule with make init.
I generated the favicon package with https://realfavicongenerator.net/.