NYTimes
NY Times is a Minimal News newspaper_roll iOS application built to describe the use of SwiftSoup and CoreData with SwiftUI.
Features
Articles Loading | Browse by Category |
---|---|
Bookmark a Article using 3D Touch. | Deleting bookmarks is just one swipe away |
⚙️ Requirements
iOS 14+
Xcode 12 beta 3
:warning: This App is compiled with Xcode 12 beta 3. Using other versions of xcode might break the project.
? What you can learn?
- You can learn Technologies like
- SwiftUI
- CoreData
- Combine
- Web Scraping
- You can learn various Design patterns from this project such as
- Dependency injection
- Repository
- Singleton
- Observers
- You can learn MVVM Two way binding Architecture for SwiftUI with Combine framework
? Technical Background
- NYTimes App was made using SwiftUI as the Core interface with Two Way Binding MVVM Architecture using Combine framework.
- CoreData is used to store the Article Bookmarks offline in device so that the user can access it at later time.
- SwiftSoup is used to scrap the required details from the NYTimes website.
- The User interface of this app mostly uses the inbuilt iOS components to keep the User experience close to the native feel.
- Bookmarks can be added as easy as a 3d-touch from Homescreen or a tap in bookmark icon in the detailed article screen.
- This project was built in the mindset of modularity and good coding patterns. Multiple design patterns like Dependency injection, Repository pattern, Singleton Pattern etc.
? Dependencies
This project uses SPM (Swift Package Manager) as Dependency manager.
Project Structure
NYTimes # Root Group
.
├── Utilities # Utilities for Fetching data ans Scraping HTML
├── Globals # Contains App constants
├── Persistence # Coredata files. Contains coredata model and Singleton for ManagedObjectContext
├── Views # SwiftUI Views
├── Repository # Repository for Coredata
├── ViewModel # Viewmodels for SwiftUI Views
├── Model # Model files
| └── Coredata Model # Coredata model subclasses
|
└── Supporting files # Misc. files like Appdelegate, SceneDelegate.
Architecture
This app uses MVVM architecture.
? Contact
Drop a mail to:- [email protected]