Developer foundations · iOS

Fast, resilient, useful.

A focused UIKit project built around live data, deliberate states, and an interface that stays clear under pressure.

GitHub logo
Project
GitHub Followers
Role
Design · iOS development
Stack
Swift · UIKit
Timeline
2 weeks · 2024

Project overview

A small app with real product constraints.

I built GitHub Followers to make follower relationships quick to understand while learning how an iOS interface should behave around live API data.

The work brought networking, caching, pagination, search, and reusable UIKit structure into one compact experience.

Working app

See the complete flow.

A walkthrough of the follower grid, search, navigation, and interface states working together.

GitHub Followers running on iOS.

Working with live data

Five systems behind the interface.

  1. Fetch

    Pull profile images, usernames, and follower counts from the GitHub API.

  2. Cache

    Store images with NSCache to avoid repeated network calls.

  3. Update

    Use UICollectionViewDiffableDataSource for clear, efficient collection updates.

  4. Continue

    Load the next page only after scrolling crosses the content threshold.

  5. Find

    Make a growing follower list easy to search with UISearchController.

Designing every state

The successful path was not the only path.

The interface accounts for waiting, empty results, and individual network errors—not only a successful response.

Loading

Show visible progress while the network request is active.

Empty

Give an empty result its own useful, intentional screen.

Error

Match the message to the individual network failure.

Building reusable structure

Native constraints. Reusable structure.

Layouts use safe-area-aware constraints. Child view controllers keep sections reusable and connected to UIKit lifecycle behavior.

Native layout

Auto Layout constraints respect each view’s safe area.

Reusable sections

Child view controllers keep interface pieces self-contained.

Clear outcomes

Success meant smooth navigation and fewer unnecessary requests.

Two focused weeks

One complete loop from API to interface.

Week one was development. Week two was testing and launch.

See more work