All Projects → ww-tech → Roxie

ww-tech / Roxie

Licence: apache-2.0
Lightweight Android library for building reactive apps.

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to Roxie

Unidirectional Architecture On Mobile
Dive into 📱 Unidirectional Architecture!
Stars: ✭ 115 (-73.92%)
Mutual labels:  rxjava, unidirectional-data-flow, android-architecture
Android Mvp Architecture
This repository contains a detailed sample app that implements MVP architecture using Dagger2, GreenDao, RxJava2, FastAndroidNetworking and PlaceholderView
Stars: ✭ 4,360 (+888.66%)
Mutual labels:  rxjava, rxjava2, android-architecture
Android Developer Roadmap
Android Developer Roadmap - A complete roadmap to learn Android App Development
Stars: ✭ 2,170 (+392.06%)
Mutual labels:  rxjava, rxjava2, android-architecture
Grox
Grox helps to maintain the state of Java / Android apps.
Stars: ✭ 336 (-23.81%)
Mutual labels:  rxjava, rxjava2, state-management
Android Mvvm Architecture
This repository contains a detailed sample app that implements MVVM architecture using Dagger2, Room, RxJava2, FastAndroidNetworking and PlaceholderView
Stars: ✭ 2,720 (+516.78%)
Mutual labels:  rxjava, rxjava2, android-architecture
Kotlin Cleanarchitecture
This is a sample app that is part of a blog post I have written about how to architect android application using the Uncle Bob's clean architecture and Fernando Cejas Android-CleanArchitecture in Kotlin. Post in Spanish: http://katade.com/clean-architecture-kotlin/
Stars: ✭ 274 (-37.87%)
Mutual labels:  rxjava, android-architecture
Nybus
NYBus (RxBus) - A pub-sub library for Android and Java applications
Stars: ✭ 283 (-35.83%)
Mutual labels:  rxjava, rxjava2
Rxbiometric
☝️ RxJava and RxKotlin bindings for Biometric Prompt (Fingerprint Scanner) on Android
Stars: ✭ 295 (-33.11%)
Mutual labels:  rxjava, rxjava2
Freezer
A simple & fluent Android ORM, how can it be easier ? RxJava2 compatible
Stars: ✭ 326 (-26.08%)
Mutual labels:  rxjava, rxjava2
T Mvp
Android AOP Architecture by Apt, AspectJ, Javassisit, based on Realm+Databinding+MVP+Retrofit+Rxjava2
Stars: ✭ 2,740 (+521.32%)
Mutual labels:  rxjava, rxjava2
Rxgps
Finding current location cannot be easier on Android !
Stars: ✭ 307 (-30.39%)
Mutual labels:  rxjava, rxjava2
Apollo
🚀 Awesome EventBus by RxJava.
Stars: ✭ 329 (-25.4%)
Mutual labels:  rxjava, rxjava2
Rxandroidble
An Android Bluetooth Low Energy (BLE) Library with RxJava2 interface
Stars: ✭ 3,025 (+585.94%)
Mutual labels:  rxjava, rxjava2
Android Mvp Mvvm Flytour
🔥🔥🔥 FlyTour是Android MVVM+MVP+Dagger2+Retrofit+RxJava+组件化+插件组成的双编码架构+双工程架构+双语言Android应用开发框架,通过不断的升级迭代该框架已经有了十个不同的版本,5.0之前工程架构采用gradle配置实现组件化,5.0之后的工程架构采用VirtualAPK实现了插件化,5.0之前采用Java编码实现,5.0之后采用Kotlin编码实现,编码架构由MVVM和MVP组成,工程架构和编码架构及编码语言开发者可根据自己具体的项目实际需求去决定选择使用,该框架是Android组件化、Android插件化、Android MVP架构、Android MVVM架构的集大成者,帮助你快速的搭建自己的App项目开发框架,以便把主要的精…
Stars: ✭ 2,948 (+568.48%)
Mutual labels:  rxjava2, android-architecture
Rxbluetooth
Android reactive bluetooth
Stars: ✭ 405 (-8.16%)
Mutual labels:  rxjava, rxjava2
Rxanime
Visualizer to understand RxJava operators
Stars: ✭ 261 (-40.82%)
Mutual labels:  rxjava, rxjava2
Swipe
👉 detects swipe events on Android
Stars: ✭ 324 (-26.53%)
Mutual labels:  rxjava, rxjava2
Kotlinmvp
🔥 基于Kotlin+MVP+Retrofit+RxJava+Glide 等架构实现短视频类小项目,简约风格及详细注释,欢迎 star or fork!
Stars: ✭ 3,488 (+690.93%)
Mutual labels:  rxjava, rxjava2
Androidproject
Android 技术中台,但愿人长久,搬砖不再有
Stars: ✭ 4,398 (+897.28%)
Mutual labels:  rxjava, rxjava2
Rxcache
简单一步,缓存搞定。这是一个专用于 RxJava,解决 Android 中对任何 Observable 发出的结果做缓存处理的框架
Stars: ✭ 377 (-14.51%)
Mutual labels:  rxjava, rxjava2

Roxie logo

Roxie is a lightweight Android library for building reactive apps. We successfully use it for Android product development at WW (formerly Weight Watchers).

Why Roxie?

Roxie implements Unidirectional Data Flow (UDF) concepts introduced by Redux. The core idea is that user Actions get dispatched to a Store (State container) which uses Reducers to transform them into States. In Android world, this design pattern is known as MVI (Model-View-Intent) where Model describes State and Intent describes user interaction.

Roxie is a tiny library. It is implemented using widely adopted Lifecycle Google Architecture Components and RxJava2. Hopefully, the small footprint of this library will enable you to fully understand both concepts and implementation details.

Roxie in a nutshell

The Unidirectional Data Flow with Roxie can be summarized as follows:

  1. User interaction events (Actions) get dispatched to ViewModel via a single pipeline.
  2. Each Action gets transformed into Changes.
  3. Each Change combined with a previous State produces a new State using a Reducer.
  4. UI observes new States via a single pipeline and renders them as they come in.

Some of Roxie's strengths are:

  • State Machine managing immutable States makes data predictable and easier to manage.
  • Support for state restoration after device rotation and process death.
  • A set of Actions, Changes, and States for each screen result in a thorough user-centric design.
  • Logging of Actions and States makes both debugging and crash reporting extremely efficient.
  • Rich RxJava APIs help achieve composable functional code.
  • Meaningful and consistent unit tests asserting that given Actions and initial State produce correct new States.

Documentation

Check out the sample bundled and wiki pages to get started. Some of the topics covered are:

Installation

Add the following Gradle dependency to your project build.gradle file:

dependencies {
    implementation 'com.ww:roxie:0.4.0'
}

License

Copyright 2019 WW International, Inc.

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 at

   http://www.apache.org/licenses/LICENSE-2.0

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.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].