CleanArchitectureRxSwift - Example of Clean Architecture of iOS app using RxSwift

  •        73

The Platform is a concrete implementation of the Domain in a specific platform like iOS. It does hide all implementation details. For example Database implementation whether it is CoreData, Realm, SQLite etc. Application is responsible for delivering information to the user and handling user input. It can be implemented with any delivery pattern e.g (MVVM, MVC, MVP). This is the place for your UIViews and UIViewControllers. As you will see from the example app, ViewControllers are completely independent of the Platform. The only responsibility of a view controller is to "bind" the UI to the Domain to make things happen. In fact, in the current example we are using the same view controller for Realm and CoreData.



Related Projects

RxCoordinator - 🎌 Reactive navigation library for iOS based on the coordinator pattern

  •    Swift

“How does an app transition from a ViewController to another?”. This question is common and puzzling regarding iOS development. There are many answers, as every architecture has different implementation variations. Some do it from the view controller, while some do it using a router/coordinator, which is an object that connects view models. Setup the root view controller in the AppDelegate.

Theatre - Pet project using Clean Architecture + MVVM + Reactive Extensions + Android Architecture Components

  •    Kotlin

Pet project using Clean Architecture + MVVM + Reactive Extensions + Android Architecture Components. The data is fetched from LondonTheatreDirect API. The overriding rule of this architecture says that the source code dependencies always point inwards. The outer tiers can only dependent of inner tiers. Therefore, the inner tiers know nothing about the outer tiers. The more further you go through the concentric circles, the higher level the software becomes. Which means that the level of abstraction increases.

ios-architecture - A collection of iOS architectures - MVC, MVVM, MVVM+RxSwift, VIPER, RIBs and many others

  •    Swift

This repository hosts each sample app in separate directory. ⭐️ Click the title of example to see detailed README information about specific architecture.

XCoordinator - 🎌 Powerful navigation library for iOS based on the coordinator pattern

  •    Swift

⚠️ We have recently released XCoordinator 2.0. Make sure to read this section before migrating. In general, please replace all AnyRouter by either UnownedRouter (in viewControllers, viewModels or references to parent coordinators) or StrongRouter in your AppDelegate or for references to child coordinators. In addition to that, the rootViewController is now injected into the initializer instead of being created in the Coordinator.generateRootViewController method. “How does an app transition from one view controller to another?”. This question is common and puzzling regarding iOS development. There are many answers, as every architecture has different implementation variations. Some do it from within the implementation of a view controller, while some use a router/coordinator, an object connecting view models.

Coordinator-MVVM-Rx-Example - Example of MVVM-C architecture implemented with RxSwift

  •    Swift

This simple app displays a list of the most starred repositories on GitHub by a language. User can choose a language to filter repositories and select repository in the list to open it in the SFSafariViewController. App is written with Xcode 8 and Swift 3.

OfflineSampleApp - Sample Offline-First MVVM app that uses Android Priority Job Queue, Room, Retrofit2, LiveData, LifecycleObserver, RxJava2, Dagger Android

  •    Java

Offline App (or Offline-First App) enables user to seamlessly interact with it by using local device storage and then synchronizing the data with some remote storage (cloud database, etc) later via a background process. This app is a working sample that showcases one way of implementing offline commenting capability on Android platform. Users' comments are stored in local Room database first. Then a background job is spawned to synchronize local data with remote database if and when Internet connection is available.

countries - An example Android app using Retrofit, Realm, Parceler, Dagger and the MVVM pattern with the data binding lib

  •    Kotlin

A sample Android app written in Kotlin, which lists all countries with some additional information (currencies, languages, …). The app uses the MVVM pattern with the Android data binding lib. Countries can be bookmarked and are then stored locally with Realm. Retrofit is used to fetch the country information from the free REST Countries service. For JSON parsing, custom Gson TypeAdapters are used. PaperParcel is used to make the Country objects Parcelable. Also, Dagger 2 is used for dependency injection. This project can also be used as a template for new apps. Check out the template branch for a cleaned up version of this project.

ReactorKit - A framework for a reactive and unidirectional Swift application architecture

  •    Swift

ReactorKit is a framework for a reactive and unidirectional Swift application architecture. This repository introduces the basic concept of ReactorKit and describes how to build an application using ReactorKit. You may want to see the Examples section first if you'd like to see the actual code. Visit the API Reference for code-level documentation.

android-showcase - 💎Android application following best practices: Kotlin, coroutines, Clean Architecture, feature modules, tests, MVVM, static analysis

  •    Kotlin

Showcase is a sample project that presents modern, 2019 approach to Android application development using Kotlin and latest tech-stack. The goal of the project is to demonstrate best practices, provide a set of guidelines, and present modern Android application architecture that is modular, scalable, maintainable and testable. This application may look simple, but it has all of these small details that will set the rock-solid foundation of the larger app suitable for bigger teams and long application lifecycle. Many of the project design decisions follow official Google recommendations.

CleanStore - A sample iOS app built using the Clean Swift architecture

  •    Swift

A sample iOS app built using the Clean Swift architecture. Clean Swift is Uncle Bob's Clean Architecture applied to iOS and Mac projects. CleanStore demonstrates Clean Swift by implementing the create order use case described by in Uncle Bob's talks.

Reactant - Reactant is a reactive architecture for iOS

  •    Swift

Reactant is a foundation for rapid and safe iOS development. It allows you to cut down your development costs by improving reusability, testability and safety of your code, especially your UI. Check our our quick-start guide to learn more. NOTE: We have experimental support for macOS platform in macOS branch, but it's incomplete and definitely not recommended for production. Our plan is to add full macOS support in near future.

RxViewModel - ReactiveViewModel-esque using RxSwift

  •    Swift

The Model-View-ViewModel (MVVM) pattern is an application pattern that isolates the user interface from the underlying business logic. MVVM belongs to a class of patterns called Separated Presentation. These patterns provide a clean separation between the UI and the rest of the application. This improves the testability of the application and allows the application and its UI to evolve more easily and independently. The Model-View-ViewModel (MVVM) pattern helps you to cleanly separate the business and presentation logic of your application from its user interface (UI). Maintaining a clean separation between application logic and UI helps to address numerous development and design issues and can make your application much easier to test, maintain, and evolve. It can also greatly improve code re-use opportunities and allows developers and UI designers to more easily collaborate when developing their respective parts of the application.

Android-CleanArchitecture-Kotlin - This is a movies sample app in Kotlin, which is part of a serie of blog posts I have written about architecting android application using different approaches

  •    Kotlin

The purpose of this repo is to follow up Clean Architecture principles by bringing them to Android. It is worth saying that the idea is to take advantage of the Kotlin Programming Language features plus also pull in lessons learned and ideas from other interesting aproaches like Functional Programming. There is another Android Clean Architecture repository written in Java: with really nice discussions: Article, lessons learned and some more material coming up. Check the following known bugs and TODO list.

ReactiveUI - An advanced, composable, functional reactive model-view-viewmodel framework for all

  •    CSharp

ReactiveUI is a composable, cross-platform model-view-viewmodel framework for all .NET platforms that is inspired by functional reactive programming which is a paradigm that allows you to abstract mutable state away from your user interfaces and express the idea around a feature in one readable place and improve the testability of your application.That's reactive programming: changes propagate throughout a system automatically. Welcome to the peanut butter and jelly of programming paradigms. For further information please watch the this video from the Xamarin Evolve conference - Why You Should Be Building Better Mobile Apps with Reactive Programming by Michael Stonis.

RxRealm - RxSwift extension for RealmSwift's types

  •    Swift

This library is a thin wrapper around RealmSwift ( Realm Docs ). RxRealm can be used to create Observables from objects of type Results, List, LinkingObjects or AnyRealmCollection. These types are typically used to load and observe object collections from the Realm Mobile Database.