* Site Production
:PROPERTIES:
:CUSTOM_ID: site-production
:END:
The Almanack site is managed by Django, but the production version is
/static content/, generated by
[[https://django-distill.com/][django-distill]]. Interactivity is
provided by [[https://htmx.org/][htmx]], and the HTML that is loaded on
demand by that javascript library is, as much as possible, stored as
HTML fragments in individual files, generate as part of the same
distillation process.

This dynamically-generated, but staticly-presented model allows us to
host the site using IPFS as well as over HTTPS. It also allows us to
pursue a local-first model, as the site can be passively loaded and
aggressively cached in the background.

* User Authentication
:PROPERTIES:
:CUSTOM_ID: user-authentication
:END:
For authentication purposes, we associate public keys with each user
account and only support authentication systems that allow us to only
store public keys. This is so we don't have to faff around protecting
passwords, and also to walk our walk.
