Skip to content

sridharprasath94/GithubTrending-iOS

Repository files navigation

📱 GitHub Trending iOS App

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.


🚀 What This App Does

  • 🔥 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

🧠 Architecture Overview

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

🔐 Configuration

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

⚠️ Do not commit your real GitHub token.

Then:

  1. Assign the file in Project → Build Settings → Base Configuration.

✅ The required keys (GITHUB_BASE_URL and GITHUB_TOKEN) are already added to Info.plist and committed to version control.

You do not need to modify Info.plist again after cloning the project. The values will be injected automatically from Config.xcconfig at build time.


🛠 Tech Stack

  • UIKit
  • Combine
  • Async/Await
  • CoreData
  • Clean Architecture (MVVM)
  • URLSession

💡 Highlights

  • Reactive search with Combine + async cancellation
  • Explicit favorite state handling
  • Upsert logic for safe persistence
  • Independent navigation stacks per tab

📌 Future Improvements

  • Pagination
  • Pull-to-refresh
  • Unit & UI tests
  • SwiftUI version

👨‍💻 Author

Sridhar Prasath

About

Explore trending GitHub repositories, search projects, and save favorites — built with UIKit, MVVM, and Clean Architecture.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages