Skip to content

✨ [fear]: 책시리즈 만들기 도전 과제 통합#3

Merged
Roy-wonji merged 39 commits intodevelopfrom
feature/booklist
Sep 15, 2025
Merged

✨ [fear]: 책시리즈 만들기 도전 과제 통합#3
Roy-wonji merged 39 commits intodevelopfrom
feature/booklist

Conversation

@Roy-wonji
Copy link
Contributor

🔗 관련 이슈


✨ 작업 내용

  • tuist 자체 모튤 템플릿 사용
  • ILabel 을 사용해서 책 제목을 표시하는 UILabel을 구현
  • data.json에 있는 시리즈 전권에 대한 데이터 중 한 권 데이터 로드
  • 책 정보 영역을UIStackView 를 최대한 사용해 이미지와 텍스트를 왼쪽과 같이 구성
  • UIStackView 와 UILabel을 사용해서 Dedication과 Summary 를 왼쪽과 같이 구성
  • UIScrollView 를 추가하여 스크롤할 수 있도록 구현한 후 목차(Chapters)를 왼쪽과 같이 구성
  • Summary 접기/더보기 기능을 구현
  • 시리즈 전체(7권) 순서 중 원하는 권수의 책 정보를 볼 수 있도록 왼쪽과 같이 구현

Close Issues 🔒 (닫을 Issue)

Close #1 #2

* json 파일 찾아서 로드 하게 구현
@auto-assign auto-assign bot requested a review from minneee September 10, 2025 03:26
@Roy-wonji Roy-wonji requested review from Peter1119 and minneee and removed request for Peter1119 and minneee September 10, 2025 03:26
@Roy-wonji Roy-wonji added ✨ 기능추가 새로운 기능 추가 🎨 디자인 UI 디자인 작업 labels Sep 10, 2025
Copy link

@minneee minneee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

코드를 꼼꼼하게 작성하신 것 같아요 ~! 수고하셨습니다!

Copy link

@Peter1119 Peter1119 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다 ~!

import DiContainer


@Observable

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

여기 Observable은 어떤 이유로 붙은걸까요 ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Peter1119 해당 레포는 obserable를 써서 할려고 했습니다

import Model
import Combine

public final class DefaultSummaryPersistenceRepository: SummaryPersistenceRepositoryInterface {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 코드는
SummaryPersistenceRepositoryImpl
이것과 관련이 있는 코드 인가요 ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Peter1119 이거 목 관련 입니다

Comment on lines +46 to +53
title = try codingKey.decode(String.self, forKey: .title)
author = try codingKey.decode(String.self, forKey: .author)
pages = try codingKey.decode(Int.self, forKey: .pages)
dedication = try codingKey.decode(String.self, forKey: .dedication)
summary = try codingKey.decode(String.self, forKey: .summary)
wiki = try codingKey.decode(String.self, forKey: .wiki)
chapters = try codingKey.decode([ChapterDTO].self, forKey: .chapters)
image = try codingKey.decode(String.self, forKey: .image)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이건 정렬을 어떻게 하신건가요 ??? 단축키가 있나요 ???

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Peter1119 아니요 따로 맞추었습니다

Comment on lines +8 to +17
let project = Project.makeAppModule(
name: "Model",
bundleId: .appBundleID(name: ".Model"),
product: .staticFramework,
settings: .settings(),
dependencies: [
.Shared(implements: .Utill)
],
sources: ["Sources/**"]
)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Model 모듈을 분리하신 이유가 있으신가요 ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Peter1119 클린 아키텍쳐 적으로 생각 했을때 data에 model 이랑 repository가 있어야 한다고 생각 이들고 model 모델만 선언해서 모델만 관리 할수 있도록 하고 싶어서 그렇게 구현 했습니다

Comment on lines +10 to +27
public struct BookDisplayData: Equatable {
public let book: Book
public let seriesNumber: Int
public let totalSeries: Int
public let isSummaryExpanded: Bool

public init(
book: Book,
seriesNumber: Int,
totalSeries: Int,
isSummaryExpanded: Bool
) {
self.book = book
self.seriesNumber = seriesNumber
self.totalSeries = totalSeries
self.isSummaryExpanded = isSummaryExpanded
}
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DisplayData는 아마 UI쪽 같은데 Error 폴더에 구분된 이유가 있으실까요 ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아아 폴더링이 잘못 된거 같네요

Comment on lines +43 to +50
case API
case Network
case Foundations
case Model
case Service
case DiContainer
case UseCase
case ThirdPartys

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Network 내부에 Foudnations, Model, Service, DIContainer, UseCase, ThirdPartys가 들어가 있는거죠 ?
Networks의 정의가 궁금하고 왜 이렇게 묶였는지 궁금합니다 ~!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아 예전 구조 고 지금은 다 나누어 졌습니다

Comment on lines +71 to +72
case UseCase
case DomainInterface

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DomainInterface에는 어떤게 들어가나요 ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Peter1119 인터페이스 프로토콜을 씁니다

case Interface


public static let name: String = "Interface"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 인터페이스는 어떤 것이 들어가나요 ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Peter1119 도메이인 관려 인데 이게 아마 삭제 될거 입니다

enum Shareds: String, CaseIterable {
case Shared
case DesignSystem
case Utill

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Util, Shared와 Foudations는 어떤 차이인가요 ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Utill 말그대로 Utill 관련 이고 shared 를 DesignSystem 이랑 Utill 을 한번에 가져올수 있는 애 입니다

Comment on lines +13 to +19
public var name: String {
switch self {
case .dev: "Dev"
case .stage: "Stage"
case .prod: "Prod"
}
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

모든 모듈마다 Dev, Stage, Prod 이렇게 구분되어 있던데
실용성 측면에서 의문이 듭니다 !

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Peter1119 이건 main app 모듈 에서 분기 되어서 사용 됩니다

@Roy-wonji Roy-wonji merged commit e8c0f0f into develop Sep 15, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ 기능추가 새로운 기능 추가 🎨 디자인 UI 디자인 작업

Projects

None yet

Development

Successfully merging this pull request may close these issues.

✨[feat]: 프로젝트 셋업

3 participants