• Stars
    star
    115
  • Rank 305,916 (Top 7 %)
  • Language
    Swift
  • License
    MIT License
  • Created about 5 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

iOS TV Shows app with TMDb Api. Combine, MVVM + Coordinator. Modular Architecture. Swift Package Manager

License: MIT Platforms Swift Version Swift Package Manager compatible

TVShows iOS app built with Combine, using the TMDb API.

What I'm working on

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

  1. Xcode 13.0+

Getting started

  1. Clone this repository.
  2. Open App/TVToday.xcodeproj and have fun.

Snapshot Tests

Last snapshot tests were created using an Apple Silicon with Xcode 14.2, Simulator iPhone SE (3rd generation) iOS 16.2

⚠️ Warning: Snapshots must be compared using the exact same simulator that originally took the reference to avoid discrepancies between images.

Project evolution

Screenshots

Dynamic Type

Dark Mode

Light Mode

Author

Jeans Ruiz, [email protected]