Skip to content

Conversation

@unib35
Copy link
Member

@unib35 unib35 commented Jan 5, 2026

🔮 작업 요약

Figma 디자인을 기반으로 메인 화면을 TCA 패턴으로 구현하고, 로그인 → 메인 화면 네비게이션을 연결했습니다.

🖥️ 상세 작업 내용

AppFeature (루트 상태 관리)

  • 앱 레벨 상태 관리 (isLoggedIn)
  • LoginFeature, MainFeature 통합
  • 로그인 성공 시 메인 화면 전환

MainFeature (TCA Reducer)

  • State, Action, Reducer 정의
  • 모델 정의: RelayList, ChartSong, Artist, Playlist, YouTubeVideo, Banner
  • MainClient Dependency 및 Mock 데이터 구현
  • 타이머 기반 릴레이리스트 카운트다운 로직

MainView (UI)

  • 릴레이리스트 섹션: 페이지 스와이프 + 인디케이터, 첫 곡 정보, 타이머/완성 상태
  • 위플리 TOP 100: 차트 목록 (순위, 앨범아트, 제목, 아티스트)
  • 배너 섹션: 가로 스크롤 배너
  • 위플리 인기 랭킹: 아티스트 프로필 가로 스크롤
  • 위플리 추천 플레이리스트: 플레이리스트 가로 스크롤
  • 테마별 플레이리스트: 플레이리스트 가로 스크롤
  • YouTube Music: 영상 썸네일 가로 스크롤
  • 상단 앱바: 로고, 검색, 알림 버튼
  • 상단 safe area 확장: 콘텐츠가 상단 safe area까지 자연스럽게 이어지도록 개선

코드 리팩토링

  • Models 분리: MainModels.swift로 모델 타입 추출
  • Client 분리: MainClient.swift로 Dependency 추출
  • MockData 분리: MainMockData.swift로 목데이터 추출
  • Components 분리: 섹션별 뷰 컴포넌트 파일로 분리
    • MainAppBar.swift, RelayListSection.swift, ChartSection.swift
    • BannerSection.swift, ArtistRankingSection.swift
    • PlaylistSection.swift, YouTubeSection.swift
  • Extensions 분리: Color+Hex.swift로 공용 확장 추출

📁 파일 구조

Features/Main/
├── MainFeature.swift      # TCA Reducer
├── MainView.swift         # 메인 뷰 조합
├── Models/
│   └── MainModels.swift   # 모델 정의
├── Client/
│   ├── MainClient.swift   # Dependency
│   └── MainMockData.swift # Mock 데이터
└── Components/
    ├── MainAppBar.swift
    ├── RelayListSection.swift
    ├── ChartSection.swift
    ├── BannerSection.swift
    ├── ArtistRankingSection.swift
    ├── PlaylistSection.swift
    └── YouTubeSection.swift

📸 참고 디자인

📌 이슈 및 특이사항

  • 임시 구현: 소셜 로그인 버튼 클릭 시 바로 메인 화면으로 이동 (실제 로그인 로직 미구현)
  • 이미지: 현재 플레이스홀더(그라디언트) 사용
  • WithPerceptionTracking 패턴 사용 (TCA + SwiftUI 호환)

🚀 관련 이슈

- MainFeature TCA Reducer 구현
  - RelayList, ChartSong, Artist, Playlist, YouTubeVideo 모델 정의
  - MainClient Dependency 및 Mock 데이터 추가
  - 타이머 기반 릴레이리스트 카운트다운 구현

- MainView 구현
  - 릴레이리스트 카드 섹션 (페이지 인디케이터 포함)
  - 위플리 TOP 100 차트 섹션
  - 배너 섹션 (가로 스크롤)
  - 위플리 인기 랭킹 (아티스트 프로필)
  - 위플리 추천 플레이리스트
  - 테마별 플레이리스트
  - YouTube Music 섹션
@unib35 unib35 added enhancement New feature or request module: app Main app module tca: reducer TCA Reducer related area: ui/ux UI/UX improvements ios: swiftui SwiftUI related labels Jan 5, 2026
unib35 added 4 commits January 6, 2026 02:37
- AppFeature 추가: 앱 레벨 상태 관리 (isLoggedIn)
- AppView 추가: 로그인 상태에 따라 LoginView/MainView 전환
- 소셜 로그인 버튼 클릭 시 메인 화면으로 이동 (임시)
- ScrollView가 상단 safe area까지 확장되도록 수정
- MainAppBar 배경 그라디언트가 상단까지 이어지도록 개선
- RelayListCard가 safe area를 고려하여 콘텐츠 위치 조정
- GeometryReader를 최상위로 이동하여 safe area 값을 정확히 전달
- MainAppBar 그라디언트 제거로 이상한 그림자 효과 해결
- RelayListSection이 처음부터 노치까지 확장되도록 수정
- Models: MainModels.swift로 모델 분리 (RelayList, Song, ChartSong 등)
- Client: MainClient.swift로 Dependency 분리
- Client: MainMockData.swift로 목데이터 분리
- Components: 섹션별 뷰 컴포넌트 분리
  - MainAppBar, RelayListSection, ChartSection
  - BannerSection, ArtistRankingSection
  - PlaylistSection, YouTubeSection
- Extensions: Color+Hex.swift로 공용 Color extension 분리
- MainFeature.swift: Reducer 로직만 유지
- MainView.swift: 메인 뷰 조합만 담당
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ui/ux UI/UX improvements enhancement New feature or request ios: swiftui SwiftUI related module: app Main app module tca: reducer TCA Reducer related

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants