# WING-GIS - 해양경찰청 통합 GIS 위치정보시스템 모노레포 구조: React 19 TypeScript 프론트엔드 + Spring Boot 3.3 Java 21 백엔드 (MSA) 해양 GIS 시스템으로 선박 물표 추적(AIS/V-Pass/VTS 등 7개 소스), S-100 전자해도, 공간분석 기능 제공. 상세 아키텍처: [ARCHITECTURE.md](ARCHITECTURE.md) 참조 ## 기술 스택 ### Frontend - React 19 + TypeScript 5.9 + Vite 8 - MapLibre GL JS 5.18 + deck.gl 9.2 (해양 지도 렌더링) - Zustand 5 (상태 관리), Ant Design 6 (UI), STOMP.js (WebSocket) - ENC: Martin 타일 서버 연동, S-52 day/dusk/night 테마 ### Backend - Spring Boot 3.3.6 + Java 21 + Gradle 9.3.1 - PostgreSQL 16/PostGIS 3.4, Hibernate Spatial - Redis (캐시), Kafka (선박 스트리밍), Keycloak (SSO) - MapStruct (DTO 매핑), SpringDoc OpenAPI 2.3 (API 문서) ### Infrastructure - Docker Compose (PostgreSQL, Redis, Kafka, MinIO, pg_tileserv, Keycloak) - npm 레지스트리: https://nexus.gc-si.dev/repository/npm-public/ ## 빌드 명령어 ### Frontend ```bash cd frontend/wing-gis-web npm install npm run build ``` ### Backend (wing-gis-map 서비스) ```bash cd services/wing-gis-map ./gradlew build ``` ## 개발 서버 ```bash cd frontend/wing-gis-web npm run dev # http://localhost:5174 ``` ## 테스트 ```bash # Frontend (테스트 러너 미설정) # Backend cd services/wing-gis-map && ./gradlew test ``` ## Lint ```bash # Frontend (ESLint 9, flat config) cd frontend/wing-gis-web && npm run lint # Prettier: 미설정 # Backend: checkstyle/spotless 미설정 ``` ## 디렉토리 구조 ``` wing-gis/ ├── frontend/wing-gis-web/ # React SPA │ └── src/ │ ├── components/ # layout, map, vessel UI │ ├── features/ # vesselLayer, nauticalChart │ ├── hooks/ # useStore, useMap, useDeckLayers, useVesselStream │ ├── lib/map/ # mapCore, MaplibreDeckCustomLayer │ ├── services/ # api.ts, vesselApi.ts │ ├── types/ # ais.ts, vessel.ts, layer.ts │ └── utils/ # coordinate, s52Colors, vesselIcon ├── services/ # Spring Boot MSA (10개) │ ├── wing-gis-map/ # GIS API (구현 완료) │ ├── wing-gis-vessel/ # 선박/신호 (stub) │ ├── wing-gis-gateway/ # API Gateway (stub) │ ├── wing-gis-auth/ # 인증 (stub) │ ├── wing-gis-layer/ # 레이어 관리 (stub) │ ├── wing-gis-analysis/ # 분석 (stub) │ ├── wing-gis-integration/ # 연계 (stub) │ ├── wing-gis-admin/ # 관리 (stub) │ └── wing-gis-mcp/ # MCP Agent (stub) ├── infra/ # Docker Compose, K8s, SQL ├── docs/ # 문서 └── .claude/ # Claude Code 설정 ``` ## 팀 컨벤션 - `.claude/rules/` 팀 코딩 표준 참조 (`/sync-team-workflow`로 다운로드) - 커밋 메시지: Conventional Commits (한국어), `.githooks/commit-msg`로 검증 - 커밋 전 lint 검증 필수