{"id":23148306,"url":"https://github.com/edintwi/ghfollowers","last_synced_at":"2025-10-25T11:52:10.917Z","repository":{"id":266862838,"uuid":"899584099","full_name":"edintwi/GHFollowers","owner":"edintwi","description":"Sean Allen's take home project course app","archived":false,"fork":false,"pushed_at":"2024-12-06T15:17:52.000Z","size":1323,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-09T23:33:06.524Z","etag":null,"topics":["mvc-architecture","swift","uikit","user-defaults"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/edintwi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-06T15:12:16.000Z","updated_at":"2024-12-08T12:21:34.000Z","dependencies_parsed_at":"2024-12-06T16:38:52.448Z","dependency_job_id":null,"html_url":"https://github.com/edintwi/GHFollowers","commit_stats":null,"previous_names":["edintwi/ghfollowers"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edintwi%2FGHFollowers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edintwi%2FGHFollowers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edintwi%2FGHFollowers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edintwi%2FGHFollowers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/edintwi","download_url":"https://codeload.github.com/edintwi/GHFollowers/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247189661,"owners_count":20898692,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mvc-architecture","swift","uikit","user-defaults"],"created_at":"2024-12-17T17:10:08.412Z","updated_at":"2025-10-25T11:52:10.900Z","avatar_url":"https://github.com/edintwi.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"## 📚 Description\n\nThis 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.\n\n**Key Features:**\n\n* **GitHub User Search:** Allows users to input a GitHub username and search for it.\n* **Follower List Display:** Shows a list of a GitHub user's followers.\n* **Pagination:** Loads more followers as the user scrolls down the list.\n* **Detailed User Information:** Tapping on a follower displays detailed information about that user, including:\n    * Avatar image.\n    * Username and real name (if available).\n    * Location (if available).\n    * Bio (if available).\n    * Number of public repositories, public gists, followers, and following.\n    * GitHub account creation date.\n* **Safari Integration:** Allows opening a user's GitHub profile in Safari.\n* **Favorites List:** Users can add or remove users from a locally persisted favorites list.\n* **Custom Alerts:** Uses a custom `UIAlertController` to display error messages and user feedback.\n* **Empty States:** Displays a friendly message when there are no followers to show or the favorites list is empty.\n* **Image Caching:** Utilizes `NSCache` to cache avatar images, improving performance.\n* **Programmatic UI:** The entire user interface is built programmatically using `Auto Layout`.\n\n## 📸 Screenshots\n\nHere are some screenshots of the application in action:\n\n| Search Screen | Followers List | User Info | Favorites List |\n| :--------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------: |\n| ![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) |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedintwi%2Fghfollowers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedintwi%2Fghfollowers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedintwi%2Fghfollowers/lists"}