Loventure

Frontend

AI 기반 데이트 코스 추천 서비스

2025.09 ~ 2025.10Frontend Developer8인 팀

AI가 커플의 취향과 실시간 컨디션을 분석해서 서울 지역 맞춤형 데이트 코스를 추천해주고, 지도·다이어리·지역락 시스템으로 경험을 확장한 웹 서비스입니다. 카카오엔터프라이즈 SW 아카데미의 현장미러형 프로젝트로 진행했습니다.

Loventure 서비스 화면

프로젝트 개요

목표
커플의 취향과 당일 컨디션에 맞는 서울 데이트 코스를 추천하고, 지도 탐색부터 경험 기록까지 이어지는 서비스를 구현했습니다.
배경
데이트 장소를 따로 검색하면 두 사람의 취향·시간·이동 경로를 함께 고려하기 어렵습니다. 온보딩 정보와 당일 조건을 하나의 추천 흐름으로 연결할 필요가 있었습니다.
주요 기능
  • 온보딩 취향 정보와 데이트 시간·컨디션·음주 여부·불호 음식 등의 옵션을 결합해 AI 기반 데이트 코스를 추천합니다.
  • Mapbox 지도를 활용해 시작점을 선택하고, 추천 코스를 경로·마커·거리/시간 정보와 함께 시각화합니다.
  • 커플 룸·커플 매칭, 서울 25개 구를 단계적으로 해금하는 지역락, 다녀온 코스를 기록하는 다이어리까지 하나의 플로우로 제공합니다.

역할·팀 구성

팀 내 역할 분담 · 8인 팀

Frontend · 본인
FSD 모듈 구조, 권한 단계 라우팅, 지도·코스·다이어리·마이페이지 화면
Frontend
서비스 화면과 사용자 인터랙션 구현
Backend / AI
사용자·커플·코스 데이터 API와 맞춤 추천 기능 구현

담당 역할

Frontend Developer

8인 팀에서 프론트엔드 개발자로 기능별 모듈과 사용자 권한 흐름을 설계하고 주요 화면을 구현했습니다.

프론트엔드 아키텍처 설계
  • FSD 기반 모듈 구조 설계

    Feature-Sliced Design(FSD) 기반으로 auth, course, diary, mapbox, mypage 등 기능별 모듈 구조 설계 및 구현

  • 권한 단계별 라우팅 가드 구성

    Zustand + TanStack Query 조합으로 권한 단계(ONBOARDING_REQUIRED, COUPLE_MATCHING_REQUIRED, ROCK_REQUIRED, COMPLETED)에 따른 라우팅 가드와 상태 플로우 구성

주요 화면·UX 구현
  • Mapbox 연동

    Mapbox 연동 구현

  • 코스 추천·저장

    코스 추천·저장 화면 구현

  • 다이어리 작성·댓글

    다이어리 작성/댓글 화면 구현

  • 마이페이지

    마이페이지 화면 구현

사용 기술 & 이유 & 구현

React · TypeScript · FSD
선택 이유
인증·지도·코스·다이어리 기능을 경계가 분명한 모듈로 관리하기 위해 사용했습니다.
구현 내용
기능별 모듈과 주요 페이지를 구성하고 API 응답을 타입으로 연결했습니다.
Mapbox GL JS
선택 이유
데이트 코스는 장소 목록과 함께 시작점·이동 경로를 지도에서 확인해야 합니다.
구현 내용
시작점 선택, 추천 코스 경로·마커와 거리·시간 정보를 시각화했습니다.
Zustand · TanStack Query · React Router
선택 이유
서버 데이터와 클라이언트 권한 상태를 구분하면서 단계별 진입 조건을 관리하기 위해 사용했습니다.
구현 내용
ONBOARDING_REQUIRED, COUPLE_MATCHING_REQUIRED, ROCK_REQUIRED, COMPLETED 상태를 라우팅 가드와 연결했습니다.

문제 해결 사례

사례 1 · 설계 과제사용자 준비 상태에 따른 단계별 라우팅 설계

1. 문제 분석

설계 요구
추천 화면에 진입하려면 취향 입력, 커플 매칭, 지역 선택이 먼저 필요했습니다. 로그인 여부 하나만으로는 다음에 보여줄 화면을 결정할 수 없었습니다.
원인
서비스 진입 조건이 인증뿐 아니라 사용자 준비 단계에도 의존했습니다.
추가 확인 사항
  • 각 단계 완료 후 서버 상태와 클라이언트의 화면 이동 기준이 일치해야 합니다.

2. 개선 과정

  1. 1.진입 조건 정리
  2. 2.권한 상태 정의
  3. 3.서버·클라이언트 상태 분리
  4. 4.라우팅 가드 구성
  5. 5.단계별 화면 연결

사용자 준비 단계를 네 가지 상태로 구분하고, 상태에 맞는 페이지로 이동하도록 가드를 구성했습니다. 기능별 모듈 경계를 유지하며 지도·추천·저장 흐름을 연결했습니다.

3. 설계 요구와 구현 결과

Loventure · 사용자 준비 상태에 따른 단계별 라우팅 설계 비교
항목설계 전 요구구현 결과
진입 조건로그인 여부만으로 판단 불가네 가지 준비 상태로 판단
다음 화면 결정선행 조건을 별도로 확인해야 함권한 상태에 맞는 라우팅 가드

해결 결과

온보딩부터 코스 추천까지 사용자 상태에 맞게 진행하는 프론트엔드 흐름을 구현했습니다.

프로젝트 성과 및 결과

  • 서울 지역 맞춤 데이트 코스의 시작점·경로·거리·시간 시각화
  • 사용자 준비 상태에 따른 네 단계 라우팅 가드 구현
  • 코스 추천·저장과 다이어리·댓글·마이페이지 연결

프로젝트 회고

기술적 한계와 개선 방안

한계·아쉬운 점
다단계 라우팅은 새로고침이나 직접 URL 진입 시에도 서버 상태와 일치해야 합니다.
개선 방향
단계별 직접 진입·재로그인·뒤로 가기를 E2E 시나리오로 구성할 계획입니다.
한계·아쉬운 점
지도 화면의 완성도와 실제 추천 만족도는 서로 다른 기준으로 검증해야 합니다.
개선 방향
지도 로딩 시간과 코스 저장률을 분리해 측정하고 경로 확인에서 저장까지의 이탈을 분석할 계획입니다.