finds.dev← search

// the find

jdisho/Papr

★ 1,142 · Swift · Apache-2.0 · updated Sep 2020

🌁 An Unsplash app for iOS

Papr is an unofficial Unsplash iOS client built explicitly as a learning project for RxSwift and MVVM+Coordinator. It covers the full Unsplash API surface — browsing, search, collections, user profiles, liking, downloading. The target audience is iOS developers studying reactive architecture patterns, not people who actually want an Unsplash app.

The MVVM+Coordinator split is clean — ViewModels have no UIKit imports, Coordinators own all navigation, which makes the pattern easy to trace. RxSwift usage is thorough: RxDataSources for collection views, custom Rx extensions for UIRefreshControl and scroll pagination, Action for button bindings. The service layer uses protocol types (PhotoServiceType, SearchServiceType), so swapping implementations or writing tests is straightforward. Pinterest-style waterfall layout is implemented from scratch with a custom Rx delegate proxy, which is a non-trivial piece of work done properly.

Dead project — last push was September 2020, Swift 5.1, no async/await, no SwiftUI. RxSwift itself has largely lost ground to Combine and async/await since then, so this is a history lesson not a pattern to copy today. The test suite is a single empty file (PaprTests.swift), which means the 'educational resource' framing doesn't extend to showing how to actually test reactive ViewModels. CocoaPods dependency means newer Xcode versions will likely fight you before you see a single line of app code.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →