Essential session storage is required to sign in. Optional analytics remain off unless you allow them.
Build a blog with the Next.js App Router (no Pages Router). A statically rendered home page lists posts; dynamic `[slug]` post pages are PRERENDERED at build with generateStaticParams; a shared root layout provides the html/body shell and nav; each post sets its title/description via the Metadata API (generateMetadata) — NOT next/head; cover images use next/image. Posts can come from local MDX/markdown or a public API. Fetch data in Server Components (no useEffect), and keep the bundle nearly JS-free.
Correct app/ structure: a root layout rendering html/body, a home page, and dynamic [slug] pages prerendered via generateStaticParams.
Data is fetched in Server Components (async/await, no client hooks); little or no unnecessary 'use client'.
Per-page SEO via the Metadata API (not next/head); next/image used with sized images to avoid layout shift.
Builds and renders; links navigate; no console errors; static pages are actually static.
Use this README structure to make the work reviewable.
DevPath fetches a read-only, size-capped snapshot. Submitted code is never executed.
# A blog with the App Router ## Goal Build a blog with the Next.js App Router (no Pages Router). A statically rendered home page lists posts; dynamic `[slug]` post pages are PRERENDERED at build with generateStaticParams; a shared root layout provides the html/body shell and nav; each post sets its title/description via the Metadata API (generateMetadata) — NOT next/head; cover images use next/image. Posts can come from local MDX/markdown or a public API. Fetch data in Server Components (no useEffect), and keep the bundle nearly JS-free. ## Acceptance criteria - [ ] App Router routing: Correct app/ structure: a root layout rendering html/body, a home page, and dynamic [slug] pages prerendered via generateStaticParams. - [ ] Server Components & data: Data is fetched in Server Components (async/await, no client hooks); little or no unnecessary 'use client'. - [ ] Metadata & images: Per-page SEO via the Metadata API (not next/head); next/image used with sized images to avoid layout shift. - [ ] Correctness: Builds and renders; links navigate; no console errors; static pages are actually static. ## Verification - [ ] Document installation and run commands. - [ ] Record automated checks and their exact commands. - [ ] Add representative output, screenshots, or a short demo where useful. - [ ] Confirm failure paths and known constraints. ## Decision log ### Decision title - Context: - Choice: - Alternatives considered: - Tradeoffs: ## Evidence - Link each rubric criterion to the file, test, or artifact that demonstrates it. ## Known limitations - List what is intentionally out of scope and what should be improved next.