Blog Page UI/UX Overhaul (Signal Grid Redesign + Tech-Blog Layout)
SummaryOverhauled the standalone Next.js app `blog/` at the repo root along two tracks. #532 `c5ac77d9`: full UI/UX redesign in the 'Signal Grid' design language — design tokens redefined by swapping values while keeping keys, so 60 components inherit the new look automatically; chart colors de-hardcoded into 21 `--chart-series-*`/`--chart-state-*` CSS variables; WCAG AA contrast 4.5:1+ preserved; `next build` 471/471 pages. #533 `596adeb2`: re-architected only the layout skeleton into a tech-blog shape while leaving the color/token SSOT (`globals.css`/`tailwind.config`) unchanged — a 3-zone shell of left persistent sidebar + center reading column + right sticky TOC (Stripe/Vercel docs), home switched from a portfolio vertical stack to a text index (Overreacted), wide reading column (Josh Comeau). The Critic caught a 404 (P2) where the sidebar nav linked to ADR topics/permanent index pages that didn't exist → resolved by adding those index pages in `4b425b51`. Total 54 files, +868/-332. No carryover.
Date: 2026-08-14
Goal
Overhaul the standalone Next.js app blog/ at the repo root (the public tech-blog + ADR archive site). Target pages: Home (ko/en), About, Posts (MDX), and the ADR sections (landing/sprints/topics/permanent/archive). Split the overhaul into two tracks — color/tokens (redesign) and layout skeleton (structure) — each shipped as an independent, separately verifiable PR.
Decisions
D1. Redesign = swap token values, keep keys → automatic propagation to every page (#532)
Fully redesign in the "Signal Grid" design language, but keep the design-token keys and only swap their values. Preserving the key contract of the SSOT (blog/src/app/globals.css CSS variables + blog/tailwind.config.ts mapping) lets the 60 components that inherit them pick up the new colors/spacing/typography with no code changes. Delivered in 3 waves — foundation (token redefinition + global shell) → precise component application (29 files) → data-visuals.
D2. Chart colors = de-hardcode → promote to 21 --chart-* tokens (#532 Wave 3)
Remove hardcoded colors from charts/data-visuals and promote them to 21 CSS variables in the --chart-series-* (series colors) and --chart-state-* (state colors) families. Unifying the color SSOT into the token layer makes charts respond to light/dark and theme switches too (preventing hardcoded-color regressions).
D3. Layout = tech-blog 3-zone shell, color/token SSOT unchanged (#533)
Replace the layout skeleton with a tech-blog shape while keeping the color/token SSOT (globals.css/tailwind.config) unchanged and re-architecting only structure. Reference integration — a 3-zone shell of left persistent sidebar + center content + right sticky TOC (Stripe/Vercel docs), and a wide reading column with spacing rhythm (Josh Comeau). Sidebar is fixed on desktop, a drawer fallback on mobile.
D4. Home = portfolio vertical stack → text index (#533 Wave L2)
Switch Home from a portfolio-style vertical card stack to a text index (compact hero + date/title text post list + ADR entry point), per the Overreacted reference. Sharpen the hero with a point-of-view title and a trust metaline (last updated + ADR count), and tone service CTAs down to text links.
Implementation
- #532
c5ac77d9— full UI/UX redesign (Signal Grid):- Wave 1 foundation
c37cc400— full token redefinition (value swap, keys kept) + global shell (header/footer/home-hero) - Wave 2 components
1aa6f45e— precise application across 29 files (home/about·adr·post/blog), SSOT unchanged - Wave 3 data-visuals
d32cceaf— remove hardcoded chart colors → 21 new--chart-series-*/--chart-state-*tokens
- Wave 1 foundation
- #533
596adeb2— full layout overhaul (tech-blog skeleton):- Wave L1
e72fcce2— left persistent sidebar 3-zone shell (fixed on desktop / drawer on mobile) - feedback
e8aa6145— remove the home StartHere ("start here if you're new") section + clean up the chained dead code (component, data, i18n, the dead#start-hereCTA) - Wave L2
21cb56cc— home portfolio stack → text index - hero sharpening
321fa778— POV title, trust metaline, toned-down CTAs - Wave L3
4200bde1— post detail: center reading column + right sticky TOC (auto H2/H3, scroll highlight), home/About widths unchanged - Critic P2 fix
4b425b51— add the ADR topics/permanent index pages the sidebar links to (404 resolved)
- Wave L1
Scale (physical facts): blog/ 54 files changed, +868/-332 (e708ff47..596adeb2).
Verification (physical facts): next build EXIT 0 — #532 471/471 pages across 3 per-wave runs, #533 470 HTML generated cleanly. WCAG AA contrast 4.5:1+ preserved. Token keys kept → 60 components' CSS-variable inheritance intact. Color/token SSOT diff confirmed unchanged (#533). Critic re-review CLEAN (P2 gone). Both PRs squash-merged into origin/main (c5ac77d9·596adeb2).
Incidents
- Critic P2 — sidebar nav 404: the new left sidebar linked to the ADR
topics/permanentindexes, but those index pages didn't exist, so clicks 404'd. The Critic caught it → resolved by adding the index pages in4b425b51(a failure mode of not verifying, on the render path, that a nav link's target actually exists). Re-review CLEAN. - StartHere chained dead code: removing the home StartHere section nearly left its linked component, data, i18n strings, and the dead
#start-hereCTA anchor behind; all cleaned up together ine8aa6145(clean the whole reference chain when removing a feature). - Proactive TOC anchor consistency (B2 failure-mode scan): if the sticky TOC's slugs diverge from the heading anchors
rehype-sluggenerates, the TOC links break — verified slug ↔ rehype-slug agreement before build and fixed it proactively.