Vgolf
골프장 경기관제 — GPS 카트 추적 & 실시간 라운드 관리
Role: Frontend Developer (경기관제 태블릿·모바일)
Overview
골프장 실시간 라운드 관리 플랫폼의 경기관제 앱입니다. 태블릿/모바일 듀얼 디바이스(Vgolf App, v1.1.24, 26K+ LOC)로 GPS 기반 카트 추적, Proj4 좌표 변환, 지오펜싱 자동 홀 전환, 움직이는 카트 환경에서의 터치 UX 최적화 등 골프장 특수 환경에 최적화된 기술을 구현했습니다. 현재 운영 중인 프로덕션 서비스로, 실사용 환경에서의 안정성과 마감 품질에 특히 주력했습니다. 같은 플랫폼의 F&B 주문·사이니지 서브시스템은 별도 프로젝트(VGOLF F&B)로 정리했습니다.
이 프로젝트의 핵심
프로덕션 운영 서비스
실사용 환경에서의 안정성·마감 품질에 주력
GPS 카트 추적
500ms 주기 GPS 읽기, Proj4 좌표 변환(위경도→코스맵 픽셀), 지오펜싱 자동 홀 전환
움직이는 카트 환경 터치 UX
Ghost Click 방지, useTap(30px 흔들림 허용), 더블클릭 가드
태블릿 140+ / 모바일 45+ 컴포넌트
듀얼 디바이스 공통 모듈 분리
나머지 1개 더 보기접기
네트워크 탄력성
ConsecutiveErrorGuard, Recoil Persist, React Query 캐싱, Teams Webhook 텔레메트리
Screens










실제 운영 화면입니다. 내장객·캐디 이름은 알아볼 수 없게 처리했습니다.
자세히
경기관제 앱 — GPS & 실시간 시스템6
GPS 카트 추적
500ms 주기 디바이스 GPS, 3초 주기 서버 전송 (대역폭 최적화)
Proj4 좌표 변환
위경도 → 코스맵 이미지 픽셀 좌표 매핑, 고도 기반 그린 슬로프 계산
지오펜싱
홀 폴리곤 영역 진입/이탈 감지로 자동 홀 전환, 해저드/이벤트 존 TTS 경고
라운드 상태 머신: START → OUT RUN → TURN → IN RUN → END, 9홀 추가·코스 변경 동적 대응
SSE 기반 다채널 실시간 동기화
예약, F&B 주문, 장비, 메시지
Android WebView + PlugGolf 브릿지
네이티브 GPS, 카메라, 알림 통합
경기관제 앱 — UX & 안정성7
움직이는 카트 환경 터치 최적화
Ghost Click 방지(preventGhostClick), useTap 훅(스와이프 vs 탭 구분, 30px 임계값)
더블클릭 가드
스코어 저장 등 중요 액션 보호
듀얼 디바이스 아키텍처
태블릿 140+ / 모바일 45+ 컴포넌트, 공통 모듈 분리
92+ Recoil 아톰 + recoil-persist
앱 재시작 시 서버 왕복 없이 상태 복원
ConsecutiveErrorGuard
연속 에러 시 폴링 자동 일시정지/재개
Teams Webhook 텔레메트리
에러 실시간 모니터링
4개 언어 동적 로딩 (한/영/일/태국어)
i18next
프로덕션 운영 & 마감 품질4
현재 운영 중인 프로덕션 서비스
실사용 골프장에서 매일 사용
엣지 케이스 꼼꼼한 처리
에러 큐잉, Pub/Sub 에러 핸들링, 중복 동작 방지
Docker + Nginx Alpine 정적 배포, 빌드 ID 자동 생성 (YYMMDDHHMI)
usePullToRefresh, useDragScroll 등 모바일 UX 커스텀 훅