All Projects → uber → Ribs

uber / Ribs

Licence: apache-2.0
Uber's cross-platform mobile architecture framework.

Programming Languages

java
68154 projects - #9 most used programming language
kotlin
9241 projects
swift
15916 projects
javascript
184084 projects - #8 most used programming language
shell
77523 projects
ruby
36898 projects - #4 most used programming language
objective c
16641 projects - #2 most used programming language

Projects that are alternatives of or similar to Ribs

Ios Design Patterns
Learning ground for iOS Design Pattern included with sample projects for MVC, MVP, MVVM, and VIPER
Stars: ✭ 120 (-98.19%)
Mutual labels:  viper, architecture, mvvm, mvp, mvc
Ios Architectures
Sample app for iOS architectures
Stars: ✭ 90 (-98.64%)
Mutual labels:  viper, architecture, mvvm, mvp, mvc
Androidarchitecture
Android Architecture using Google guides
Stars: ✭ 127 (-98.09%)
Mutual labels:  architecture, mvvm, mvp, mvc
Modelassistant
Elegant library to manage the interactions between view and model in Swift
Stars: ✭ 26 (-99.61%)
Mutual labels:  viper, mvvm, mvp, mvc
Ios Architecture
A collection of iOS architectures - MVC, MVVM, MVVM+RxSwift, VIPER, RIBs and many others
Stars: ✭ 901 (-86.43%)
Mutual labels:  viper, architecture, mvvm, mvc
Swift Design Patterns
🚀 The ultimate collection of various Software Design Patterns implemented in Swift [Swift 5.0, 28 Patterns].
Stars: ✭ 85 (-98.72%)
Mutual labels:  viper, architecture, mvvm, mvc
Mvvm Reddit
A companion project for our blog post on better Android software development using MVVM with RxJava.
Stars: ✭ 106 (-98.4%)
Mutual labels:  mobile-app, mvvm, mobile-development
Model2app
Turn your Swift data model into a working CRUD app.
Stars: ✭ 118 (-98.22%)
Mutual labels:  mobile-app, mobile-development, mobile
Fultter Example App
一个功能完整齐全的Bloc模式Flutter App项目。🍨更关注架构的SPA应用。,使用Node作为后台系统,使用了部分官方plugin,大体功能自己封装。🥰 有用请Star。
Stars: ✭ 248 (-96.27%)
Mutual labels:  mobile-app, mobile-development, mobile
Resizer
An image resizing library for Android
Stars: ✭ 406 (-93.89%)
Mutual labels:  mobile-app, mobile-development, mobile
Core-iOS-Application-Architecture
Core iOS Application Architecture - The development paradigm of clean, testable code and modular iOS applications. + Xcode templates
Stars: ✭ 123 (-98.15%)
Mutual labels:  mvc, mvp, viper
Viabus Architecture
让 Android 开发可以像流水线一样高效的,职责分离架构 ⚡ 不同于 MVP 的配置解耦,也不能和 似是而非 的 MVVM - Clean 同日而语。VIABUS 是世界范围内首个明确提出,通过职责分离,来真正实现 UI 和 业务并行开发的 Android 项目级开发架构和设计模式理念。
Stars: ✭ 485 (-92.7%)
Mutual labels:  architecture, mvvm, mvp
Boden
Purely native C++ cross-platform GUI framework for Android and iOS development. https://www.boden.io
Stars: ✭ 1,394 (-79.01%)
Mutual labels:  mobile-app, mobile-development, mobile
Flutter Mvvm Provider Demo
Stars: ✭ 89 (-98.66%)
Mutual labels:  mobile-app, mobile-development, mobile
React Native Dynamic Search Bar
Medium Article: https://freakycoder.com/react-native-library-dynamic-search-bar-c03fea9fae36
Stars: ✭ 225 (-96.61%)
Mutual labels:  mobile-app, mobile-development, mobile
Awesome Flutter
An awesome list that curates the best Flutter libraries, tools, tutorials, articles and more.
Stars: ✭ 38,582 (+480.97%)
Mutual labels:  mobile-app, mobile-development, mobile
ios-architecture-example
Architecture pattern simple examples in iOS. You can compare differences in MVC, MVP, MVVM-Delegate and MVVM-Rx for same feature
Stars: ✭ 16 (-99.76%)
Mutual labels:  mvc, mvp, mvvm
Flutter starter kit
A starter kit for beginner learns with Bloc pattern, RxDart, sqflite, Fluro and Dio to architect a flutter project. This starter kit build an App Store app as a example
Stars: ✭ 553 (-91.67%)
Mutual labels:  mobile-app, mobile-development, mobile
Flawless Ios
Awesome iOS guides from the community, shared on Flawless iOS Medium blog 👉
Stars: ✭ 260 (-96.08%)
Mutual labels:  viper, architecture, mobile
Androidquick
做外包用的快速开发库--微信、支付宝支付(含签名,下单)、自定义View(验证码/密码,九宫格图片上传等)、换肤、图片预览、RxJava、EventBus、JetPack、CameraX、base层封装等
Stars: ✭ 565 (-91.49%)
Mutual labels:  mvvm, mvp, mvc

RIBs

Build Status License Cocoapods Compatible Carthage Compatible

RIBs is the cross-platform architecture framework behind many mobile apps at Uber. The name RIBs is short for Router, Interactor and Builder, which are core components of this architecture. This framework is designed for mobile apps with a large number of engineers and nested states.

The RIBs architecture provides:

  • Shared architecture across iOS and Android. Build cross-platform apps that have similar architecture, enabling iOS and Android teams to cross-review business logic code.
  • Testability and Isolation. Classes must be easy to unit test and reason about in isolation. Individual RIB classes have distinct responsibilities like: routing, business, view logic, creation. Plus, most RIB logic is decoupled from child RIB logic. This makes RIB classes easy to test and reason about independently.
  • Tooling for developer productivity. RIBs come with IDE tooling around code generation, memory leak detection, static analysis and runtime integrations - all which improve developer productivity for large teams or small.
  • An architecture that scales. This architecture has proven to scale to hundreds of engineers working on the same codebase and apps with hundreds of RIBs.

Documentation

To get started with RIBs, please refer to the RIBs documentation. This describes key concepts on RIBs, from what they are for, their structure and common use cases.

To get more hands on with RIBs, we have written a series of tutorials that run you through the main aspects of the architecture with hands-on examples.

To read about the backstory on why we created RIBs, see this blog post we wrote when releasing RIBs in production the first time and see this short video where we discussed how the RIBs architecture works.

What is the difference between RIBs and MV*/VIPER?

MVC, MVP, MVI, MVVM and VIPER are architecture patterns. RIBs is a framework. What differentiates RIBs from frameworks based on MV*/VIPER is:

  • Business logic drives the app, not the view tree. Unlike with MV*/VIPER, a RIB does not have to have a view. This means that the app hierarchy is driven by the business logic, not the view tree.
  • Independent business logic and view trees. RIBs decouple how the business logic scopes are structured from view hierarchies. This allows the application to have a deep business logic tree, isolating business logic nodes, while maintaining a shallow view hierarchy making layouts, animations and transitions easy.

There are some other novel things about RIBs. However, these could also be implemented with other MV*/VIPER frameworks. These are:

  • Cross-platform approach, allowing iOS and Android architecture to stay in sync.
  • Tooling to for easier adoption on larger apps or teams. Tooling we are open sourcing includes IDE plugins for code generation and static code analysis.
  • Strong opinions about how state should be communicated, using DI and Rx. Each RIB defines its dependencies and what dependencies it needs from its parent. Parent components that fulfill a child’s parent dependencies are provided to child Builders as a constructor dependency to allow for hierarchical DI scoping. This means that information is communicated via these dependencies up and down the tree.

Usage

  1. Clone this repository
  2. Integrate using your preferred installation mechanism

For usage of the tooling built around RIBs, please see the Tooling section in our documentation.

Installation for Android

To integrate the recommended minimum setup for RIBs add the following to your build.gradle:

dependencies {
  annotationProcessor 'com.uber.rib:rib-compiler-test:0.12.1'
  implementation 'com.uber.rib:rib-android:0.12.1'
  testImplementation 'com.uber.rib:rib-test:0.12.1'
}

Installation for iOS

CocoaPods

To integrate RIBs into your project add the following to your Podfile:

pod 'RIBs', '~> 0.9'

Carthage

To integrate RIBs into your project using Carthage add the following to your Cartfile:

github "uber/RIBs" ~> 0.9

Related projects

If you like RIBs, check out other related open source projects from our team:

  • Needle: a compile-time safe Swift dependency injection framework.
  • Motif: An abstract on top of Dagger offering simpler APIs for nested scopes.
  • Swift Concurrency: a set of concurrency utility classes used by Uber, inspired by the equivalent java.util.concurrent package classes.
  • Swift Abstract Class: a light-weight library along with an executable that enables compile-time safe abstract class development for Swift projects.
  • Swift Common: common libraries used by this set of Swift open source projects.

License

Copyright (C) 2017 Uber Technologies

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].