Skip to content
This repository was archived by the owner on Dec 14, 2025. It is now read-only.
/ StarNews Public archive

Modular space news app using Swift Concurrency, SwiftUI, and MVVM-C with clean architecture.

License

Notifications You must be signed in to change notification settings

BaherTamer/StarNews

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cover


📰 Star News

Xcode: 26.0+

A clean archeticure modular iOS space news app built with SwiftUI and powered by Swift Concurrency. I developed it as a hands-on learning experience to solidify and apply the technical concepts I’ve been studying.

By combining a real-world use case with modern development practices, this app serves as both a portfolio project to showcase my technical skills and a personal milestone in my iOS development learning journey.


📱 Demo

Watch the demo video on YouTube.


🖼️ Screenshots

Articles List Article Details Search Suggestions Search Results
Articles List Article Details Search Suggestions Search Results

🌟 Features

  • Fetching and parsing data from a remote API
  • Articles listing with pagination support
  • Article details view with the ability to share the article link or open the article in Safari
  • Displaying search suggestions
  • Showing search results based on user input
  • Caching network responses to reduce redundant API calls
  • Handling various view states: loading, empty, error, and loaded
  • Displaying a shimmering loading effect while data is being fetched

🧩 Diagrams

These diagrams where generated using 🤖 Phind AI.

🔺 High-Level Diagram

Modularization Diagram

🔻 Low-Level Diagram

MVVM-C Clean Architecture Diagram


🗂️ Modules

  • SNCache: Responsible for handling local data caching for minimizing repeated network requests.
  • SNCore: Responsible for containing shared abstractions, protocols, and utilities used across multiple modules.
  • SNDesignSystem: Responsible for providing shared assets, styles, and design constants.
  • SNNetwork: Responsible for handling all networking operations, such as sending API requests, managing endpoints, and parsing responses.
  • Shared: Responsible for hosting utilities, generic views, helpers, and common code that is used in multiple feature modules.
  • Feature Modules: Each module represents a distinct feature in the app and follows a consistent structure based on Clean Architecture principles:
    • Divided into Data, Domain, and Presentation layers.
    • Implements the MVVM-C (Model-View-ViewModel-Coordinator) design pattern.
    • Built to be self-contained and modular for scalability and testability.
    • Includes unit testing across ViewModels, UseCases, Repositories, and Mappers.

📦 Dependencies

This project uses SPM (Swift Package Manager) as dependency manager.

  • Kingfisher: Responsible for downloading and caching images from the web

☁️ API

This project uses Spaceflight News REST API v4.


🛠️ Tech Stack

  • Swift 6
  • SwiftUI
  • SPM (Swift Package Manager)
  • Swift Concurrency
  • Swift Testing
  • Modularization
  • Clean Architecture
  • MVVM-C (Model-View-ViewModel-Coordinator) Design Pattern
  • Factory Design Pattern
  • UIKit-Based Coordinator Pattern
  • Pagination
  • NSCache
  • OSLog

About

Modular space news app using Swift Concurrency, SwiftUI, and MVVM-C with clean architecture.

Topics

Resources

License

Stars

Watchers

Forks

Languages