What is Reduks?
Reduks is a port of redux.js and several of the most popular libraries from its ecosystem to Kotlin. The purpose is to have a set of integrated libraries to make it a viable option to develop real world apps for Android.
Only Android?
The focus of development until recently has been Android, but all Android-related features are kept in separated modules, with the core modules usable in any JVM context. Actually Reduks core modules are almost pure Kotlin and in fact there is already a fork of Reduks that can be used with multiplatform projects.
In the future, as the multiplatform support in Kotlin matures, Reduks will be fully restructured as a multiplatform project
Some notable features
- All basic standard ReduxJS components and interfaces: Store, Store Creator, Store Subscriber, Middlewares, Store Enhancers
- common basic extensions, like Thunk and Promise middlewares, Standard Action
- port of reselect library
- coroutine based port of reduks-saga.js
- A powerful logger middleware based on a port of https://github.com/evgenyrodionov/redux-logger, with the text formatting engine based on a heavily customized version of https://github.com/orhanobut/logger. The reduks logger middleware allows to print Json diff of subsequent reduks states thanks to a port to Kotlin of https://github.com/flipkart-incubator/zjsonpatch, with Jackson substituted with Gson and guava dependency removed
- integration with a persistent collections library for better perfomance with complex states
- Integration with an Event Bus implemented as Store enhancer
- Support for easily decomposing complex states in multiple reduks modules
Android specific features
- integration with Android Activity and Fragment and their lifecycles, with automatic save and restore of reduks state
Browse the Docs!
For the full documentation see here, or take a look at the summary.
License
Copyright 2019 by Dario Elyasy
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License here
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.