diff --git a/CLAUDE.md b/CLAUDE.md index e97c9972..b82b2c52 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -5,14 +5,14 @@ 민간용 데모 버전으로, OSM + OpenSeaMap 기반 지도와 AIS API 폴링 방식의 선박 데이터를 사용. ## 기술 스택 -- **언어**: TypeScript (strict 모드, JS→TS 전환 완료) -- **프레임워크**: React 18 + Vite 5 +- **언어**: TypeScript (strict 모드) +- **프레임워크**: React 19 + Vite 7 - **지도 엔진**: OpenLayers 9 + Deck.gl 9 (MapLibre 전환 예정) -- **상태관리**: Zustand 4 +- **상태관리**: Zustand 5 - **HTTP**: Axios - **스타일**: SASS -- **라우팅**: React Router DOM 6 -- **Lint**: ESLint 8 + @typescript-eslint +- **라우팅**: React Router DOM 6 (v7 future flag 적용) +- **Lint**: ESLint 9 flat config + typescript-eslint 8 ## 빌드 / 실행 ```bash @@ -54,15 +54,15 @@ src/ └── workers/ # Web Worker (signalWorker) ``` -## TypeScript 설정 +## TypeScript / Lint 설정 - `tsconfig.json`: composite 프로젝트 (tsconfig.app.json + tsconfig.node.json) -- `.eslintrc.cjs`: @typescript-eslint/recommended, react-hooks, react-refresh -- pre-commit hook: `npx eslint src/ --ext .ts,.tsx --quiet` +- `eslint.config.js`: ESLint 9 flat config (typescript-eslint 8, react-hooks 7) +- pre-commit hook: `npx eslint src/ --quiet` - 타입 체크: `npx tsc -b --noEmit` ## Git 저장소 - **Remote**: https://gitea.gc-si.dev/gc/ship-gis.git -- **브랜치**: main (보호), develop (작업 브랜치), chore/typescript-migration (TS 전환) +- **브랜치**: main (보호), develop (작업 브랜치), chore/react19-vite7 (Step 1) ## 팀 워크플로우 - 버전: v1.2.0 @@ -73,11 +73,10 @@ src/ 상세 계획: `/Users/lht/.claude/plans/glittery-zooming-feigenbaum.md` -### Step 1: React 19 + Vite 7 + ESLint 9 업그레이드 -- 브랜치: `chore/react19-vite7` (develop 기반) -- React 18→19, Vite 5→7, ESLint 8→9 flat config -- 미사용 패키지 제거 (@stomp/stompjs, sockjs-client, flatgeobuf) -- react-router-dom v6.x 유지 +### Step 1: React 19 + Vite 7 + ESLint 9 업그레이드 (완료) +- 브랜치: `chore/react19-vite7` (develop 병합 대기) +- React 19.2.4, Vite 7.3.1, ESLint 9.39.2, Zustand 5.0.11 +- sockjs-client, flatgeobuf 제거 (@stomp/stompjs는 리플레이 모듈 사용으로 유지) ### Step 2: OpenLayers → MapLibre GL JS 전환 - 브랜치: `refactor/maplibre-migration` (Step 1 병합 후)