Skip to main content

Vivid Renewal TODO

이 문서는 Google Sheets 비비드 요구사항 정의서공통 사항01 - Home 섹션을 기준으로, 현재 리뉴얼 중인 화면에서 추가 확인 또는 수정이 필요한 항목을 추적합니다.

범위

  • 대상: 현재 리뉴얼한 Home, Sidebar, Profile popup, Gallery detail modal, Home persona/discover 영역
  • 제외: 레거시 화면 전반, 아직 리뉴얼 범위가 아닌 상세 플로우
  • 기준: Figma 디자인, 요구사항 정의서, 기존 디자인 시스템, 현재 구현 순서로 확인

상태 기준

  • [ ]: 미착수
  • [~]: 구현 중 또는 일부 반영
  • [x]: 반영 완료
  • 확인 필요: 이전 구현 요청과 정의서가 충돌하거나 제품 결정이 필요한 항목

2026-06-01 구현 대조 메모

아래 항목은 공통 사항01 - Home 기준으로 현재 코드에 남아 있는 미반영/부분 반영 사항이다. 레거시 전반이 아니라 현재 리뉴얼 중인 Home, Sidebar, Profile popup, Gallery detail modal 중심으로만 추적한다.

2026-06-05 Discover 큐레이션 전환 메모

  • 기존 사용자 게시(posts) 기능과 좋아요(likes) 기능은 둘러보기의 기반으로 사용하지 않는다.
  • 별 아이콘은 pins 기반의 모음/즐겨찾기 기능으로 유지한다.
  • Home Discover는 사용자의 게시물이 아니라 관리자가 선별한 discover_items를 노출한다.
  • 유저는 콘텐츠 공개 허용 설정으로 관리자 큐레이션 후보 노출 여부를 제어한다.
    • 기본값은 허용이다.
    • 문구 기준: 모든 콘텐츠가 공개되는 것은 아니며, 검토 후 선별 노출됩니다.
  • Discover 카테고리는 전체, 포토, 비디오, 코디, 배경으로 구성한다.
    • 전체는 UI 필터 전용이며 DB 저장값으로 사용하지 않는다.
    • DB 저장 카테고리는 PHOTO, VIDEO, COORDI, BACKGROUND을 사용한다.
  • 구현 상태:
    • 백엔드 allowContentCurationdiscover_items foundation 추가
    • Home Discover를 posts 기반에서 discover_items 기반으로 교체
    • 프로필의 게시/좋아요 탭과 통계 제거
    • 게시/좋아요 API 및 DB 테이블 제거 마이그레이션 추가
    • 관리자 둘러보기 큐레이션 페이지 추가
    • 리뉴얼 설정 화면에서 콘텐츠 공개 허용 토글 UI 연결

우선순위 P0

  • 공통 popup/modal 진입 및 종료 애니메이션을 먼저 정리한다.
    • 기존 Profile popup은 단순 조건부 렌더링이라 진입/종료 애니메이션이 없었다.
    • 기존 Gallery detail modal은 고정 overlay와 content를 바로 렌더링하며, dim fade, media zoom-in, 우측 패널 slide-in/out 애니메이션이 없었다.
    • 구현 방향: 이미 프로젝트에서 사용하는 framer-motionAnimatePresence를 재사용해 공통 modal motion primitive를 만든다.
    • 1단계 반영: ModalPresence, ModalSurface를 추가하고 Profile popup에 진입/종료 애니메이션을 적용했다.
    • 2단계 반영: Gallery detail modal에 ModalBackdrop, ModalMediaSurface, ModalSidePanel을 적용하고, exit animation 이후 URL query를 정리하도록 닫기 흐름을 조정했다.
    • 공통 primitive 후보:
      • ModalPresence: open 상태에 따라 children을 mount/unmount하고 exit 애니메이션을 보장한다.
      • ModalBackdrop: #000 opacity 80%, blur 50, fade in/out, backdrop click close를 담당한다.
      • ModalSurface: popup/modal 본문 진입/종료 motion variant를 담당한다.
      • ModalSidePanel: 상세 모달 우측 패널의 right slide-in/out을 담당한다.
      • ModalMediaSurface: 상세 모달 좌측 media의 zoom-in/out을 담당한다.
    • 정의서 기준 motion:
      • On: 아래에서 올라오며 나타난다.
      • Off: 위에서 내려가는 느낌으로 사라진다.
      • 구현 전 실제 Figma motion 의도가 닫힐 때 아래로 내려감인지 위쪽에서 내려오는 out motion인지 최종 확인이 필요하다.
  • Modal dim 규칙을 통일한다.
    • 기준: #000 opacity 80%, background blur 50, 흐려지는 애니메이션.
    • 2단계 반영: Gallery detail modal은 bg-black/80, backdrop-blur-[50px], fade in/out을 적용했다.
    • Profile popup은 overlay dim을 쓰지 않는 anchored popup이므로 dim 대상에서 제외하되, exit animation은 공통 규칙을 공유한다.
  • Detail modal 애니메이션을 공통 primitive로 이관한다.
    • 좌측 media 영역: 진입 시 zoom-in.
    • 우측 정보 패널: 진입 시 right slide-in.
    • 2단계 반영: 닫기 시 exit animation이 끝난 후 query param 제거 또는 unmount가 일어나도록 했다.
    • Escape, X 버튼, media 바깥 클릭 닫기 동작은 유지한다.

우선순위 P1

  • 주요 loading 상태를 skeleton 중심으로 전환한다.
    • Home persona, Home discover, Gallery detail fallback loading에 spinner가 남아 있다.
  • Tooltip 스타일을 정의서 기준으로 통일한다.
    • 기준: Regular 14/20, text #fff, background #80, radius 8, padding 16px.
    • 현재 공통 Tooltip과 Sidebar Tooltip override가 서로 다르다.
  • Home Discover 비디오 카드 자동재생을 보강한다.
    • 현재 카드는 thumbnail/image만 렌더링한다.
    • 비디오 작업물은 hover 없이 muted autoplay loop preview로 노출하는 방향을 검토한다.
  • Home Discover 검색 범위를 정의서 기준으로 보강한다.
    • 작성자 닉네임, 프롬프트 단어, 룩북 태그를 검색 대상으로 맞춘다.
  • Home 내 남은 visible Place 문구를 Discover/Gallery/콘텐츠 계열 용어로 정리한다.
    • API/hook 이름(usePlacePosts, mapPlacePostToGalleryItem)은 별도 route/domain rename 범위로 분리한다.
  • Detail modal 프롬프트 영역 펼치기/접기를 구현한다.
    • 현재 chevron은 시각 요소만 있고 동작이 없다.
  • Detail modal kebab menu를 저장하기, 공유하기 링크 복사 액션으로 정리한다.
    • 현재 더보기 버튼은 즉시 링크 복사만 수행한다.

우선순위 P2

  • Persona 카드 kebab menu에서 삭제, 편집 액션을 연결한다.
    • 현재는 hover 시 kebab 모양만 노출된다.
  • Discover hover overlay에 이름뿐 아니라 날짜 등 정의서 기준 정보를 보강한다.
  • 참조 이미지 영역을 정의서 기준으로 정리한다.
    • 클릭/hover 인터랙션 제거는 현재 유지되고 있으나, 저해상도 썸네일 사용과 페르소나/참조된 룩북 한정 노출은 추가 확인이 필요하다.
  • 내 룩북에 추가 버튼 노출 조건을 재검토한다.
    • 현재는 lookbookTarget이 있으면 노출된다.
    • TODO 기준은 룩북 상세 화면에서만 노출이다.

확인 필요

  • Home Hero의 hover pause 규칙은 정의서와 이후 요청이 일부 충돌한다.
    • 정의서: 캐러셀 영역 hover 시 자동 넘김 정지.
    • 이후 요청 반영 상태: 비디오 배너는 hover와 상관없이 영상 종료 시 다음 배너로 넘어간다.
    • 제품 기준을 정의서 우선으로 되돌릴지, 최신 요청 우선으로 유지할지 결정이 필요하다.

공통 사항

  • [~] Popup/modal 진입 및 종료 애니메이션을 공통 규칙으로 정리한다.
    • On: 아래에서 올라오는 애니메이션
    • Off: 위에서 내려가는 애니메이션
    • 1단계: Profile popup 적용 완료
    • 2단계: Gallery detail modal의 dim fade, media zoom-in, right panel slide-in/out 적용 완료
    • 남은 범위: 다른 리뉴얼 modal/popup 적용 범위 확인
  • [~] Modal dim 규칙을 통일한다.
    • #000 opacity 80%
    • background blur 50
    • 흐려지는 애니메이션
    • dim 영역 클릭 시 뒤로가기 또는 닫기
    • 2단계: Gallery detail modal 적용 완료
  • Modal에서 좌측 사이드패널은 dim 처리하지 않고, 사이드패널에서 32px 떨어진 위치에 X 버튼을 노출한다.
  • #90 이하 컬러 버튼 hover 시 #000 opacity 30% dim 처리를 공통 버튼 상태로 검토한다.
  • 주요 loading 상태를 spinner 중심에서 skeleton loading 중심으로 정리한다.
  • Tooltip 스타일을 정의서 기준으로 통일한다.
    • Regular 14/20
    • text #fff
    • background #80
    • radius 8
    • padding 16px
  • 이미지 카드 hover 모션을 공통화한다.
    • 큐레이션 이미지, 나의 페르소나 목록, 생성 화면 이미지 그리드
    • subtle lift 4-8px
    • 부드러운 easing transition
  • Sidebar menu hover tooltip을 Home, Persona, Lookbook, Notifications 기준으로 재확인한다.
  • Sidebar price 버튼 hover 애니메이션을 정의서 기준으로 보강한다.
    • 텍스트는 박스 내부에 유지
    • cursor pointer

01 - Home: Event Banner

  • [~] 공지 관리에서 홈 히어로 배너용 이미지/비디오를 업로드하고 반응형 안전 영역 가이드를 보며 위치/확대를 조정할 수 있게 한다.
    • 원본 미디어는 유지하고 crop metadata(position X/Y, scale)를 저장한다.
    • Desktop large, laptop safe, core safe, 좌측 텍스트 충돌 영역 가이드를 제공한다.
    • Home Hero는 발행/노출 중인 공지의 히어로 배너 데이터를 우선 사용하고, 없을 때만 더미 배너를 사용한다.
  • 배너 캐러셀을 10초 단위 자동 넘김으로 구현한다.
  • 캐러셀 영역 hover 시 자동 넘김을 정지한다.
  • 페이지네이션 인디케이터를 클릭 가능하게 유지하고, 현재 페이지는 좌에서 우로 채워지는 애니메이션을 적용한다.
  • 좌우 화살표 클릭 전환 시 이미지/영상 배경 fade in-out 애니메이션을 자연스럽게 유지한다.
  • 배경 media는 이미지와 영상을 모두 지원하도록 구조를 정리한다.
  • 타이틀과 본문 클릭 시 이벤트 상세로 이동하도록 클릭 영역을 확장한다.
  • 타이틀은 최대 1줄, 본문은 최대 2줄로 제한한다.
  • 타이틀 typography 기준을 확정한다.
    • 정의서 우선: Chakra Petch 계열을 우선 적용하고 ExtraBold 60px 기준을 반영한다.
  • 좌우 hover 감지 범위를 확정한다.
    • 정의서 우선: 좌우 각각 150px 감지 영역을 적용한다.
  • 좌측 hover 시 텍스트가 우측으로 40px 이동하는 애니메이션을 반영한다.

01 - Home: Recent Persona Tasks

  • Home에서 최근 페르소나 노출 개수를 최대 8개로 제한한다.
  • 섹션 내 전체보기 클릭 시 Persona main page로 이동하는 동작을 유지한다.
  • 카드 hover 시 페르소나명, 최근 수정일, kebab menu를 노출한다.
  • Kebab menu에서 삭제, 편집 액션을 연결한다.
  • 새 페르소나 버튼 클릭 시 페르소나 추가 모달이 열리는지 재확인한다.
  • Loading 상태를 skeleton으로 전환한다.

01 - Home: Discover

  • 큐레이션 이미지 그리드는 1행 5개 기준으로 조정한다.
  • Discover category는 전체, 포토, 비디오, 룩북 4개를 유지한다.
  • 비디오 작업물은 hover하지 않아도 자동 재생되도록 카드 렌더링을 보강한다.
  • 검색 대상 범위를 정의서 기준으로 맞춘다.
    • 작성자 닉네임
    • 프롬프트 단어
    • 룩북의 경우 태그
  • Home 내 남은 Place 문구를 Discover/Gallery/콘텐츠 계열 용어로 정리한다.
  • 이미지 카드 hover 시 이름, 날짜 등 오버레이 노출 상태를 Figma 기준으로 재확인한다.
  • 즐겨찾기 버튼은 hover 시 노출하고, 이미 즐겨찾기된 경우에는 항시 채워진 별로 표시한다.

01 - Home: Detail Image Modal

  • 좌측 이미지 영역의 상하단 마진을 최대 32px 이내로 유지한다.
  • 이미지/비디오 원본 비율을 유지하며 동적으로 표시한다.
  • 즐겨찾기 버튼 클릭 시 내 프로필 > 즐겨찾기 탭에 추가되는지 확인한다.
  • Kebab menu를 저장하기, 공유하기 링크 복사 액션으로 정리한다.
  • Modal/view 진입 시 좌측 media 액션에 zoom-in 애니메이션을 적용한다.
  • 우측 패널 진입 시 right slide-in 애니메이션을 적용한다.
  • 프롬프트 영역은 기본 축약 상태로 표시하고, 화살표 버튼으로 전문 펼쳐보기/접기를 지원한다.
  • 참조 이미지 영역은 클릭 및 hover 인터랙션을 제거한다.
  • 참조 이미지 썸네일은 저해상도 버전을 사용한다.
  • 참조 이미지 노출 범위는 페르소나와 참조된 룩북으로 제한한다.
  • 메타 정보는 제작자 닉네임, 모델, 이미지 비율, 이미지 사이즈, 이미지 제작일만 노출한다.
  • 내 룩북에 추가 버튼은 룩북 상세 화면에서만 노출되도록 조건을 재검토한다.
  • 마우스 wheel 및 방향키 기반 상세 전환 기능이 제거된 상태를 유지한다.
  • 이미지 바깥 영역 클릭 시 X 버튼과 동일하게 닫히는 동작을 유지한다.

구현 메모

  • Home 관련 주요 파일
    • frontend-vivid-ai/src/features/dashboard/components/HomeHeroBanner.tsx
    • frontend-vivid-ai/src/features/dashboard/components/HomePersonaSection.tsx
    • frontend-vivid-ai/src/features/dashboard/components/HomeBrowseSection.tsx
    • frontend-vivid-ai/src/features/dashboard/components/HomeGalleryItemDetailModal.tsx
  • 공통/레이아웃 관련 주요 파일
    • frontend-vivid-ai/src/components/navigation/AppSidebar.tsx
    • frontend-vivid-ai/src/components/navigation/ProfileActivePopup.tsx
    • frontend-vivid-ai/src/components/ui/atoms/Tooltip/ToolTip.tsx
    • frontend-vivid-ai/src/features/community/components/community-detail/GalleryItemDetailModal.tsx
  • 현재 usePlacePosts, mapPlacePostToGalleryItem 등 일부 코드명은 API/기존 도메인 호환을 위해 남아 있다. UI 문구와 route naming 정리와 별도 범위로 다룬다.