Skip to content

a-apple/clean-github-users

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

34 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

GitHub Users

A SwiftUI iOS app for exploring GitHub users and their repositories. Built with modern Apple technologies and best practices for async data loading and UI responsiveness.


🌞 Light Mode


πŸŒ™ Dark Mode


πŸ›  Technologies Used

  • Xcode 16.4
  • SwiftUI
  • Alamofire – for handling HTTP networking
  • Combine – for reactive data flow
  • SDWebImageSwiftUI – for efficient image loading and caching
  • Swift Concurrency + Combine – used together for reactive flow and async bindings in SwiftUI

🧩 Compatibility Notes

This project uses Swift Concurrency features including Sendable protocol conformance.

  • Swift Concurrency is available since Xcode 13 (Swift 5.5)
  • Sendable support and strict enforcement is more mature and stable in Xcode 16.4
  • Using older Xcode versions (14 or 15) may not able to run this project properly

πŸš€ Features

  • πŸ” Browse GitHub users with avatar, login, and ID
  • πŸ‘€ View user details, including their public repositories
  • 🌐 Open repositories directly in a WebView
  • πŸ”„ Implements GitHub paging:
    • Different paging strategies for users (based on since) and repositories (pagination)
  • ♻️ Smooth continuous loading (infinite scroll) for both:
    • User list screen
    • User detail screen with repositories

πŸ— Architecture & Project Structure

This project is designed following Clean Architecture principles as outlined by Uncle Bob:

Modules are organized as Swift Packages, modeled after Apple’s Backyard Birds sample:


⚠️ Simulator Issue (Known Limitation)

While running Unit tests, I encountered an issue on the iPhone 16 simulator. I would suggest to change to other simulators. In my case, it worked with iPhone 16 Pro simulator.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift 100.0%