Skip to content

CollaborationMedia/CollaborationMedia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MediaBox


스크린샷

인기 컨텐츠 조회 상세 티저영상
Simulator Screenshot - iPhone 15 - 2024-10-15 at 17 33 35 Simulator Screenshot - iPhone 15 - 2024-10-15 at 17 35 27 Simulator Screenshot - iPhone 15 - 2024-10-15 at 17 36 05

프로젝트 소개

  • 지금 인기 있는 영화나 TV시리즈를 검색하고 상세정보를 조회할 수 있는 서비스

프로젝트 정보

  • 개발기간: 2024.10.08 ~ 2024.10.14일
  • 개발인원: 클라이언트 2명

주요기능

  • 인기 영화 / TV 시리즈 조회
  • 영화 / TV시리즈 상세 정보 조회
  • 영화 / TV시리즈 티저 영상 WebView 조회

기술스택

  • MVVM, Input/Output
  • UIKit, SnapKit
  • RxSwift, RxCocoa, RxDataSource
  • Alamofire, KingFisher
  • SwiftLint
  • Toast

개발환경


최소버전

  • iOS 15.0이상

버전관리

  • Github (git)

협업 툴

  • Notion (Kanban Board)

코드 컨벤션

  • SwiftLint
  • 커스텀 Rule 설정

커밋 컨벤션

  • Karma 컨벤션 채택
  • Feature 브랜치 내에서는 작동가능한 코드를 기준으로 커밋 단위 설정
Tag Name Description
[Feat] 새로운 기능을 추가
[Fix] 버그 수정
[Design] CSS 등 사용자 UI 디자인 변경
[Style] 코드 포맷 변경, 세미 콜론 누락, 코드 수정이 없는 경우
[Refactor] 프로덕션 코드 리팩토링
[Comment] 필요한 주석 추가 및 변경
[Remove] 파일을 삭제하는 작업만 수행한 경우
[Add] 파일을 추가하는 작업만 수행한 경우
[Conflict] Git Conflict 수정 커밋

PR 템플릿

스크린샷 2024-10-15 오후 4 14 08

브랜치 전략

  • Git-flow 전략 기반으로 main, develope, feature로 나누어 개발
  • Feature 브랜치 명을 Notion Kanban Board의 티켓과 일치시키도록 Rule 수립

역할분담

조규연

  • 페이지: 인기 영화 / TV시리즈 조회 화면, 티저 영상 WebView
  • 공통 컴포넌트: CustomButton, PosterContent, PosterCell

유철원

  • 페이지: 상세화면
  • 공통 컴포넌트: PosterImageView

구현사항

네트워킹

  • NetworkManager, Router Pattern, TargetType 을 이용해 여러 API 호출 함수들을 모듈화

protocol 기반의 UI용 모델 인터페이스 구현

스크린샷 2024-10-16 오후 3 01 07

RxdataSource + CompositionalLayout

  • AnimatableSectionModel: 데이터 개수 변경에 따른 자연스러운 애니메이션 동작

트러블 슈팅


pbxproj Conflict


문제상황

  • gitignore 설정한 파일을 프로젝트에 생성한 상태로 push. pbxproj에 해당 파일의 경로가 남아 pull 받은 쪽에서 프로젝트가 파일의 참조만 갖는 상태로 빌드되지 않음.
스크린샷 2024-10-15 오후 5 54 10
  • pull받은 쪽의 로컬에서 문제가 되는 파일을 동일경로에 생성한 후 빌드에 성공하더라도 리모트에 추가 변경사항 발생시 pbxproj 파일에서 반복적으로 conflict 발생.
스크린샷 2024-10-16 오후 3 53 30

원인

  1. gitignore 설정한 파일을 프로젝트에 생성한 후 remote에 push
    • remote의 pbxproj 파일에는 해당 파일의 identifier와 경로가 추가됨
    • git에서는 관리되지 않으므로 해당 파일은 업로드 되지 않음
  2. 첫 번째 문제를 해결하기 위해 로컬에서 생성한 파일은 pbxproj의 파일과 경로가 동일하더라도 다른 identifier(Hash)를 가짐

해결방법

최초 프로젝트 설정 시 gitignore 파일만 팀에 공유한 후 각자 로컬에서 gitignore 처리된 파일을 협의된 경로에 동일한 내용으로 생성


회고

성취점

  • 공통된 UI 컴포넌트와 View용 모델의 인터페이스를 협의를 통해 설계한 점
  • 코드 컨벤션, 브랜치 전략, Git 컨벤션, PR 템플릿에 기반한 상호 코드 Review를 통해 일관된 Rule기반의 프로젝트 관리를 수행한 점

개선사항

  • 이미지 다운샘플링을 통한 성능개선
  • 네트워크 매니저의 모듈화

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages