# 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`
