- Current macOS Version: 13.2 (Ventura) or later
- Current Xcode Version: 14.2
- Current iOS Minimum Deployment Target: 16.2
- Current Swift Version: 5.7
List | Detail |
---|---|
![]() |
![]() |
- UIKit as UI framework
- MVC as UI design pattern
- Modular Architecture using Feature Interface concept and SPM to handle it
- Swift Package Manager as dependency manager
This project uses Swift Package Manager as dependency manager
- Dependency Injection: Router Service
- Image downloader: Kingfisher
Based in this article this project was buit using interface modules with a DI container. "Interface" modules don't contain any concrete code or dependencies -- they just contain protocols that are used by the modules that depend on it to reference some piece of code that is defined in the real, concrete module. In terms of build time, because features doesn't depend of another feature, changes to concrete modules will not recompile the entire project or it dependencies avoiding a massive boost in build performance! It also helps to keep feature modules contained and each module can use whichever UI design pattern (I presented this talk where I mentioned that) it prefers from an isolated module.