Select the right architecture and functional reactive programming framework

Overview

The Tin Woodman of Oz

#boilerplate This repository demonstrates different architectures and usage of popular reactive programming frameworks.

I decided to open-source couple of small apps (3-6 screens) with very basic UI. I hope, these projects will save someone else's time.

Currently, only GitHub API Client is available. Rest of the apps will be published very soon!

  1. GitHub API Client - MVVM and RxSwift
  2. 500px photo viewer app - VIPER and RxSwift
  3. TBA - mix of MVVM and VIPER by Florent Pillet (@fpillet) and RxSwift
  4. TODO List - MVVM and SwiftBond
  5. Commits app - MVVM and ReactiveCocoa

Also, there are plans to create sample app using ReSwift.

Pull requests are welcome.

##GitHub API client Watch demo on vimeo.

The GitHub API client requires you to sign in with your GitHub account. Sample app uses your username and password to generate auth token (app doesn't store your login credentials). More information can be found here.

###Features

  • MVVM architecture
  • Uses RxSwift
  • Autocompletion search
  • GitHub sign in process
  • Shows how to zip many network requests
  • RxCocoa UIKit bindings (RxCocoa UITableView bindings are really cool)
  • Uses Moya as networking layer
  • Implements RxSwift custom operators
  • Implements RxSwift helper operators for Moya
  • Uses SwiftyJSON
  • Models and services unit tests
  • ViewModels unit tests using RxBlocking and RxTests

Upcoming features and code checklist

###Setup

cd github
pod install
open github.xcworkspace

##Thanks

##Author Pawel Krawiec

##Licence MIT

You might also like...
 Unleashing the real power of Core Data with the elegance and safety of Swift
Unleashing the real power of Core Data with the elegance and safety of Swift

Unleashing the real power of Core Data with the elegance and safety of Swift Dependency managers Contact Swift 5.4: iOS 11+ / macOS 10.13+ / watchOS 4

JustPersist is the easiest and safest way to do persistence on iOS with Core Data support out of the box.
JustPersist is the easiest and safest way to do persistence on iOS with Core Data support out of the box.

JustPersist JustPersist is the easiest and safest way to do persistence on iOS with Core Data support out of the box. It also allows you to migrate to

A minimalistic, thread safe, non-boilerplate and super easy to use version of Active Record on Core Data.
A minimalistic, thread safe, non-boilerplate and super easy to use version of Active Record on Core Data.

Skopelos A minimalistic, thread-safe, non-boilerplate and super easy to use version of Active Record on Core Data. Simply all you need for doing Core

JSON to Core Data and back. Swift Core Data Sync.
JSON to Core Data and back. Swift Core Data Sync.

Notice: Sync was supported from it's creation back in 2014 until March 2021 Moving forward I won't be able to support this project since I'm no longer

An NSPredicate DSL for iOS, OSX, tvOS, & watchOS. Inspired by SnapKit and lovingly written in Swift.
An NSPredicate DSL for iOS, OSX, tvOS, & watchOS. Inspired by SnapKit and lovingly written in Swift.

PrediKit A Swift NSPredicate DSL for iOS & OS X inspired by SnapKit, lovingly written in Swift, and created by that weird dude at KrakenDev. If you're

Write amazing, strong-typed and easy-to-read NSPredicate.

PredicateFlow Write amazing, strong-typed and easy-to-read NSPredicate. This library allows you to write flowable NSPredicate, without guessing attrib

Domain Specific Language to safely build predicates and requests to fetch a CoreData store

SafeFetching This library offers a DSL (Domain Specific Language) to safely build predicates and requests to fetch a CoreData store. Also a wrapper ar

Quillow is an elegant book management app on the App Store that allows you to search, add and track the books you've consumed.

Quillow Quillow is an elegant book management app on the App Store that allows you to search, add and track the books you've consumed. Please use the

Simple IOS notes app written programmatically without storyboard using UIKit and CoreData
Simple IOS notes app written programmatically without storyboard using UIKit and CoreData

Notes Simple Notes app. Swift, UIKit, CoreData Description Simple IOS notes app

Comments
  • What's the benefit to use Driver<T> instead Observable<T>

    What's the benefit to use Driver instead Observable

    Hey,

    These days I'm looking for the best practice how to implement MVVM with RxSwift. I found your project very interesting and useful, so thanks about that.

    I've a small question for you. What's the benefit to use Driver instead Observable and binding. For example: In your LoginViewMode you have a property:

    let loginEnabled: Driver<Bool>
    
    And in your LoginViewController you bind the value:
    
        viewModel.loginEnabled
          .driveNext { [weak self] enabled in
            self?.signinButton.enabled = enabled
          }
          .addDisposableTo(disposeBag)
    

    Instead a regular Observable and Binding: let loginEnabled: Observable<Bool> And in your LoginViewController bind the value by binding: viewModel.loginEnabled.bindTo(signinButton.rx_enabled).addDisposableTo(disposeBag)

    Best, Guy

    opened by GuyKahlon 3
  • codebeat badge

    codebeat badge

    Is it fine to add codebeat badge to README?

    codebeat is automated code review tool for Swift,Ruby,Go & Python that helps get instant feedback on code quality.

    "Quick wins" suggested by codebeat could be a nice candidate for a pull request and help other developers become contributors.

    FYI. To be fully open and honest. I'm co-founder of codebeat.

    opened by korzonek 2
Owner
Pawel Krawiec
iOS / React
Pawel Krawiec
CloudCore is a framework that manages syncing between iCloud (CloudKit) and Core Data written on native Swift.

CloudCore CloudCore is a framework that manages syncing between iCloud (CloudKit) and Core Data written on native Swift. Features Leveraging NSPersist

deeje cooley 123 Dec 31, 2022
A Swift framework that wraps CoreData, hides context complexity, and helps facilitate best practices.

Cadmium is a Core Data framework for Swift that enforces best practices and raises exceptions for common Core Data pitfalls exactly where you make the

Jason Fieldman 123 Oct 18, 2022
Arctanyn 0 Dec 24, 2022
A Swift framework that wraps CoreData, hides context complexity, and helps facilitate best practices.

Cadmium is a Core Data framework for Swift that enforces best practices and raises exceptions for common Core Data pitfalls exactly where you make them.

Jason Fieldman 123 Oct 18, 2022
A synchronization framework for Core Data.

Core Data Ensembles Author: Drew McCormack Created: 29th September, 2013 Last Updated: 15th February, 2017 Ensembles 2 is now available for purchase a

Drew McCormack 1.6k Dec 6, 2022
Core Data Generator (CDG for short) is a framework for generation (using Sourcery) of Core Data entities from plain structs/classes/enums.

Core Data Generator Introduction Features Supported platforms Installation CDG Setup RepositoryType ModelType DataStoreVersion MigrationPolicy Basic U

Lotusflare 18 Sep 19, 2022
SwiftFM is a Swift framework for the FileMaker Data API

SwiftFM SwiftFM is a Swift framework for the FileMaker Data API (Swift 5.5, iOS 15 required). It utilizes modern Swift features like async/await and i

Brian Hamm 48 Nov 3, 2022
🎯 PredicateKit allows Swift developers to write expressive and type-safe predicates for CoreData using key-paths, comparisons and logical operators, literal values, and functions.

?? PredicateKit PredicateKit is an alternative to NSPredicate allowing you to write expressive and type-safe predicates for CoreData using key-paths,

Faiçal Tchirou 352 Jan 3, 2023
iOS app built with UIKit and programatic auto-layouts to learn and apply knowledge. Offline storage using CoreData and Caching

PurpleImage Search Pixabay for images and save them offline to share and view To use: Clone the GitHub project, build and run in Xcode. The API is com

Frederico Kückelhaus 0 May 10, 2022
Robust CloudKit synchronization: offline editing, relationships, shared and public databases, field-level deltas, and more.

CloudCore CloudCore is a framework that manages syncing between iCloud (CloudKit) and Core Data written on native Swift. Features Leveraging NSPersist

deeje cooley 123 Dec 31, 2022