An open API service indexing awesome lists of open source software.

https://github.com/edintwi/ghfollowers

Sean Allen's take home project course app
https://github.com/edintwi/ghfollowers

mvc-architecture swift uikit user-defaults

Last synced: 8 months ago
JSON representation

Sean Allen's take home project course app

Awesome Lists containing this project

README

          

## 📚 Description

This project is an iOS application named `GHFollowers` that allows users to search GitHub profiles and view their followers. It also offers the functionality to add users to a favorites list for quick access. The application is built programmatically without Storyboards, using `UIKit` and `Auto Layout` to create a responsive and dynamic user interface.

**Key Features:**

* **GitHub User Search:** Allows users to input a GitHub username and search for it.
* **Follower List Display:** Shows a list of a GitHub user's followers.
* **Pagination:** Loads more followers as the user scrolls down the list.
* **Detailed User Information:** Tapping on a follower displays detailed information about that user, including:
* Avatar image.
* Username and real name (if available).
* Location (if available).
* Bio (if available).
* Number of public repositories, public gists, followers, and following.
* GitHub account creation date.
* **Safari Integration:** Allows opening a user's GitHub profile in Safari.
* **Favorites List:** Users can add or remove users from a locally persisted favorites list.
* **Custom Alerts:** Uses a custom `UIAlertController` to display error messages and user feedback.
* **Empty States:** Displays a friendly message when there are no followers to show or the favorites list is empty.
* **Image Caching:** Utilizes `NSCache` to cache avatar images, improving performance.
* **Programmatic UI:** The entire user interface is built programmatically using `Auto Layout`.

## 📸 Screenshots

Here are some screenshots of the application in action:

| Search Screen | Followers List | User Info | Favorites List |
| :--------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------: |
| ![Simulator Screenshot - iPhone 16 Pro - 2024-12-06 at 12 15 12](https://github.com/user-attachments/assets/db8e10f5-b8db-4deb-8e9e-6510c9177ea7) | ![Simulator Screenshot - iPhone 16 Pro - 2024-12-06 at 12 15 25](https://github.com/user-attachments/assets/45344180-0df5-4d79-ae00-af8dbc8cc039) | ![Simulator Screenshot - iPhone 16 Pro - 2024-12-06 at 12 16 12](https://github.com/user-attachments/assets/e4ea7ec7-0901-4f59-9769-ee99ded38100) | ![Simulator Screenshot - iPhone 16 Pro - 2024-12-06 at 12 16 36](https://github.com/user-attachments/assets/b58c701b-3430-4219-9e10-56420a69edf3) |