Datepickers on native time.Time / lagoon.Date fields, file uploads on
materials, readings and class sessions managed from the course form
(course_id made nullable).
Testcontainers Postgres, a fresh database per test, skipped under
-short: migrations up and down, schema constraints, bm:seed idempotency
and rollback, every API route through the real jwt.auth guard, and admin
saves through the admin API.