ONews is a simple iOS application, it retrieves news from free API [newsapi.org] and display it for the user, and allow the user to view article details and save it for later. In the first launch, User choose language and country, then he will be allowed to select 3 categories as preferences. Finally, The user can continue to the application and discover news and App. Features.
Using newsapi.org
pod install
- SWIFT
- Alamofire-based Network Layer
- VIPER Architecture Pattern, Using VIPER Module Generator
- Coordinator Pattern For Handling Navigation
- Delegation Pattern For Communication between Module entities
- Kingfisher For Images Downloading and Caching
- XIB Files
- Localization [English, Arabic]
- Realm For Caching Preferred Articles using [Generic Realm Manager]
- UserDefaults for Storing simple data using [Generic UserDefaults Manager]
- Adobe XD For Designing The UI
- Code Refactoring
- Use Repository Pattern
- Dark Mode Support
- Unit Tests
- Enhance UI/UX
Launch Screen | Select Language | Select Country | Select Preferences |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
Home | Article Details | Saved News | Search |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
Launch Screen | Select Language | Select Country | Select Preferences |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
Home | Article Details | Saved News | Search |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
-
App
- Localizables
- Configuration
- Core
- Extensions
- Resources
- Fonts
- SupportingFiles
- UIComponents
- Common
- Externals
- Coordinator
- Networking
- DataPersistence
- Realm Manager
- UserDefaults Manager
-
Modules
- Onboarding [Select Language and Country]
- Protocols
- View
- Interactor
- Presenter
- Router
- Onboarding [Select Preferences]
- Protocols
- View
- Interactor
- Presenter
- Entity
- Router
- Home
- Protocols
- View
- Interactor
- Presenter
- Entity
- Router
- ArticleDetails
- Protocols
- View
- Interactor
- Presenter
- Entity
- Router
- Saved
- Protocols
- View
- Interactor
- Presenter
- Router
- Onboarding [Select Language and Country]
Created by
- Taha Mahmoud LinkedIn
Please don't hesitate to ask any clarifying questions about the project if you have any.