Everything you need to install, run, configure, and test FeedReader.
For the Swift Package (FeedReaderCore), you need Swift 5.9+ and the iOS 14+ deployment target.
FeedReader.xcodeproj in XcodeIf you want to use FeedReaderCore in your own project:
Or in Xcode: File โ Add Package Dependencies โ enter the repository URL.
On first launch, FeedReader loads BBC World News. Stories appear in a table view with titles, descriptions, and thumbnails. Tap any story to see the full description and a link to the original article.
Tap the ๐ก antenna icon in the navigation bar to open the Feed Manager:
Pull down on the story list to reveal the search bar. Search queries filter across story titles and descriptions in real time.
When the device goes offline:
To change the feeds available on first launch, edit the presets array in Feed.swift:
FeedReader.xcodeproj in Xcode| Suite | Coverage | Description |
|---|---|---|
BookmarkTests | 20 cases | Bookmark add, remove, toggle, persistence, deduplication |
FeedManagerTests | 35 cases | Feed CRUD, preset loading, persistence, validation |
StoryTests | Core model | NSCoding serialization, equality, hash |
StoryModelTests | Extended | Edge cases, HTML stripping, URL validation |
SearchFilterTests | Search | Title/description matching, empty queries, special characters |
XMLParserTests | Parser | Valid XML, malformed XML, missing fields, encoding |
ViewControllerTests | UI | View controller lifecycle, table view data source |
FeedReaderCoreTests | SPM | Swift Package module integration tests |
XML test fixtures are in FeedReaderTests/:
storiesTest.xml โ Standard RSS feed with valid storiesmultiStoriesTest.xml โ Multiple stories for pagination/dedup testingmalformedStoriesTest.xml โ Malformed XML for error handling testsstoriesTest.plist โ NSCoding serialized test dataFeedReader uses GitHub Actions for continuous integration:
| Workflow | Trigger | What It Does |
|---|---|---|
ci.yml | Push / PR to master | Build + test on macOS with Xcode |
codeql.yml | Push / PR / schedule | CodeQL security scanning for Swift |
pages.yml | Push to master (docs/) | Deploy documentation site to GitHub Pages |
docker.yml | Push / PR | Docker image build verification |