https://github.com/boostcampwm-2024/ios10-memorialhouse
따뜻한 일상부터 특별한 순간까지 기록하다, 기록소 🏠
https://github.com/boostcampwm-2024/ios10-memorialhouse
avfaudio avkit coredata ios photos swift textkit
Last synced: 8 days ago
JSON representation
따뜻한 일상부터 특별한 순간까지 기록하다, 기록소 🏠
- Host: GitHub
- URL: https://github.com/boostcampwm-2024/ios10-memorialhouse
- Owner: boostcampwm-2024
- Created: 2024-10-28T02:00:12.000Z (7 months ago)
- Default Branch: develop
- Last Pushed: 2025-03-27T13:16:20.000Z (about 2 months ago)
- Last Synced: 2025-05-12T14:12:22.977Z (8 days ago)
- Topics: avfaudio, avkit, coredata, ios, photos, swift, textkit
- Language: Swift
- Homepage: https://apps.apple.com/app/%EA%B8%B0%EB%A1%9D%EC%86%8C/id6739330837
- Size: 15.8 MB
- Stars: 42
- Watchers: 4
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## 🏠 기록소 - Memorial House
![]()
![]()
![]()
#### 사랑하는 이들과의 소중한 추억을 기록소에서 책으로 엮고 출판해보세요.
#### 따뜻한 일상부터 특별한 순간까지 추억을 출판하는 곳, **기록소 🏠**
## 🍎 기록소 주요 기능
||||
|:-:|:-:|:-:|
||||##
### 🧱 아키텍처
> ### Clean Architecture + MVVM
- View와 비즈니스 로직 분리를 위해 **MVVM 도입**
- 추후 서버 도입 가능성을 고려해 **Repository Pattern을 적용하기 위한 Data Layer 도입**
- ViewModel의 복잡도가 증가할 것을 예상하여 **Domain Layer를 두어 Use Case에서 처리**- 테스트 가능한 구조를 만들기 위해 **Domain Layer에 Repository Interface 구현**
##
### 🛠️ 기술 스택
### Combine
- MVVM 패턴에서 View와 ViewModel의 바인딩을 위해 Combine을 활용했습니다.
- Combine은 First Party 라이브러리라는 점에서 안정성과 지원이 뛰어나며, RxSwift에 비해 성능적인 이점이 있어 RxSwift 대신 Combine을 도입했습니다.### Swift Concurrency
- 비동기 프로그래밍을 위해 Swift Concurrency(async/await)를 활용하였습니다.
- 기존의 콜백 기반 비동기 프로그래밍은 코드의 깊이가 증가해 가독성을 해치고, completion 호출을 누락하는 등 휴먼 에러가 발생할 가능성이 있었습니다.
- Swift Concurrency을 도입하여 위 단점을 보완하여 코드 가독성과 안정성을 높이고자 했습니다.### CoreData + FileManager
- Local DB로 Core Data와 FileManager를 함께 활용했습니다.
- Core Data는 책과 페이지 간의 관계를 유지하기 위해 사용하며, 각 페이지는 멀티미디어 데이터를 포함할 수 있습니다.
- 멀티미디어를 Core Data에 직접 저장하면, 책을 펼칠 때 모든 데이터를 한꺼번에 불러와 성능 저하가 발생할 수 있습니다. 이를 방지하기 위해 멀티미디어는 FileManager를 통해 디바이스에 저장하고, Core Data에는 해당 멀티미디어의 URL만 문자열로 저장했습니다.
- 이러한 방식으로 페이지 로드 시 URL만 불러와 메모리 사용을 줄이고, 필요한 멀티미디어는 개별적으로 로드하여 효율성을 높였습니다.##
### 🧑🧑🧒🧒 집주인들
〰️ 부산 워크샵 단체사진 〰️
|
|
|
|
|
|:-:|:-:|:-:|:-:|
|🎨 김영현|🥇 박효준|👓 안윤철|😽 임정현|
|집주인 내 골드핸즈(= 금손)
초고수 디자이너
영리아나 그란데
영카소, 영켈란젤로, 영흐|우리팀 리-더
발표 초-고수
황금막내
열정보이🔥
문서화 장인|데(DevOps) 윤철
분위기 메이커
아이디어 뱅크
동의, 인정, 공감 장인
돌리기 장인 (조리돌림)
우리팀 MZ|살아있는 네이버 클로바
루루 집사
스티브잡스, 스티브워즈니악,
스티브 임정현 Let's Go|
|[@k2645](https://github.com/k2645)|[@kyxxn](https://github.com/kyxxn)|[@yuncheol-AHN](https://github.com/yuncheol-ahn)|[@iceHood](https://github.com/icehood)|##
|📓 문서|[Wiki](https://github.com/boostcampwm-2024/iOS10-MemorialHouse/wiki)|[팀 노션](https://kyxxn.notion.site/iOS10-12c9adb32626806c900ad008c85e7dcc?pvs=4)|[팀 기술 블로그](https://memorial-house.tistory.com/)|[회의록](https://kyxxn.notion.site/eb52137ca8374353adbd7fb6926e99e8?pvs=4)|[기획/디자인](https://www.figma.com/design/zgxogGGouOUsshAJkPeT86/MemorialHouse?node-id=0-1&node-type=canvas&t=b4rxjLDdHgzyH6p3-0)|
|:-:|:-:|:-:|:-:|:-:|:-:|