|
2 | 2 |
|
3 | 3 | [](https://www.apache.org/licenses/LICENSE-2.0) |
4 | 4 |
|
5 | | -Workflow is an application framework that provides architectural primitives. |
| 5 | +Workflow is a unidirectional data flow (UDF) library that |
| 6 | +provides navigation and state management for Kotlin and Swift applications. |
| 7 | +It can be compared to (and helped inspire!) |
| 8 | +[TCA](https://github.com/pointfreeco/swift-composable-architecture), |
| 9 | +[Circuit](https://github.com/slackhq/circuit) |
| 10 | +and [Molecule](https://github.com/cashapp/molecule). |
6 | 11 |
|
7 | | -Workflow is: |
| 12 | +Workflow's main difference from its peers is its opionated take on navigation: |
| 13 | +that navigation is just another form of presenter state to be managed, |
| 14 | +not a separate special concern. |
8 | 15 |
|
9 | | -* Written in and used for Kotlin and Swift |
10 | | -* A unidirectional data flow library that uses immutable data within each Workflow. |
| 16 | +Workflow… |
| 17 | + |
| 18 | +* Uses immutable data within each Workflow. |
11 | 19 | Data flows in a single direction from source to UI, and events in a single direction |
12 | 20 | from the UI to the business logic. |
13 | | -* A library that supports writing business logic and complex UI navigation logic as |
| 21 | +* Supports writing business logic and complex UI navigation logic as |
14 | 22 | state machines, thereby enabling confident reasoning about state and validation of |
15 | 23 | correctness. |
16 | | -* Optimized for composability and scalability of features and screens. |
17 | | -* Corresponding UI frameworks that bind Rendering data classes for “views” |
| 24 | +* Provides excellent support for recursion -- workflows of workflows of workflows -- |
| 25 | + as its main idiom for navigation. |
| 26 | +* Is optimized for composability and scalability of features and screens. |
| 27 | +* Includes UI frameworks that bind Rendering data classes for “views” |
18 | 28 | (including event callbacks) to Mobile UI frameworks for Android and iOS. |
19 | | -* A corresponding testing framework that facilitates simple-to-write unit |
| 29 | +* Provides a testing framework that facilitates simple-to-write unit |
20 | 30 | tests for all application business logic and helps ensure correctness. |
21 | 31 |
|
22 | 32 | ## Using Workflows in your project |
|
0 commit comments