An Authoring and UI Update
Finally did the wagtail port...
Gabe // May 23, 2021

It's been a long time coming but I finally moved the authoring for the blog over to wagtail instead of my old homegrown solution. This allows me to finally use a nice text editor instead of my magic bbcode-style strings in <text> fields. A long time coming since I had used wagtail back at Gecko for the first version of the website. It's rather nice and written in python/django with the ability to create arbitrary hierarchies of pages. This means that the android app needs to be updated but it'll be an opportunity to use slightly more modern libraries than last time.

Tailwind CSS

The previous UI had been implemented in Foundation 5, which presents a rigid hierarchy of components. I didn't want another component framework and did some reading about some different paradigms. In the end I liked Tailwind's inverse approach that lets me build something slightly less generic than bootstrap would produce. In addition there is a solid integration for developing under Django with a library called django-tailwind that exposes all the necessary levers for the JS project as a series of Django management commands. These commands deal with:

  • setting up the fiddly JS ecosystem components ./ tailwind install
  • manage the filesystem watchers to compile after changes to the templates ./ tailwind start which includes hot-reload to boot!
  • build a slimmed down bundle for production ./ tailwind build


A sibling project to Tailwind, AlpineJS provides a series of tight declarative bindings for manipulating the DOM. I'm using it here to expand the collapsed entries on the CV page programmatically based on a boolean the django template passed back. I'll continue to add some small enhancements but overall JS usage has been kept purposefully light.


After running a full bodied kube cluster for a few years on scaleway, I moved most services to their hosted kube instance. Everything else has been moved to a few k3s clusters. k3s is a highly opinionated kube distro that exists as a single binary. With this cluster, I'm using a ZFS-backed PVC to store the media uploaded on the authoring side, which has been shared with a static nginx pod for serving the media more adequately than django could. The wagtail app + nginx media also sit alongside another pod with the result of django collecstatic and the tailwindCSS compilation.

Other Notes

Most of the simple older posts from the log have been ported. Still porting 2017-2020 at this time. Hoping that the improved authoring experience convinces me to post moar.