데이터와 AI 기반 맞춤형 여행 코스 추천 & 협업 플래너 Git의 'Fork' 개념을 도입하여 타인의 여행 계획을 복사하여, 나만의 일정으로 재가공할 수 있는 스마트 여행 플랫폼
Trip Pick은 '빈 화면에서 시작하는 계획의 막막함'을 해결하기 위해 탄생했습니다. 누군가가 이미 검증한 훌륭한 여행 코스를 **'Fork(복사)'**하여 내 스타일대로 수정하거나, Generative AI에게 내 취향(동행, 스타일, 기간)을 말해주고 단 1분 만에 맞춤형 코스를 제안받을 수 있습니다.
- Plan Fork: 마음에 드는 타인의 일정을 그대로 가져와 내 여행으로 커스터마이징
- Collaboration: 친구를 초대하여 실시간으로 함께 일정을 편집
- Data-Driven: 단순히 인기순이 아닌, 실제 사용자들의 Fork/Like 데이터를 기반으로 한 신뢰도 높은 추천
- AI Itinerary: "친구랑 2박 3일 힐링 여행" 한 마디면 완성되는 나만의 코스
- Drag & Drop: 일정 블록을 드래그하여 손쉽게 순서 및 날짜 변경
- 실시간 지도 연동: 일정이 변경될 때마다 지도상의 마커와 동선이 실시간 업데이트 (Kakao Maps API)
- 동시 편집: WebSocket(STOMP)을 활용하여 여러 명의 사용자가 동시에 하나의 플랜 편집
- Smart Search: 지역, 태그, 예산 등 복합 조건 필터링
- Hot Picks: 주간/월간 인기 급상승(Fork+Like) 여행 계획 큐레이션
- Review & Share: 여행 후기 공유 및 다른 여행자들과의 소통
- 취향 분석: 여행지, 기간, 동행(친구, 연인, 가족 등), 여행 스타일(힐링, 맛집, 액티비티) 입력
- 자동 생성: GMS 기반 AI가 최적의 동선과 장소를 분석하여 1분 내외로 전체 일정 생성
- 즉시 편집: 생성된 코스는 플래너 에디터로 즉시 연동되어 자유롭게 수정 가능
- Framework: Spring Boot 3.2
- Language: Java 17
- Database: MySQL 8.0
- AI: Spring AI (OpenAI API Integration)
- Build Tool: Maven
- ORM: MyBatis
- API Doc: Swagger UI (SpringDoc)
- Framework: Vue.js 3 (Composition API)
- Language: TypeScript
- Build Tool: Vite
- State Management: Pinia
- Styling: Tailwind CSS
- Maps: Kakao Maps SDK
- VCS: Git, GitLab
- IDE: STS, VS Code
Trip Pick System은 Spring Boot와 Vue.js를 기반으로, 외부 AI(OpenAI) 및 공공데이터(TourAPI)와 유기적으로 연동됩니다.
사용자(User), 여행 계획(Plan), 상세 일정(Place), 그리고 커뮤니티(Review/Hot) 간의 유기적인 관계를 설계했습니다.
TripPick/
├── backend/
│ └── TripPick/ # Spring Boot Backend Project
│ ├── src/main/java/com/trippick/
│ │ ├── controller/ # API 엔드포인트
│ │ ├── service/ # 비즈니스 로직 (AI, Planner 등)
│ │ ├── mapper/ # MyBatis Mapper
│ │ └── ...
│ └── src/main/resources/
│ ├── mappers/ # SQL XML 파일
│ └── application.properties
├── frontend/
│ └── trip-pick-front/ # Vue.js Frontend Project
│ ├── src/
│ │ ├── api/ # Axios API 호출 모듈
│ │ ├── components/ # 재사용 컴포넌트 (Planner, Common 등)
│ │ ├── views/ # 페이지 뷰 (Router 연동)
│ │ └── stores/ # Pinia 상태 관리
├── database/ # DB 스키마 및 더미 데이터 스크립트
└── docs/ # 기획서, API 명세, 회의록 등- 기획안 (Idea Proposal)
- 요구사항 명세서 (SRS)
- API 명세서 (Session Ver.)
- API 요약표 (Session Ver.)
- API 명세서 (JWT Ver.)
- API 요약표 (JWT Ver.)
- 개발 컨벤션
- Git 브랜치 전략
- Java JDK 17 이상
- Node.js 18 (LTS) 이상
- MySQL 8.0
-
환경 변수 및 설정 파일 구성 (
application.properties)backend/TripPick/src/main/resources/application.properties파일에 아래 필수 정보를 입력해야 합니다.# ========================================= # Database Configuration # ========================================= spring.datasource.url=jdbc:mysql://localhost:3306/trip_pick?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8 spring.datasource.username={DB_ID} spring.datasource.password={DB_PASSWORD} # ========================================= # Tour API (공공데이터포털) # ========================================= # Decoding된 인증키 사용 권장 tour.api.key={TOUR_API_KEY} # ========================================= # Spring AI Configuration (GMS) # ========================================= spring.ai.openai.api-key={GMS_API_KEY} # GMS 지원 모델명 (예: gpt-5-nano, gpt-4o 등) spring.ai.openai.chat.options.model={MODEL_NAME} # ========================================= # SQL Data Initialization (Dummy Data) # ========================================= # 테스트용 더미 데이터 (User 300명, Plan 1000개) spring.sql.init.mode=always spring.sql.init.data-locations=classpath:db/data-users.sql,classpath:db/data-plans.sql
-
데이터 동기화 (Data Initialization)
- 프로젝트 최초 실행 시
DataInitializer가 작동하여 공공데이터(지역 코드, 지역 장소 정보)를 동기화합니다.
- 프로젝트 최초 실행 시
-
프로젝트 실행
cd backend/TripPick ./mvnw spring-boot:run
-
환경 변수 설정 (
.env)frontend/trip-pick-front폴더 내에.env파일을 생성하고 Kakao Map API 키를 입력합니다.VITE_KAKAO_MAP_API_KEY={YOUR_KAKAO_JS_KEY} -
패키지 설치
cd frontend/trip-pick-front pnpm install -
개발 서버 실행
pnpm dev
타인의 일정이 마음에 든다면? 'Fork' 버튼 하나로 내 보관함에 복사해 커스터마이징 하세요. https://drive.google.com/file/d/1Iqi8qiuTx0uUWOC_qIcoh6tAh0xBFwWG/view?usp=drive_link
일정 순서 변경도 드래그 앤 드롭으로 쉽고 직관적으로! 지도가 실시간으로 경로를 보여줍니다. https://drive.google.com/file/d/1i0yXAhApeyQ6LfGmH4l9NnXbNwVjcA7e/view?usp=drive_link)
#힐링 #맛집 등 태그로 검색하고, 지금 가장 핫한 여행 계획을 메인에서 확인하세요. https://drive.google.com/file/d/1hK8t1R3G-Fm62kFfdUafhzD1uJ2tCcg3/view?usp=drive_link
여행지, 기간, 스타일만 선택하면 AI가 맞춤형 코스를 1분 만에 제안합니다. https://drive.google.com/file/d/1_5JdXYMKxOwcEzIyVywdKT_iSz_1bkYw/view?usp=drive_link
- Position: Full Stack Developer (Platform & User Experience)
- Key Contributions:
- Auth & Security: Spring Security + JWT 기반 인증/인가 시스템, 이메일 본인 인증 및 비밀번호 찾기 등 사용자 생명주기 관리.
- Interaction & Real-time: WebSocket 기반 전역 실시간 알림(초대/좋아요) 및 여행 계획 동시 편집을 위한 실시간 동기화 구현.
- UI/UX Design: 웹 서비스 전체 테마(Premium Design) 리뉴얼, 애니메이션 요소 및 반응형(Responsive) 레이아웃 적용.
- Community & Admin: 여행 후기 게시판(CRUD, 댓글, 태그) 및 관리자 페이지(회원/게시글 관리) 기능 개발.
- Position: Full Stack Developer (Core Logic & Data Engineering)
- Key Contributions:
- Architecture: 프로젝트 초기 환경 구축(Vue.js/Spring Boot), DB 스키마 설계 및 Swagger/API 명세서 도입.
- Planner Logic: 여행 계획 에디터의 Full-Cycle 구현 (UI ↔ API ↔ DB 연동, Drag & Drop, Fork 기능).
- Data Integration: 한국관광공사 TourAPI 대용량 데이터 동기화 및 동적 검색(지역/타입별) 필터링 구현.
- Map & AI: KakaoMap 마커 클러스터링 시각화 및 생성형 AI 기반 여행 코스 자동 추천 서비스 개발.

