https://github.com/richardpiazza/coordinatorplus
A protocol-oriented approach to the Coordinator app architecture pattern.
https://github.com/richardpiazza/coordinatorplus
coordinator-pattern swift
Last synced: 5 months ago
JSON representation
A protocol-oriented approach to the Coordinator app architecture pattern.
- Host: GitHub
- URL: https://github.com/richardpiazza/coordinatorplus
- Owner: richardpiazza
- License: mit
- Created: 2020-06-16T14:12:14.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2022-03-06T16:08:07.000Z (almost 4 years ago)
- Last Synced: 2025-08-17T08:25:04.833Z (6 months ago)
- Topics: coordinator-pattern, swift
- Language: Swift
- Homepage:
- Size: 28.3 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# CoordinatorPlus
A protocol-oriented approach to the Coordinator app architecture pattern.
## Installation
**CoordinatorPlus** is distributed using the [Swift Package Manager](https://swift.org/package-manager). To install it into a project, add it
as a dependency within your `Package.swift` manifest:
```swift
let package = Package(
...
dependencies: [
.package(url: "https://github.com/richardpiazza/CoordinatorPlus.git", from: "0.3.0")
],
...
)
```
Then import the **CoordinatorPlus** packages wherever you'd like to use it:
```swift
import CoordinatorPlus
```
## Why the 'Protocol-Oriented' approach?
Many projects use this architecture pattern, and each have a slightly different implementation.
Implementing the architecture through protocols and protocol extensions allows for simple implementations with minimal need to customize
the handling and presentation of Coordinators & View Controllers.
This reduces the differences on a project-by-project basis and improves the comprehension and understanding of all those who interact with
the framework.
## Features
The primary classes to note are:
* `AppCoordinator`
* `Flow`
* `FlowCoordinator`
* `FlowCoordinatorDelegate`
All of the other files fall outside of what someone could consider a _standard_ Coordinated MVC architectural pattern. The purpose of these
files is to provide default/sample implementations for specific use cases when used on a `UIKit` platform. This implement is rather
_opinionated_.
## References
Heavily influenced by [Josh Sullivan's](https://github.com/JoshuaSullivan) [article](http://www.chibicode.org/?p=121) and example project
[BeyondViewControllers](https://github.com/JoshuaSullivan/CoordinatedMVC).