Globber
2025.08 ~ 현재프론트엔드 개발
3D 지구본 기반 여행 시각화 웹 애플리케이션.
- Next.js 15
- React 19
- TypeScript
- Globe.gl
- TanStack Query
- Zustand
- Three.js
3D 지구본 시각화 시스템 - 이중 클러스터링 알고리즘 구현
.problem
수백 개의 여행 마커를 3D 지구본에 효과적으로 표시해야 했으나, 성능 저하 및 사용자 경험 문제 발생. 많은 마커로 인한 화면 혼잡도 증가, 클러스터 클릭 시 부정확한 위치로 이동, 대륙/국가 단위 탐색의 어려움.
.solution
이중 클러스터링 알고리즘 구현으로 대륙 → 국가 계층 구조의 클러스터링 시스템 개발. 정밀한 앵커링 시스템으로 클러스터 클릭 시 정확한 위치로 카메라 이동 기능 구현.
.tradeoff
- advantages
- 직관적인 계층 탐색, 성능 최적화
- disadvantages
- 복잡한 상태 관리 필요, 초기 개발 비용 증가
- rationale
- 사용자 테스트 결과, 계층적 탐색이 더 직관적이라는 피드백 수집. 대안인 단일 레벨 클러스터링은 더 간단하지만 UX 저하.
.result
클러스터 클릭 시 자동으로 앵커링되는 기능을 구현하여 사용자 탐색 경험 개선. 대륙 → 국가 단위로 자연스러운 탐색 가능.
.learning
복잡한 3D 시각화에서는 계층적 데이터 구조와 상태 관리가 핵심. 대규모 데이터 시각화 시 클러스터링을 통한 성능 최적화, 사용자 인터랙션의 정확성이 UX에 직접적 영향, Custom Hook을 통한 복잡한 로직의 재사용성 확보.
이모지 인터랙션 시스템 - 모바일 키보드 대응 및 디바운싱 최적화
.problem
여행 기록에 실시간으로 이모지를 등록하고 반응할 수 있는 인터랙티브 시스템 필요. 키보드와 이모지 picker UI 겹침, 이모지 중복 등록 시 사용자 피드백 부재, 화면 밖 이모지 위치 처리 미흡.
.solution
동적 UI 포지셔닝으로 키보드 높이 감지 및 picker 위치 자동 조정 (Viewport API 활용). 디바운싱 최적화로 이모지 카운팅 API 호출 최적화하여 서버 부하 감소. 토스트 피드백으로 중복 등록 시도 시 명확한 사용자 안내 제공. React Portal, Debouncing, Dynamic Positioning 활용.
.tradeoff
- advantages
- 모든 기기에서 일관된 UX, 키보드 대응 자동화
- disadvantages
- Viewport API 의존성, 복잡한 상태 관리
- rationale
- Mobile-first 디자인 원칙. 대안인 Fixed Positioning은 간단하지만 키보드 대응 불가.
.result
키보드 겹침 이슈 해결. 디바운싱으로 API 호출 빈도 감소. 사용자 피드백으로 중복 등록 시도 시 명확한 안내 제공.
.learning
모바일 환경의 키보드 처리는 Viewport API를 활용한 동적 대응이 필수. 사용자 입력 빈도가 높은 기능은 디바운싱으로 성능 최적화, 에러 상황에서 명확한 피드백 제공이 UX 만족도 향상, 크로스 플랫폼 대응 시 실제 기기 테스트 필수.