projects

Globber

2025.08 ~ 현재프론트엔드 개발

3D 지구본 기반 여행 시각화 웹 애플리케이션.

  • Next.js 15
  • React 19
  • TypeScript
  • Globe.gl
  • TanStack Query
  • Zustand
  • Three.js
visit project(opens in a new tab)

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 만족도 향상, 크로스 플랫폼 대응 시 실제 기기 테스트 필수.