Translate the whole site to English: English routes with 301 redirects from the Dutch paths, English UI, docs, seeds and captions, one-time live content migration

This commit is contained in:
2026-10-05 11:25:41 +02:00
parent bbdecdc95b
commit ff547e1677
153 changed files with 1095 additions and 774 deletions
@@ -0,0 +1,18 @@
# Architecture
FastAPI with Jinja2, rendered on the server. SQLite through `dataset`, synchronous and deliberately without a threadpool. Sessions with PBKDF2-SHA256 passwords.
## Layers
- `molodetz/database/`: one file per subject, always import from the package root.
- `molodetz/routers/`: mirrors the URL path.
- `molodetz/services/`: background services under one supervisor with a file lock.
- `molodetz/templates/`: one Jinja environment in `templating.py`.
## Deleting
Everything is soft deleted with `deleted_at` and `deleted_by`. Only cleanup jobs delete for real.
## Static files
Assets go through `static_url()`, which versions them under `/static/v<version>/`. Those are immutably cacheable for a year.