Goeun1001 Ios Architectures Save Abandoned

A Collection of iOS architectures - MVC, MVP, MVVM, MVVM-C, ReactorKit, VIPER, Clean Architecture, RIBs; Repository Pattern, Rxflow, Swinject, Tuist, Xcodegen, Cocoapods, SPM, Carthage + Rome

Project README

iOS Architectures

Docs

API

Reference

  1. Started from Pawel Krawiec's ios-architecture & Bo-Young PARK's BringMyOwnBeer-
  2. Studied MVVM+RxSwift with Miguel Lin's RxSwift-MVVM-Demo
  3. Studied Coodinator Pattern with wojciech-kulik's Swift-MVVMC-Demo
  4. Studied Clean Architecture with Oleh's iOS-Clean-Architecture-MVVM

Thank for people of this list!

Screenshots

List Search Random

Concept

  1. Objc
  2. Swift
  3. SwiftUI

Environment

Swift 5, Xcode 12.5

0. Shared

Image Download - Kingfisher

Package Management - Cocoapods

$ pod install

1. Objc-MVC

UI - Storyboard

Image - NSCache

Network - NSData to Json

1. MVC - storyboard

UI - Storyboard

Network - URLSession

2. MVC - snapKit

UI - SnapKit

Network - URLSession

3. MVP - snapKit

UI - SnapKit, Then

Network - URLSession

4. MVVM - RxSwift - storyboard

UI - Storyboard, RxDatasource

Network - RxURLSession

Unit Tests πŸ‘Œ - RxTest

4-1. MVVM - RxSwift - xcodegen

UI - Storyboard, RxDatasource

Network - RxURLSession

Unit Tests πŸ‘Œ - RxTest

Xcodegen πŸ‘Œ

$ brew install xcodegen
$ cd MVVM-RxSwift-xcodegen/
$ xcodegen

4-2. MVVM - RxSwift - tuist

UI - Storyboard, RxDatasource

Network - RxURLSession

Unit Tests πŸ‘Œ - RxTest

Tuist πŸ‘Œ

$ bash <(curl -Ls https://install.tuist.io)
$ cd MVVM-RxSwift-tuist/
$ tuist generate

4-3. CocoaPods, SPM, Carthage + Rome

MVVM - RxSwift - storyboard's

CocoaPods(original),

SPM,

Carthage

  • Rome, Carting, Fastlane
$ chmod +x carthage.sh
$ ./carthage.sh update --platform iOS

Reference

5. MVVM - RxSwift - snapKit

UI - SnapKit, Then, RxDatasource

Network - Moya

Unit Tests πŸ‘Œ - RxTest

5-1. MVVM - RxSwift - coreData

UI - SnapKit, Then, RxDatasource

Network - RxURLSession

Repositoy Pattern - CoreData

Unit Tests πŸ‘Œ - RxTest, Nimble

5-2. MVVM - RxSwift - realm

UI - SnapKit, Then, RxDatasource

Network - RxURLSession

Repositoy Pattern - Realm

Unit Tests πŸ‘Œ - RxTest, Nimble

5-3. MVVM - RxSwift - sqlite

UI - SnapKit, Then, RxDatasource

Network - RxURLSession

Repositoy Pattern - Sqlite3

Unit Tests πŸ‘Œ - RxTest, Nimble

5-4. Clean Architecture - MVVM - RxSwift - coredata

5-1. MVVM - RxSwift - coreData to Clean Architecture

6. MVVM-C - RxSwift

UI - SnapKit, Then, RxDatasource

Network - Moya

Unit Tests πŸ‘Œ - RxTest, Nimble, Quick

CI - Github Actions πŸ‘Œ

6-1. MVVM-C - RxSwift - Swinject

UI - SnapKit, Then, RxDatasource

Network - Moya

Unit Tests πŸ‘Œ - RxTest, Nimble, Quick

CI - Github Actions πŸ‘Œ

DI - Swinject

7. MVVM - RxSwift - RxFlow

UI - SnapKit, Then, RxDatasource

Network - Moya

Unit Tests πŸ‘Œ - RxTest

7-1. Clean Architecture - RxFlow - Swinject

  1. MVVM - RxSwift - RxFlow to Clean Architecture

DI - Swinject

8. ReactorKit - RxFlow

UI - SnapKit, Then, RxDatasource

Network - Moya

Unit Tests πŸ‘Œ

9. VIPER + Rx

UI - SnapKit, Then, RxDatasource

Network - Moya

Unit Tests πŸ‘Œ - RxTest

VIPER Template - VIPER + Rx Xcode Template

10. RIBs + Rx

Package Management - SPM

UI - SnapKit, Then, RxDatasources

Network - Moya

Unit Tests πŸ‘Œ

Reference

1. SwiftUI- MV

  • iOS 13

Using @State only

Network - Moya

2. SwiftUI-MVVM

Using @Published

Network - Moya

Unit Tests πŸ‘Œ

3. SwiftUI-MVVM-Combine

Using Combine's PassthroughSubject

Network - Moya

Unit Tests πŸ‘Œ

3-1. Clean Architecture - MVVM - Combine

Using Combine's PassthroughSubject

Network - Moya

Unit Tests πŸ‘Œ

4. SwiftUI 2.0

  • iOS 14
  1. SwiftUI-MVVM-Combine's SwiftUI 2.0

Used

 ScrollView {
      LazyVStack {

Instead of

List {

Used

if viewModel.isLoading {
                    ProgressView()
                        .progressViewStyle(CircularProgressViewStyle())
                        .scaleEffect(2.0, anchor: .center)
                }

Instead of

ActivityIndicator(isAnimating: $viewModel.isLoading, style: .large)

5. SwiftUI 3.0

  • iOS 15, Xcode 13.0
  1. SwiftUI-MVVM-Combine's SwiftUI 3.0

Used

.refreshable {

Instead of

.introspectTableView { scrollView in

Used

AsyncImage

Instead of

KFImage

Used

.searchable(text: $viewModel.text)

Instead of

TextField("Search ...", text: $viewModel.text

πŸ’• WAITING YOUR PR for the better codes.

Open Source Agenda is not affiliated with "Goeun1001 Ios Architectures" Project. README Source: Goeun1001/ios-architectures

Open Source Agenda Badge

Open Source Agenda Rating