Skip to content

sridharprasath94/DevDigest-iOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 

Repository files navigation

DevDigest

A clean, fast iOS app for staying up to date with the latest developer and technology news — powered by the Hacker News Algolia API.


Overview

DevDigest delivers a curated feed of top Hacker News stories with a minimal, distraction-free experience. Stories are cached locally so you can browse even when offline, and favourites are always just one tap away.


Features

  • Trending Feed — Paginated list of top stories with pull-to-refresh and infinite scroll
  • Search — Debounced, real-time search across Hacker News stories
  • Favourites — Bookmark articles; favourited stories rise to the top of the feed
  • Offline Support — Full local caching via CoreData; content is available without a connection
  • Auto-Refresh — Automatically refreshes when network connectivity is restored
  • In-App Reading — Articles open in Safari without leaving the app
  • Light & Dark Mode — Fully adaptive UI

Architecture

Built on Clean Architecture with three distinct layers:

Presentation → Domain → Data
  • Presentation: UIKit ViewControllers, MVVM ViewModels, Combine bindings
  • Domain: Use cases, repository protocols, pure Swift models, DomainError
  • Data: URLSession API client, CoreData local store, repository implementation

Dependency injection is handled manually through AppContainer with no third-party libraries.

Data Flow

Hacker News API → NewsRemoteDataSource → NewsRepositoryImpl → CoreData
CoreData → NSFetchedResultsController → Combine Publisher → ViewModel → ViewController

Tech Stack

Category Technology
Language Swift
UI UIKit — 100% programmatic
Async Swift Concurrency (async/await)
Reactive Combine
Persistence CoreData
Networking URLSession
Network Monitoring Network framework (NWPathMonitor)
External Dependencies None
Minimum iOS 15.0

Screens

Screen Description
Trending Paginated news feed with pull-to-refresh, search, and favourite toggle
Favourites Saved articles sorted by favourite status then recency
Detail Article metadata with open in Safari

Project Structure

DevDigest/
├── App/                    # AppContainer (DI), AppConfig
├── Core/
│   ├── Constants/          # Strings, SFSymbols
│   ├── Design/             # Theme (colors, typography, layout)
│   └── Extensions/         # UIViewController toast, String timeAgo
├── Domain/
│   ├── Entities/           # News
│   ├── Repositories/       # NewsRepository (protocol)
│   ├── UseCases/           # ObserveTrending, ObserveFavourite, Refresh,
│   │                       # LoadNextPage, Search, ToggleFavourite
│   ├── Services/           # NetworkMonitoringProtocol
│   └── Error/              # DomainError
├── Data/
│   ├── Network/            # APIClient, HackerNewsEndpoint,
│   │                       # NetworkMonitorService, NetworkErrorMapper
│   ├── Remote/             # NewsRemoteDataSource
│   ├── Local/              # CoreDataStack, NewsLocalDataSource
│   ├── Dto/                # NewsDTO, NewsResponseDTO
│   └── Repositories/       # NewsRepositoryImpl
└── Presentation/
    ├── trending/           # TrendingNewsViewController + ViewModel
    ├── favourites/         # FavouriteNewsViewController + ViewModel
    ├── newsdetail/         # NewsDetailViewController
    └── common/             # NewsCell

API

Uses the public Hacker News Algolia API — no API key required.

Endpoint Description
GET /search?tags=front_page&page={n} Trending front page stories
GET /search?query={q}&tags=story&page={n} Search stories by keyword

Getting Started

  1. Clone the repository
  2. Open DevDigest.xcodeproj in Xcode 15+
  3. Select a simulator or device and run

No additional setup required.

About

Modern iOS news reader built with Swift, Clean Architecture, and UIKit. Fetches developer stories from the Hacker News Algolia API with CoreData caching and reactive UI using Combine.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages