yusufkildan / rss-reader

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Swift Platform

Foundation

  • Сleanness 💎 - Project is built using SOLID principles.
  • Stability ✊ - No memory leaks, thread safe, no crash
  • Reuse 🤹‍ - UI is implemented programmatically too. No Storyboard or Xibs.

Overview

Simple RSS Reader app. Youtube preview:

IMAGE ALT TEXT HERE

Expected

  • Select multiple RSS feeds & persist.
  • If the user already has a selection, don't show the RSS selection screen on app launch.
  • Fetch articles from the selected feeds, and persist them.
  • Show the articles in reverse chronological order.
  • When user clicks an article from the list, show the news article in an in-app browser
  • Pull to refresh mechanism

Bonus

  • Add a feature to fade articles once they are read.
  • Add a searchbar to the News List Screen. User should be able to filter articles by title.

Requirements

  • iOS 11.0+
  • Xcode 10.0+
  • Swift 5.0+

Technical Choices

  • No Storyboards or Xibs - UI is implemented programatically. I'dont like storyboards beause of some disadventages. Disadventages: not reusable, merge conflicts are difficult, slow, tricky code reviews etc.
  • All data persisted at documents directory - There can be many solutions for caching in iOS platforms, like SQLite, CoreData or Realm, or other 3rd libraries. But I deciced to store my data as a JSON data at documentDirectory. I think it is more easier way to handle cache data, there is no need to add SQLite for small projects. To encode / decode my classes I've used Codable protocol.
  • Kingfisher - I've used Kingfisher pod to download & cache images. https://github.com/onevcat/Kingfisher
  • MVC Architecture

Feedback

If you have any questions or suggestions, feel free to open issue just at this project.

References

About


Languages

Language:Swift 99.5%Language:Ruby 0.5%