ios-architecture alternatives and similar libraries
Based on the "Architecture Patterns" category.
Alternatively, view ios-architecture alternatives based on common mentions on social networks and blogs.
-
The Composable Architecture
A library for building applications in a consistent and understandable way, with composition, testing, and ergonomics in mind. -
Clean Architecture for SwiftUI + Combine
SwiftUI sample app using Clean Architecture. Examples of working with CoreData persistence, networking, dependency injection, unit testing, and more. -
iOS-Viper-Architecture
This repository contains a detailed sample app that implements VIPER architecture in iOS using libraries and frameworks like Alamofire, AlamofireImage, PKHUD, CoreData etc. -
Spin
Spin aims to provide a versatile Feedback Loop implementation working with the three main reactive frameworks available in the Swift community (RxSwift, ReactiveSwift and Combine) -
VIPER Module Generator
A Swift 4.2 VIPER Module Boilerplate Generator with predefined functions and a BaseViewProtocol.
SaaSHub - Software Alternatives and Reviews
Do you think we are missing an alternative of ios-architecture or a related project?
README
ios-architecture
WIP
👷 🧱 🧰 🛠️ Demystifying MVC, MVVM, VIPER, RIBs and many others A collection of simple one screen apps to showcase and discuss different architectural approaches in iOS
<!-- Last commit --> <!-- Open issues --> <!-- Swift version --> <!-- Platform --> <!-- License -->
Built with ❤︎ by Pawel Krawiec
Apps
Multi-screen examples | Single screen examples |
---|---|
[app-ui](multiscreen-ui.gif) | [app-ui](app-ui.gif) |
Architectures
This repository hosts each sample app in separate directory.
:star: Click the title of example to see detailed README information about specific architecture.
Multiple screens app examples
🔒 ** If you want to login, use username iostest
and password test
.**
If you're a [themoviedb](themoviedb.com) user, please use your own account and API key!
Example | Description |
---|---|
[tmdb-mvvm-rxswift-pure](tmdb-mvvm-rxswift-pure) | Uses RxSwift and observables as binding mechanism between ViewController and ViewModel . Also, it uses simple navigator pattern for transitions between screens. (README in progress) |
Single screen app examples
The purpose of having examples with single page applications is highlighting connection between view code and business logic code.
Example | Description |
---|---|
[mvc](mvc) | Standard MVC pattern recommended by Apple. Uses composition design pattern to make ViewController smaller. (README in progress) |
[mvp](mvp) | Standard MVP pattern. (README in progress) |
[mvvm-rxswift-pure](mvvm-rxswift-pure) | Uses RxSwift and observables as binding mechanism between ViewController and ViewModel . |
[mvvm-rxswift-functions-subjects-observables](mvvm-functions-subjects-observables) | Uses RxSwift and observables as outputs from ViewModel . ViewModel inputs are defined as subjects wrapped in functions. |
[mvvm-rxswift-subjects-observables](mvvm-rxswift-subjects-observables) | Uses RxSwift with observables as ViewModel outputs and subjects as ViewModel inputs. |
[mvvm-closures](mvvm-closures) | Binds ViewController and ViewModel using closures and swift functions (README in progress) |
[rxfeedback-mvc](rxfeedback-mvc) | Uses RxFeedback in MVC architecture (README in progress) |
[viper](viper) | Uses VIPER architecture (README in progress) |
Examples in progress
Example | Description |
---|---|
reactorkit | In Progress |
mvvm+rxfeedback | In Progress |
mvvm-reactive-swift | In Progress |
reswift | In Progress |
viper-rxswift | In Progress |
ribs | In Progress |
Sample apps
Apps in this repository are split into 2 groups - single screen and multiscreen.
Simple one screen apps aim to be simple enough that you can understand crucial bits about given architecture (i.e. bindings between ViewModel
and ViewController
in MVVM examples).
However, some other architectures require more complexity (i.e. RIBs architecture) and this is the reason of having multiscreen examples in this project.
Single screen app
Single screen app is a simple list of repositories fetched from GitHub and a text field that makes queries for new data.
Multiscreen app
Multiscreen app is a simple [themoviedb](themoviedb.com) client. It lets user to authenticate, view popular movies/tv shows or actors and see details about each movie. Also, it has a search screen that allows you to browse movies or actors.
Open in Xcode
Clone the repository:
git clone [email protected]:tailec/ios-architecture.git
Go to example directory, for example:
cd mvvm-pure-swift
Install pods:
pod install
Note: Some of the examples don't use external libraries so pod install
is not required.
Licence
MIT.
*Note that all licence references and agreements mentioned in the ios-architecture README section above
are relevant to that project's source code only.