An elegant iOS application that displays top news headlines fetched from an API. The app is built using the MVVM architecture and Core Data for offline caching. It supports bookmarking, searching, offline persistence, and smooth animations.
- π‘ Fetch Top Headlines from API
- π Search functionality
- π Dark Mode support
- π₯ Offline-first design (CoreData backed)
- π Bookmark and Unbookmark articles
- π§ MVVM architecture for scalability
- π§Ή Efficient Core Data cleanup using NSBatchDeleteRequest
- π± UITableView with dynamic heights and smooth UI
- π§ Open articles in SFSafariViewController
- π Pull to Refresh
- π Case-insensitive search using NSPredicate
- π Kingfisher for image caching
- π NSFetchedResultsController for efficient state updates
- Core Data: For local persistent storage
- Kingfisher: For image downloading and caching
- NSFetchedResultsController: To observe changes in bookmarks
- NSBatchDeleteRequest: To efficiently clean old articles
- SFSafariViewController: To open full news in browser
- URLSession: Used for networking via APIService abstraction
- Alamofire (Optional): Can be used for advanced networking
- SDWebImage (Optional): Alternative to Kingfisher if preferred
MVVM layered with Repository and DataStore pattern for separation of concerns and testability.
ViewController
β
ViewModel
β
Repository
β
DataStore + APIService
- iOS 15.0+
- Xcode 14+
- Clone the repo:
git clone https://github.com/Akash-R97/ReaderApp.git
cd ReaderApp-
Open
ReaderApp.xcodeprojin Xcode -
Run the project on a simulator or device.
π§ Created by Akash Razdan. Feel free to contribute!