FastNews is a news application built using MVVM-C (Model-View-ViewModel-Coordinator) architecture with RxSwift. This project serves as a demonstration of integrating RxSwift within an MVVM-C pattern while showcasing dependency injection, navigation handling, and synchronized API calls.
-
Three TabBar Sections:
- Posts: Fetches and displays posts from JSONPlaceholder.
- Sources: Allows users to select different news sources.
- Categories: Enables category-based filtering for news.
-
RxSwift & Concurrency Handling
- The Posts tab demonstrates a synchronized API call to fetch posts at launch.
- The Splash Screen is locked until the data is fully retrieved and stored in
UserDefaults.
-
Dependency Injection
- Implemented using Swinject for better modularity and testability.
-
Navigation with RxFlow
- Steppers in the ViewModel communicate with
FlowandStepperclasses for seamless navigation.
- Steppers in the ViewModel communicate with
-
Code Quality & Best Practices
- SwiftLint ensures consistent and clean coding style.
- RxDataSources is used for efficiently managing UI updates.
- RxSwift & RxCocoa – Reactive programming for handling asynchronous tasks and data binding.
- RxDataSources – Efficiently managing and updating UITableView & UICollectionView.
- Swinject – Lightweight dependency injection framework.
- RxFlow – Coordinating navigation flow within the MVVM-C pattern.
- UserDefaults – Storing fetched posts locally.
- SwiftLint – Enforcing coding style best practices.
- The
mainbranch uses CocoaPods for dependency management. - The
task/migrate-to-spmbranch contains migration to Swift Package Manager (SPM). - Minimum Deployment Target: iOS 17.6 in
task/migrate-to-spm
| Posts Tab | Sources Tab | Categories Tab |
|---|---|---|
![]() |
![]() |
![]() |
- UI/UX Enhancements for a more visually appealing experience.
- Implement offline mode using CoreData or Realm.
- Expand the news API integration for real-world data.


