- Dockerfile: npm ci (uses package-lock for reproducible installs)
- CMD now: migrate → seed (idempotent) → start. Gated by SEED_ON_BOOT.
- docker-compose: name: helix, healthcheck on /, OAuth env defaults to empty
so `docker compose up` works without a .env (public pages render; sign-in
fails until OAuth is configured).
- README: explicit "Run it locally — two ways" section. Docker first
(production-like), native Node second. Documents port-conflict workaround
and Gitea OAuth setup.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>