실시간 협업과 AI 통합을 갖춘 셀프호스팅 여행 플랫폼
TREK은 셀프호스팅 가능한 실시간 협업 여행 플래너로 지도, 예산관리, 패킹리스트, PWA와 OAuth 기반 AI 통합 기능을 제공한다.
TL;DR
TREK은 자체 호스팅 가능한 실시간 협업 여행 플래너로서 지도 기반의 일정 구성, 예산 분할, 예약·문서 관리, 패킹리스트와 여행 저널을 한곳에 결합한 애플리케이션이다. 백엔드는 NestJS, 프론트엔드는 React로 구성되어 Docker·Helm 배포가 가능하며 WebSocket을 통해 동기화가 이루어지고 PWA와 오프라인 캐시를 통해 모바일 환경에서도 작동한다. MCP 서버를 통해 OAuth 2.1 기반으로 외부 AI 어시스턴트에 기능을 안전하게 노출할 수 있고 사전정의된 프롬프트로 자동화된 트립 생성과 예산 요약 같은 워크플로를 지원한다. 운영 관점에서는 TLS 종료를 위한 리버스 프록시와 WebSocket 업그레이드 지원이 필수이며 데이터는 로컬 볼륨에 보관되어 업데이트 시에도 보존된다.
주요 기능
- 드래그 앤 드롭 방식으로 여행 일정을 구성하고 일자 간 이동과 재정렬을 지원하며 장소별 타임스탬프와 노트를 관리할 수 있다. 지도는 Leaflet 또는 Mapbox GL을 사용해 3D 건물과 클러스터, 경로 시각화를 제공하며 GPX/KML/KMZ/GeoJSON 임포트를 허용한다. 검색은 Google Places 또는 OpenStreetMap을 선택해 사진과 평점, 운영시간 정보를 불러올 수 있다.
- 비용과 정산 기능을 통해 여행별 지출을 다중 통화로 기록하고 사용자별 분할과 일자별 내역을 생성하며 정산 내역을 추적할 수 있다. 예약 항목은 파일 첨부와 확인 번호를 포함하고 이메일/문서에서 자동으로 임포트할 수 있도록 설계되어 있다. PDF로 전체 여행 플랜을 커버 이미지와 메모 포함 형태로 출력할 수 있다.
- 실시간 동기화는 WebSocket을 사용해 다수 사용자가 동시에 편집할 때 변경 사항이 즉시 반영되며 역할 기반 접근 제어와 초대 링크 만료 설정을 제공한다. SSO는 OIDC 공급자와 통합되고 WebAuthn 기반 Passkeys와 TOTP 2FA가 지원되어 인증 수단을 다층으로 구성할 수 있다. 관리자 패널에서 애드온과 언어, 백업 정책을 세부 조정할 수 있다.
- PWA로 동작해 브라우저에서 앱처럼 설치되며 오프라인 사용을 위해 Service Worker와 Workbox로 API와 타일을 캐시한다. 모바일 레이아웃은 터치 최적화와 안전 영역 처리를 포함해 네이티브와 유사한 전체화면 실행을 제공한다. 백엔드는 NestJS, 프론트엔드는 React와 Vite, 상태 관리는 Zustand로 구성되어 개발 및 배포 경험이 일관되게 설계되었다.
어떻게 동작하는가
TREK은 NestJS 기반 백엔드와 React 기반 프론트엔드를 분리한 전형적인 웹 애플리케이션 구조를 사용한다. 실시간 협업은 WebSocket을 통해 클라이언트와 서버 간 상태를 동기화하며 지도 렌더링은 Leaflet 또는 Mapbox GL로 수행된다. MCP 서버는 OAuth 2.1 인증으로 외부 AI 어시스턴트에 애플리케이션 기능을 노출해 사전정의된 프롬프트와 권한 범위를 통해 트립 생성·예산·패킹리스트 호출을 허용한다.
해결 문제
TREK은 여러 사용자가 동시에 협업하는 여행 계획 과정에서 일정 중복, 버전 충돌, 여행 자원 분산 관리를 해결해준다. 지도 기반 장소 관리와 자동 경로 최적화, 예산 분할 및 예약 자료 첨부 같은 도구를 통합해 여행 준비의 여러 단계를 하나의 시스템으로 통합한다. 또한 자체 호스팅과 PWA 지원, OAuth 기반 AI 통합으로 프라이버시와 자동화 요구를 동시에 충족시킨다.
차별점
- 자체 호스팅 아키텍처를 기본으로 제공해 데이터 소유권과 프라이버시를 유지하면서도 Docker·Helm으로 간편한 배포가 가능하다. 데이터는 로컬 볼륨에 보관되며 업데이트 시에도 데이터 볼륨을 유지하는 업그레이드 절차를 명확히 규정하고 있다. AGPL_v3 라이선스로 오픈소스 커뮤니티에서 수정·확장이 가능하다.
- MCP 서버와의 통합으로 OAuth 2.1 권한 위임을 통해 외부 AI 어시스턴트가 트립 생성과 예산 정리 같은 애플리케이션 기능을 안전하게 호출할 수 있다. 사전정의된 프롬프트와 27개 권한 스코프가 제공돼 세분화된 권한 관리가 가능하다. 이 구조는 단순한 API 노출보다 세밀한 권한 통제와 감사 가능성을 제공한다.
- PWA와 오프라인 캐시 전략을 통해 네트워크가 불안정한 환경에서도 기본적인 뷰와 데이터 접근을 유지할 수 있다. Service Worker와 Workbox로 타일과 API 응답을 캐시하며 파일 업로드·복원 시 제한 크기와 타임아웃 정책을 정의해 안정성을 확보한다. 모바일 최적화와 설치형 앱 동작은 데스크톱과 모바일 사용자 경험을 일관되게 만든다.
사용 사례
- 친구·가족과 공동으로 여행 일정을 구성하면서 실시간으로 일정 변경과 비용 분담을 관리할 때 유용하다. 공동 편집 중 발생하는 충돌을 WebSocket 기반 동기화로 완화하고 초대 링크와 역할 기반 접근 제어로 협업 범위를 제한할 수 있다. 예약 정보와 문서를 트립 단위로 첨부해 출발 전 한 곳에서 확인할 수 있다.
- 프라이버시 우선의 조직이나 소규모 여행사에서 자체 호스팅 인프라 내에서 사용자 데이터를 관리하면서 팀 간 일정과 예산을 공유할 때 적합하다. Docker Compose 또는 Helm으로 배포해 사내 인프라에 통합할 수 있으며 OIDC 연동으로 기존 SSO 환경과 연결이 가능하다. 자동 백업과 관리자 패널로 운영 관리 부담을 줄일 수 있다.
- AI 어시스턴트를 통해 반복적인 계획 업무를 자동화하려는 환경에서 MCP를 사용해 권한 범위를 제어하며 트립 요약 및 패킹리스트 생성을 자동화할 수 있다. 사전정의된 프롬프트로 일관된 출력 양식을 유지하고 MCP 세션 관리를 통해 외부 어시스턴트의 작업을 추적할 수 있다. 이 흐름은 여행 준비 시간 단축과 표준화된 결과 산출에 기여한다.
시작하기
가장 빠른 시작 방법은 제공된 Docker 이미지로 컨테이너를 실행하는 것으로, 예시로 ENCRYPTION_KEY를 생성한 뒤 docker run 명령으로 포트 3000을 노출하고 ./data와 ./uploads를 볼륨으로 마운트하면 된다. Kubernetes 환경에서는 Helm 차트를 추가한 뒤 helm install 명령으로 배포할 수 있으며 차트 값 파일로 도메인과 OIDC 설정을 제공해야 한다. 첫 부팅 시 관리자 계정이 시드되며 ADMIN_EMAIL/ADMIN_PASSWORD 환경변수를 통해 초기 관리자를 미리 설정할 수 있다.
요구사항
- Docker 또는 Kubernetes 환경이 필요하며 프로덕션에서는 TLS 종료를 지원하는 역방향 프록시가 권장된다.
- Node.js와 TypeScript 개발 환경은 소스 빌드를 원하는 경우 필요하며 배포판은 공식 문서의 권장 버전을 따라야 한다.
- 지도 기능을 위해 Mapbox 사용 시 API 키가 필요하며 OpenStreetMap을 선택하면 별도의 키 없이 작동한다.
이미지 분석



2
Stars
0
Forks
+206
Trending
13
조회수
관련 토론
아직 관련 토론이 없습니다.
댓글
댓글을 작성하려면 로그인이 필요합니다.