From fe5ec7100ba6c723d81ae1df84e961aeaa8cf281 Mon Sep 17 00:00:00 2001 From: htlee Date: Mon, 16 Feb 2026 16:24:52 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20CLAUDE.md=20=EC=B5=9C=EC=8B=A0=20?= =?UTF-8?q?=EA=B5=AC=EC=A1=B0=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 --- CLAUDE.md | 54 +++++++++++++++++++++--------------------------------- 1 file changed, 21 insertions(+), 33 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 164c874..52e1587 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -2,34 +2,22 @@ ## 프로젝트 개요 -- **타입**: React + TypeScript + Vite (모노레포) +- **타입**: React 19 + TypeScript 5.9 + Vite 7 (모노레포) - **Node.js**: `.node-version` 참조 (v24) - **패키지 매니저**: npm (workspaces) -- **구조**: apps/web (프론트엔드) + apps/api (백엔드 API) +- **구조**: apps/web (프론트엔드) + apps/api (백엔드 API 프록시) ## 빌드 및 실행 ```bash -# 의존성 설치 -npm install - -# 전체 개발 서버 -npm run dev - -# 개별 개발 서버 -npm run dev:web # 프론트엔드 (Vite) -npm run dev:api # 백엔드 (Fastify + tsx watch) - -# 빌드 -npm run build # 전체 빌드 (web + api) -npm run build:web # 프론트엔드만 -npm run build:api # 백엔드만 - -# 린트 -npm run lint # apps/web ESLint - -# 데이터 준비 -npm run prepare:data +npm install # 의존성 설치 +npm run dev # 전체 개발 서버 +npm run dev:web # 프론트엔드 (Vite) +npm run dev:api # 백엔드 (Fastify + tsx watch) +npm run build # 전체 빌드 (web + api) +npm run build:web # 프론트엔드만 +npm run lint # apps/web ESLint +npm run prepare:data # 정적 데이터 준비 ``` ## 프로젝트 구조 @@ -37,19 +25,18 @@ npm run prepare:data ``` gc-wing-dev/ ├── apps/ -│ ├── web/ # React 19 + Vite 7 + MapLibre + Deck.gl +│ ├── web/ # @wing/web - React 19 + Vite 7 │ │ └── src/ -│ │ ├── app/ # App.tsx, styles -│ │ ├── entities/ # 도메인 모델 (vessel, zone, aisTarget, legacyVessel) -│ │ ├── features/ # 기능 단위 (mapToggles, typeFilter, aisPolling 등) -│ │ ├── pages/ # 페이지 (DashboardPage) -│ │ ├── shared/ # 공통 유틸 (lib/geo, lib/color, lib/map) -│ │ └── widgets/ # UI 위젯 (map3d, vesselList, info, alarms 등) -│ └── api/ # Fastify 5 + TypeScript -│ └── src/ -│ └── index.ts +│ │ ├── app/ # App.tsx, styles.css +│ │ ├── entities/ # 도메인 모델 (aisTarget, vessel, zone, legacyVessel, subcable) +│ │ ├── features/ # 기능 모듈 (aisPolling, legacyDashboard, map3dSettings, mapSettings, mapToggles, typeFilter) +│ │ ├── pages/ # dashboard, login, denied, pending +│ │ ├── shared/ # auth (Google OAuth), lib (geo, color, map), hooks (usePersistedState) +│ │ └── widgets/ # map3d, vesselList, info, alarms, relations, aisInfo, aisTargetList, topbar, speed, legend, subcableInfo +│ └── api/ # @wing/api - Fastify 5 +│ └── src/index.ts # AIS 프록시 + zones 엔드포인트 ├── data/ # 정적 데이터 -├── scripts/ # 빌드 스크립트 (prepare-zones, prepare-legacy) +├── scripts/ # prepare-zones.mjs, prepare-legacy.mjs └── legacy/ # 레거시 데이터 ``` @@ -59,6 +46,7 @@ gc-wing-dev/ |------|------| | 프론트엔드 | React 19, Vite 7, TypeScript 5.9 | | 지도 | MapLibre GL JS 5, Deck.gl 9 | +| 인증 | Google OAuth (AuthProvider + ProtectedRoute) | | 백엔드 | Fastify 5, TypeScript | | 린트 | ESLint 9, Prettier |