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.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
- 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
This project uses Swift Concurrency features including Sendable protocol conformance.
- Swift Concurrency is available since Xcode 13 (Swift 5.5)
Sendablesupport 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
- π 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)
- Different paging strategies for users (based on
- β»οΈ Smooth continuous loading (infinite scroll) for both:
- User list screen
- User detail screen with repositories
This project is designed following Clean Architecture principles as outlined by Uncle Bob:
- Separation of concerns between domain, data, and presentation layers
- Clear boundaries to make code testable, maintainable, and scalable
- Inspired by The Clean Architecture (Uncle Bobβs blog)
Modules are organized as Swift Packages, modeled after Appleβs Backyard Birds sample:
- Each module encapsulates a feature or layer
- Promotes modularity and reusability
- Inspired by Backyard Birds Sample - Apple Developer Documentation
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.





