블로그 페이지 UI/UX 개편 (Signal Grid 리디자인 + 테크블로그 레이아웃)
요약레포 루트 독립 Next.js 앱 `blog/`를 두 갈래로 전면 개편. #532 `c5ac77d9`: 'Signal Grid' 디자인 언어로 전면 UI/UX 리디자인 — 디자인 토큰을 값만 교체·키 유지로 재정의해 60개 컴포넌트에 자동 전파, 차트 색상 하드코딩을 `--chart-series-*`/`--chart-state-*` 21개 CSS 변수로 승격, WCAG AA 대비비 4.5:1+ 유지, `next build` 471/471 페이지. #533 `596adeb2`: 색·토큰 SSOT(`globals.css`/`tailwind.config`) 무변경으로 레이아웃 골격만 테크블로그형으로 재설계 — 좌측 persistent 사이드바+중앙 읽기 컬럼+우측 sticky TOC 3존 셸(Stripe/Vercel docs), 홈을 포트폴리오 세로 스택에서 텍스트 인덱스형으로(Overreacted), 넓은 읽기 컬럼(Josh Comeau). Critic이 사이드바 네비가 링크하는 ADR topics/permanent 인덱스 페이지 부재로 인한 404(P2)를 포착 → `4b425b51`로 인덱스 페이지 추가해 해소. 합계 54개 파일 +868/-332. 이월 없음.
날짜: 2026-08-14
목표
레포 루트의 독립 Next.js 앱 blog/(기술 블로그 + ADR 아카이브 공개 사이트)를 전면 개편한다. 대상 페이지는 홈(ko/en)·About·Posts(MDX)·ADR 섹션(landing/sprints/topics/permanent/archive)이다. 개편을 색·토큰(리디자인) 과 레이아웃 골격(구조) 두 갈래로 분리해, 각각을 독립 PR로 검증 가능하게 진행한다.
결정 사항
D1. 리디자인 = 토큰 값만 교체·키 유지로 전 페이지 자동 전파 (#532)
"Signal Grid" 디자인 언어로 전면 리디자인하되, 디자인 토큰의 키는 유지하고 값만 교체한다. SSOT(blog/src/app/globals.css CSS 변수 + blog/tailwind.config.ts 매핑)의 키 계약을 보존하면 이를 상속하는 60개 컴포넌트가 코드 수정 없이 새 색·간격·타이포를 자동 상속한다. 3 Wave로 진행 — 파운데이션(토큰 재정의 + 글로벌 셸) → 컴포넌트 정밀 적용(29파일) → 데이터-비주얼.
D2. 차트 색상 = 하드코딩 제거 → --chart-* 21토큰 승격 (#532 Wave 3)
차트/데이터 비주얼의 하드코딩 색상을 제거하고 --chart-series-*(계열 색)·--chart-state-*(상태 색) 계열 21개 CSS 변수로 승격한다. 색상 SSOT를 토큰 계층으로 일원화해 라이트/다크·테마 전환 시 차트도 함께 반응하게 한다(하드코딩 이탈 재발 차단).
D3. 레이아웃 = 테크블로그 3존 셸, 색·토큰 SSOT 무변경 (#533)
레이아웃 골격을 테크블로그형으로 교체하되 색·토큰 SSOT(globals.css/tailwind.config)는 무변경으로 두고 구조만 재설계한다. 레퍼런스 통합 — 좌측 persistent 사이드바 + 중앙 콘텐츠 + 우측 sticky TOC 3존 셸(Stripe/Vercel docs), 넓은 읽기 컬럼·여백 리듬(Josh Comeau). 데스크톱은 사이드바 고정, 모바일은 드로어 폴백.
D4. 홈 = 포트폴리오 세로 스택 → 텍스트 인덱스형 (#533 Wave L2)
홈을 포트폴리오형 세로 카드 스택에서 텍스트 인덱스형(컴팩트 히어로 + 날짜·제목 텍스트 글 리스트 + ADR 진입)으로 전환한다(Overreacted 레퍼런스). 히어로는 관점형 제목·신뢰 메타라인(최근 업데이트 + ADR 수)으로 샤프닝하고, 서비스 CTA는 텍스트 링크로 톤다운한다.
구현
- #532
c5ac77d9— 전면 UI/UX 리디자인 (Signal Grid):- Wave 1 파운데이션
c37cc400— 디자인 토큰 전면 재정의(값 교체·키 유지) + 글로벌 셸(header/footer/home-hero) - Wave 2 컴포넌트
1aa6f45e— 29개 파일 정밀 적용(home/about·adr·post/blog), SSOT 무변경 - Wave 3 데이터-비주얼
d32cceaf— 차트 색상 하드코딩 제거 →--chart-series-*/--chart-state-*21토큰 신설
- Wave 1 파운데이션
- #533
596adeb2— 레이아웃 전면 개편 (테크블로그 골격):- Wave L1
e72fcce2— 좌측 persistent 사이드바 3존 셸(데스크톱 고정 / 모바일 드로어) - 피드백
e8aa6145— 홈 StartHere("처음 오셨다면 이 글부터") 섹션 제거 + 연쇄 dead code(컴포넌트·데이터·i18n·죽은#start-hereCTA) 정리 - Wave L2
21cb56cc— 홈 포트폴리오 스택 → 텍스트 인덱스형 - 히어로 샤프닝
321fa778— 관점형 제목·신뢰 메타라인·CTA 톤다운 - Wave L3
4200bde1— 글 상세: 중앙 읽기 컬럼 + 우측 sticky TOC(H2/H3 자동, 스크롤 하이라이트), 홈·About 폭 불변 - Critic P2 픽스
4b425b51— 사이드바가 링크하는 ADR topics/permanent 인덱스 페이지 추가(404 해소)
- Wave L1
규모(물리적 사실): blog/ 54개 파일 변경, +868/-332 (e708ff47..596adeb2).
검증(물리적 사실): next build EXIT 0 — #532 Wave별 3회 471/471 페이지, #533 470 HTML 정상 생성. WCAG AA 대비비 4.5:1+ 유지. 토큰 키 유지 → 60개 컴포넌트 CSS 변수 상속 무손상. 색·토큰 SSOT diff 무변경 확인(#533). Critic 재리뷰 CLEAN(P2 소멸). 두 PR 모두 squash 머지 origin/main 반영(c5ac77d9·596adeb2).
인시던트
- Critic P2 — 사이드바 네비 404: 신규 좌측 사이드바가 ADR
topics/permanent인덱스로 링크하나 해당 인덱스 페이지가 부재해 클릭 시 404. Critic이 포착 →4b425b51로 인덱스 페이지를 추가해 해소(네비 링크 대상의 실재를 렌더 경로에서 실측하지 않은 실패모드). 재리뷰 CLEAN. - StartHere 연쇄 dead code: 홈 StartHere 섹션 제거 시 연결된 컴포넌트·데이터·i18n 문자열·죽은
#start-hereCTA 앵커가 함께 남을 뻔했으나e8aa6145에서 일괄 정리(기능 제거 시 참조 사슬 전체 청소). - TOC 앵커 정합 선제 수정(B2 실패모드 스캔): sticky TOC의 slug가
rehype-slug가 생성하는 heading 앵커와 어긋나면 TOC 링크가 깨진다 — 빌드 전 slug ↔ rehype-slug 일치를 검증해 선제 수정.