Skip to content

khanboy1989/FastNews

Repository files navigation

📱 FastNews

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.

🚀 Features

  • 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 Flow and Stepper classes for seamless navigation.
  • Code Quality & Best Practices

    • SwiftLint ensures consistent and clean coding style.
    • RxDataSources is used for efficiently managing UI updates.

🛠 Technologies & Frameworks

  • 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.

📂 Branches & Package Management

  • The main branch uses CocoaPods for dependency management.
  • The task/migrate-to-spm branch contains migration to Swift Package Manager (SPM).
  • Minimum Deployment Target: iOS 17.6 in task/migrate-to-spm

📷 Screenshots

Posts Tab Sources Tab Categories Tab
Posts Sources Categories

🔧 Future Improvements

  • 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.

About

Updated branch is Develop.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors