A clean and modern iOS app that lets you explore trending GitHub repositories, search projects, and save your favorites — all with offline support.
Built with UIKit, MVVM, Clean Architecture, Combine, async/await, and CoreData.
- 🔥 Browse trending GitHub repositories
- 🔎 Search repositories with debounced input
- ⭐ Mark repositories as favorites
- 💾 Persist favorites locally (offline support)
- 🌐 Automatically reacts to network changes
- 📄 View detailed information about each repository
The project follows a simple and scalable Clean Architecture structure:
Presentation (UIKit + MVVM)
↓
Domain (UseCases)
↓
Data (Repository)
↓
Local (CoreData) + Remote (GitHub API)
This ensures:
- Clear separation of concerns
- Testable business logic
- Easy scalability
- Maintainable codebase
The app uses an xcconfig file to manage environment variables.
Create a Config.xcconfig file and add:
GITHUB_BASE_URL = https://api.github.com
GITHUB_TOKEN = YOUR_GITHUB_TOKEN_HERE
Then:
- Assign the file in Project → Build Settings → Base Configuration.
✅ The required keys (
GITHUB_BASE_URLandGITHUB_TOKEN) are already added toInfo.plistand committed to version control.You do not need to modify
Info.plistagain after cloning the project. The values will be injected automatically fromConfig.xcconfigat build time.
- UIKit
- Combine
- Async/Await
- CoreData
- Clean Architecture (MVVM)
- URLSession
- Reactive search with Combine + async cancellation
- Explicit favorite state handling
- Upsert logic for safe persistence
- Independent navigation stacks per tab
- Pagination
- Pull-to-refresh
- Unit & UI tests
- SwiftUI version
Sridhar Prasath