NewsApp is an iOS app built with UIKit + MVVM + Coordinator pattern to browse news using the NewsAPI service.
Tab-based experience with 3 modules:
Home(Everything): keyword search across all articles, voice input search, and sort by relevancy/popularity/published date.Heading(Top Headlines): top headlines with category filtering and quick access to in-app language/country filters.Source: browse news providers by category/country/language and jump directly to the Home tab pre-filtered by source.- Pagination support for article/source listing.
- In-app Safari reader for opening articles and source websites.
- Persistent language/country preferences using
UserDefaults.
Coordinators: navigation wiring for each tab (EverythingCoordinator,TopHeadingCoordinator,SourceCoordinator).ViewModel: API orchestration and UI state.SupportingFiles/NetworkManager.swift: generic async networking layer using Alamofire.Model: decodable response models for articles and sources.
- Create
NewsApp/NewsApp/configuration.xcconfig. - Copy values from
NewsApp/NewsApp/configuration_example.xcconfig. - Set your NewsAPI key in
API_KEY. - Build and run from Xcode.
Example configuration.xcconfig:
TRANSPORT_PROTOCOL_TYPE = https:
BASE_URL = newsapi.org
API_KEY = <YOUR_NEWSAPI_KEY>
The project includes a system Settings app entry at:
NewsApp/Settings.bundle/Root.plistNewsApp/Settings.bundle/About.plist
Root.plist: a root group with anAboutchild pane.About.plistexposes read-only title/value rows for:App Name(about.app_name)App Version(about.app_version)Powered By(about.apiEndpoint)Showing News of region(country)
- In
AppDelegate, values forabout.app_name,about.app_version, andabout.apiEndpointare populated at launch from app bundle/configuration values. countrymaps to the sameUserDefaultskey used by the in-app settings panel (SettingPageController+UserDefaultsData.country), so the selected region is reflected inSettings.bundle.
Search news by keyword, apply sort options, and open article details in Safari.
Browse top headlines with category filtering and region/language-aware results.
Explore sources, view source details, and jump into source-specific article search.


