//VIPER
https://www.raywenderlich.com/5161-clean-architecture-on-ios
https://www.raywenderlich.com/5173-advanced-unidirectional-architecture
https://www.raywenderlich.com/3640-306-mvvm-in-practice
https://www.raywenderlich.com/4352-advanced-ios-design-patterns
Redux is a tool for managing state throughout the application. It is usually used as an architecture for UIs. Think of it as an alternative to (half of) Angular. (https://redux.js.org/) (https://facebook.github.io/flux/)
RxJS is a reactive programming library. It is usually used as a tool to accomplish asynchronous tasks in JavaScript. Think of it as an alternative to Promises. (http://reactivex.io/)