# TODO.md Implementation is **complete**. Remaining items are owner/pre-launch actions (tracked in PROJECT_STATUS.md "Pre-launch checklist"). ## Done — all implementation milestones - [x] M0 Scaffold (git, pnpm, configs, tracking) - [x] M1 Tokens & styles (both themes, reduced-motion) - [x] M2 i18n (locales, slug map, dictionaries, helpers) - [x] M3 Content (zod schemas, EN/NO data, view models) - [x] M4 UI atoms + core layout (Header, Footer, Seo, ThemeScript, SkipLink) - [x] M5 Home sections (hero, proof, skills, projects, timeline, about, contact) - [x] M6 Case-study + capability templates (diagram, TL;DR, TOC, decisions, gallery) - [x] M7 All pages, both locales; 404; robots; sitemap - [x] M8 Behaviour modules (theme, nav, observer, lightbox, form) ≤15 kB - [x] M9 SEO (meta, hreflang, JSON-LD, build-time OG images) - [x] M10 Contact relay (.NET 9) — verified endpoints - [x] M11 Tests — 23 unit + 23 e2e (incl. axe a11y) green - [x] M12 Docker (site + relay images, compose, nginx) + Gitea CI - [x] M13 Verification pass ## Pre-launch (owner) — see PROJECT_STATUS.md - [ ] Real `/Linkedin` redirect URL in `site/nginx.conf` - [ ] Seeded-data screenshots + real headshot (replace `placeholder:` refs) - [ ] ATS-safe CV PDFs (replace files at `site/public/cv/`) - [ ] Native-Norwegian content review - [ ] Legacy WordPress URL inventory → finalise 301/410 map - [ ] CI registry secrets + server `.env`