Phase 2 _ 사용자 웹 조회 버전 스프린트
목표
사용자는 웹에서 “지금 사용 가능한 슬롯”을 빠르게 확인할 수 있어야 한다.
웹은 앱의 대체가 아니라 보조 채널이다.
원칙(앱과 동일)
타임슬롯 중심
무한 스크롤 기본 금지
인기/랭킹 기본값 금지
광고/배너 없음
시간 → 혜택 → 수량 → 거리 우선
전제
웹에서 “확보/체크인”까지 할지 여부는 단계적으로 진행한다.
Phase 2에서는 우선 “탐색/조회”를 완성한다.
Sprint UW1 – 웹 조회 MVP(리스트/상세) (1주)
UW1-1 사용자 웹 프로젝트 초기화 및 배포 파이프라인
Next.js 기반 프로젝트 생성(TypeScript)
Cloudflare Pages 배포 연결(GitHub 연동)
환경변수 설정
완료 조건
PR merge 시 자동 배포
dev/prod 환경 분리
UW1-2 위치 권한 + fallback 입력(동네/좌표)
브라우저 위치 권한 요청
권한 거부 시 fallback
“현재 위치 허용” 재요청 버튼
또는 “지역 선택”(간단 텍스트/드롭다운)로 대체 좌표 설정
완료 조건
권한 허용/거부 모두에서 서비스 이용 가능
fallback은 최소 동작으로만 제공
UW1-3 주변 슬롯 조회 API 연결
getNearbySlots 호출
로딩/빈/에러 상태 UI
반경 기본값 고정(예: 1~2km)
완료 조건
현재 위치 기준으로 슬롯 목록 표시
실패 시 재시도 가능
UW1-4 필터(최소) + 기본 정렬 적용
시간 프리셋(now/next1h/today)
거리 반경 프리셋
업종(선택)
정렬 기본값: 사용 가능 여부 → 거리 → 임박
완료 조건
필터 적용 시 목록 갱신
무한 스크롤 없이 탐색 종료 가능
UW1-5 슬롯 상세 페이지
시간/혜택/수량/거리/매장요약 표시
길찾기 버튼(외부 지도 딥링크)
완료 조건
목록→상세 전환 자연스럽게
앱 설치 유도 배너는 금지(필요 시 조용한 링크만)
Sprint UW2 – “확보는 앱에서” 브릿지 설계 (1주)
목표
웹은 조회, 앱은 실행(확보/체크인).
웹에서 앱으로 자연스럽게 이어지게 만든다.
UW2-1 슬롯 공유 링크(SEO 친화, 슬러그 전략)
slotId 기반 공유 URL 생성
메타 태그(제목/요약) 설정
완료 조건
- 링크 공유 시 카드가 깨지지 않음
UW2-2 앱 딥링크/유니버설 링크(가능 범위 내)
앱 설치되어 있으면 앱으로 열기
없으면 웹에서 계속 보기
완료 조건
최소한 “앱에서 열기” 버튼이 정상 동작
미설치 시 안내 문구는 최소/절제
UW2-3 “앱에서 확보” CTA (조용한 UX)
웹 상세에서 “앱에서 15분 확보” 버튼 제공
클릭 시 딥링크 또는 스토어/설치 안내
완료 조건
웹이 구매/소비 유도 UI처럼 보이지 않음
CTA는 기능 안내 수준
Sprint UW3 – 성능/안정화/관측 (1주)
UW3-1 캐싱 및 응답 최적화
근거리 조회 결과 캐시(짧은 TTL)
중복 요청 방지(debounce)
완료 조건
- 새로고침/필터 변경 시 UX 안정
UW3-2 빈 상태 UX 강화
“반경 확장”
“시간 프리셋 변경”
“다른 업종 선택”
지역 밀도 낮을 때도 막히지 않게
완료 조건
- 빈 화면에서 다음 행동이 명확
UW3-3 이벤트 로깅 최소
view_list, view_detail, click_directions, click_open_app
실패 이벤트(geo_denied, api_fail)
완료 조건
- 웹 유입/전환 퍼널 기본 측정 가능
Web Phase 2 완료 정의
웹에서 주변 슬롯 탐색 가능
필터/정렬이 정책대로 동작
상세에서 길찾기 및 앱 연결 가능
무한 스크롤/랭킹/배너 없음
지역 밀도 낮아도 빈 상태 UX로 막히지 않음