|
15 | 15 | | Language | TypeScript | 5.9.x | |
16 | 16 | | Lint | ESLint 9 (flat config) + Prettier | | |
17 | 17 | | Module | ESM (`"type": "module"`) | | |
| 18 | +| Router | React Router | 7.x (도입) | |
| 19 | +| Server State | TanStack Query | 5.x (도입) | |
| 20 | +| Styling | Tailwind CSS v4 (`@theme` 토큰) | 4.x (도입) | |
| 21 | +| API 타입 | openapi-typescript → `shared/api/generated.ts` | (도입, §7.1) | |
| 22 | +| 테스트 | Vitest + Testing Library (jsdom) | (도입) | |
18 | 23 |
|
19 | | -### 미정 (Phase 1 도입 시점에 결정) |
20 | | -- Router: 후보 — React Router v7 / TanStack Router |
21 | | -- Server State: TanStack Query |
22 | | -- Form: React Hook Form + Zod |
23 | | -- Styling: CSS Variables 기반 + Tailwind 또는 vanilla-extract |
24 | | -- 테스트: Vitest + Testing Library + Playwright(E2E) |
| 24 | +### 미정 (도입 시점에 결정) |
| 25 | +- Form: React Hook Form + Zod (현재 controlled `useState` 검증으로 충분 — 폼 복잡도 증가 시 도입) |
| 26 | +- E2E: Playwright |
25 | 27 |
|
26 | 28 | > 신규 의존성 추가 시 [`/docs/coding-conventions.md §6`](../docs/coding-conventions.md) 절차를 따르고 본 표를 갱신. |
27 | 29 |
|
@@ -274,8 +276,9 @@ npm run lint # ESLint |
274 | 276 |
|
275 | 277 | --- |
276 | 278 |
|
277 | | -## 16. 현재 상태 메모 (2026-04 기준) |
| 279 | +## 16. 현재 상태 메모 (2026-06 기준) |
278 | 280 |
|
279 | | -- `App.tsx`는 Vite 기본 데모 상태 → 첫 페이지(Login) 구현 시 교체 예정 |
280 | | -- 라이브러리 결정 전 (라우터, server state, styling) → 첫 PR 시 의사결정 + 본 문서 §1 갱신 |
281 | | -- 디자인 시스템 토큰 파일 미생성 → 디자인 시스템 첫 적용 PR에서 `app/styles/tokens.css` 생성 |
| 281 | +- 라이브러리 결정 완료: React Router v7, TanStack Query v5, Tailwind v4, Vitest+Testing Library (§1). |
| 282 | +- 디자인 토큰 `app/styles/tokens.css` 생성됨. `shared/ui` 프리미티브: StatusBadge, Button, Spinner, TextArea, RadioCardGroup, Stepper. |
| 283 | +- **텍스트 면접 세션 구현됨**: `/sessions/new`(생성 설정), `/sessions/:id`(라이브 진행). `features/interview` + `domain/session`. 라이브는 WS(`useInterviewSocket`) 알림 + `GET messages` 쿼리 본문 소유 + 낙관적 답변 (`useLiveInterview`). TTS 재생·음성 답변(RT3)은 범위 밖. |
| 284 | +- **OpenAPI 타입 파이프라인**: 백엔드가 `OpenApiSpecExportTest`로 `backend/openapi.json` 산출·커밋 → 프론트 `npm run openapi`(= `openapi-typescript ../backend/openapi.json …`)로 `shared/api/generated.ts` 생성. 프론트는 백엔드 런타임에 무의존. 계약 변경 시 백엔드 테스트 재실행으로 갱신. |
0 commit comments