TVToday
TVToday copied to clipboard
iOS TV Shows app with TMDb Api. Combine, MVVM + Coordinator. Modular Architecture. Swift Package Manager
TVShows iOS app built with Combine, using the TMDb API.
What I'm working on
July, 2022
- ⏳ Solve TODO's (wip
June, 2022
- ✅ Localize UI and requests to endpoint
May, 2022
- ✅ Support Dynamic Type
April, 2022
- ✅ Improve UseCases and Repositories use (Clear separation between Repositories and DataSources
- ✅ Moving from Realm to Core Data
- ✅ Add demo apps for feature modules.
- ✅ Fix testability on Schedulers
March, 2022
- ✅ Migrate from RxDataSources to UICollectionViewDiffableDataSource
- ✅ Migrate from RxSwift to Combine
About modularization
In this project, I show you an approach to how you could structure your app.
In a real big app, you will have more and big dependencies.
During development time, compiling the whole app could take quite an amount of time.
Currently, the app is divided into 22 modules with 06 feature modules. See
Each feature module has its own demo target with a custom demo entry point.
So you need to leverage your Unit tests, Snapshot Tests and Demo targets to save your time and boost your productivity.
Built with
- Swift 5
- Combine
- Clean + Modular Architecture
- Coordinator Pattern.
- MVVM
- Dependency Injection
- Kingfisher
- Core Data
- KeychainSwift
- Swift Package Manager
- Dark Mode support
- Dynamic Type support
- English and Spanish Localized
Requirements
- Xcode 13.0+
Getting started
- Clone this repository.
- Open
App/TVToday.xcodeproj
and have fun.
Snapshot Tests
Last snapshot tests were created using Xcode 13.2.1
, with Simulator iPhone SE (2nd generation) iOS 15.2
Project evolution
- Monolith: https://github.com/rcaos/TVToday/releases/tag/v0.3.0
- RxSwift + CocoaPods : https://github.com/rcaos/TVToday/releases/tag/v.0.4.0
- RxSwift + SPM + Tuist: https://github.com/rcaos/TVToday/releases/tag/v0.5.0
- Combine + SPM + Tuist https://github.com/rcaos/TVToday/releases/tag/v0.6.0
- Current branch: Combine + SPM
Screenshots
Dynamic Type
Dark Mode
Light Mode
Author
Jeans Ruiz, [email protected]