/BookSearch

Primary LanguageSwiftMIT LicenseMIT

BookSearch

이 프로젝트는 개발 도서를 검색하고, 사용자에게 검색결과를 보여주는 프로젝트입니다.

프로젝트 관리

  • 이 프로젝트는 Tuist 버전 3.39.0 기반으로 구성되어 있습니다.
  • 프로젝트 진행사항 관리는 깃허브 프로젝트를 사용하고 있습니다.

깃 전략

깃 플로우깃허브 플로우를 적절히 사용하였습니다.

커밋 메시지

  • feat: 새로운 기능 추가
  • fix: 버그 수정
  • docs: 문서 수정
  • test: 테스트 코드, 리팩토링 (Test Code)
  • refact: 리팩토링 (Production Code)
  • chore: 자잘한 수정이나 빌드 업데이트
  • rename: 파일 혹은 폴더명 수정

예시: feat: 좋아요 버튼을 누를 때 햅틱 피드백 추가

패키지 의존성 구조

BookSearchPackage

패키지 설명

패키지들은 각자의 샘플 프로젝트와 유닛테스트를 소유하고있습니다.

App

실제 앱 프로젝트입니다. 아래의 패키지들을 조립해서 만들고 있습니다.

AppFoundation

앱의 기반이 되는 코드들을 포함합니다.
이 패키지에 포함되는 코드들은 이 프로젝트 어디에서나 사용될 수 있습니다.
변경사항이 적을 것으로 예상되는 코드들을 포함하고 있어야 합니다.

AppNetwork

앱의 네트워크 처리를 담당하는 패키지입니다.

ImageLoader

이미지 URL을 사용해 이미지를 다운로드받고, 메모리 혹은 디스크 캐시를 하여 UIImageView에 이미지를 보여주는 패키지입니다.

UIComponents

UI에 관련된 코드들이 들어있습니다.

Domain

도메인 레이어의 코드들이 들어있습니다.
프로젝트가 커질 경우 Domain을 루트 디렉토리로 하여, Usecase 혹은 Entity별 패키지를 가져야 할 것 같습니다.

Feature/Search

도서 검색 기능 코드들을 포함하고 있는 패키지입니다. View와 ViewModel을 포함하고 있습니다.
Domain, UIComponents, ImageLoader 패키지를 적절히 사용해 구현합니다.

Feature/Detail

도서 상세 정보 기능 코드들을 포함하고 있는 패키지입니다. View와 ViewModel을 포함하고 있습니다.
Domain, UIComponents, ImageLoader 패키지를 적절히 사용해 구현합니다.

Data

실제 데이터를 호출하는 코드를 포함하고 있습니다.

Coordinator

화면 간의 의존성을 제거하기 위해 코디네이터 패턴을 사용해 프레임워크를 만들었습니다.
앱 패키지 내에서 플로우 코드를 작성해 어떤 화면이든 적절히 사용자에게 보여줄 수 있습니다.