├── .DS_Store ├── CellKit ├── Collection View Cell.xctemplate │ ├── TemplateIcon.png │ ├── TemplateIcon@2x.png │ ├── TemplateInfo.plist │ ├── ___VARIABLE_sourceCellIdentifier___CollectionViewCell.swift │ ├── ___VARIABLE_sourceCellIdentifier___CollectionViewCell.xib │ └── ___VARIABLE_sourceCellIdentifier___CollectionViewCellModel.swift ├── Collection View Reusable View.xctemplate │ ├── TemplateIcon.png │ ├── TemplateIcon@2x.png │ ├── TemplateInfo.plist │ ├── ___VARIABLE_sourceViewIdentifier___CollectionViewReusableView.swift │ └── ___VARIABLE_sourceViewIdentifier___CollectionViewReusableView.xib ├── Table View Cell.xctemplate │ ├── TemplateIcon.png │ ├── TemplateIcon@2x.png │ ├── TemplateInfo.plist │ ├── ___VARIABLE_sourceCellIdentifier___TableViewCell.swift │ ├── ___VARIABLE_sourceCellIdentifier___TableViewCell.xib │ └── ___VARIABLE_sourceCellIdentifier___TableViewCellModel.swift └── Table View Header Footer.xctemplate │ ├── TemplateIcon.png │ ├── TemplateIcon@2x.png │ ├── TemplateInfo.plist │ ├── ___VARIABLE_sourceCellIdentifier___TableViewHeaderFooter.swift │ ├── ___VARIABLE_sourceCellIdentifier___TableViewHeaderFooter.xib │ └── ___VARIABLE_sourceCellIdentifier___TableViewHeaderFooterModel.swift ├── FTAPIKit └── Endpoints.xctemplate │ ├── Default │ └── ___VARIABLE_endpointName___Endpoints.swift │ ├── HasRequest │ ├── ___VARIABLE_endpointName___Endpoints.swift │ └── ___VARIABLE_endpointName___Requests.swift │ ├── HasRequestHasResponse │ ├── ___VARIABLE_endpointName___Endpoints.swift │ ├── ___VARIABLE_endpointName___Requests.swift │ └── ___VARIABLE_endpointName___Responses.swift │ ├── HasResponse │ ├── ___VARIABLE_endpointName___Endpoints.swift │ └── ___VARIABLE_endpointName___Responses.swift │ ├── TemplateIcon.png │ ├── TemplateIcon@2x.png │ └── TemplateInfo.plist ├── KMP └── KMP Scene.xctemplate │ ├── TemplateIcon.png │ ├── TemplateIcon@2x.png │ ├── TemplateInfo.plist │ ├── ___VARIABLE_sceneIdentifier___View.swift │ └── ___VARIABLE_sceneIdentifier___ViewModel.swift ├── LICENSE ├── Logo.svg ├── MVVM-C ├── MVVM-C Modal Scene.xctemplate │ ├── TemplateIcon.png │ ├── TemplateIcon@2x.png │ ├── TemplateInfo.plist │ ├── ___VARIABLE_sceneIdentifier___.storyboard │ ├── ___VARIABLE_sceneIdentifier___Coordinator.swift │ ├── ___VARIABLE_sceneIdentifier___ViewController.swift │ └── ___VARIABLE_sceneIdentifier___ViewModel.swift ├── MVVM-C Push Scene.xctemplate │ ├── TemplateIcon.png │ ├── TemplateIcon@2x.png │ ├── TemplateInfo.plist │ ├── ___VARIABLE_sceneIdentifier___.storyboard │ ├── ___VARIABLE_sceneIdentifier___Coordinator.swift │ ├── ___VARIABLE_sceneIdentifier___ViewController.swift │ └── ___VARIABLE_sceneIdentifier___ViewModel.swift ├── MVVM-C Scene.xctemplate │ ├── TemplateIcon.png │ ├── TemplateIcon@2x.png │ ├── TemplateInfo.plist │ ├── ___VARIABLE_sceneIdentifier___.storyboard │ ├── ___VARIABLE_sceneIdentifier___Coordinator.swift │ ├── ___VARIABLE_sceneIdentifier___ViewController.swift │ └── ___VARIABLE_sceneIdentifier___ViewModel.swift ├── MVVM-C Show Scene.xctemplate │ ├── TemplateIcon.png │ ├── TemplateIcon@2x.png │ ├── TemplateInfo.plist │ ├── ___VARIABLE_sceneIdentifier___.storyboard │ ├── ___VARIABLE_sceneIdentifier___Coordinator.swift │ ├── ___VARIABLE_sceneIdentifier___ViewController.swift │ └── ___VARIABLE_sceneIdentifier___ViewModel.swift ├── MVVM-C Tab Bar Item Scene.xctemplate │ ├── TemplateIcon.png │ ├── TemplateIcon@2x.png │ ├── TemplateInfo.plist │ ├── ___VARIABLE_sceneIdentifier___.storyboard │ ├── ___VARIABLE_sceneIdentifier___Coordinator.swift │ ├── ___VARIABLE_sceneIdentifier___ViewController.swift │ └── ___VARIABLE_sceneIdentifier___ViewModel.swift ├── MVVM-C Window Scene.xctemplate │ ├── TemplateIcon.png │ ├── TemplateIcon@2x.png │ ├── TemplateInfo.plist │ ├── ___VARIABLE_sceneIdentifier___.storyboard │ ├── ___VARIABLE_sceneIdentifier___Coordinator.swift │ ├── ___VARIABLE_sceneIdentifier___ViewController.swift │ └── ___VARIABLE_sceneIdentifier___ViewModel.swift ├── Nibable View.xctemplate │ ├── TemplateIcon.png │ ├── TemplateIcon@2x.png │ ├── TemplateInfo.plist │ ├── ___VARIABLE_sourceViewIdentifier___View.swift │ └── ___VARIABLE_sourceViewIdentifier___View.xib └── Service.xctemplate │ ├── TemplateIcon.png │ ├── TemplateIcon@2x.png │ ├── TemplateInfo.plist │ └── ___VARIABLE_serviceIdentifier___.swift ├── Makefile ├── README.md └── SwiftUI └── Scene.xctemplate ├── .DS_Store ├── TemplateIcon.png ├── TemplateIcon@2x.png ├── TemplateInfo.plist ├── ___VARIABLE_sceneIdentifier___View.swift └── ___VARIABLE_sceneIdentifier___ViewState.swift /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/.DS_Store -------------------------------------------------------------------------------- /CellKit/Collection View Cell.xctemplate/TemplateIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/CellKit/Collection View Cell.xctemplate/TemplateIcon.png -------------------------------------------------------------------------------- /CellKit/Collection View Cell.xctemplate/TemplateIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/CellKit/Collection View Cell.xctemplate/TemplateIcon@2x.png -------------------------------------------------------------------------------- /CellKit/Collection View Cell.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DefaultCompletionName 6 | CellKit Collection View Cell 7 | Summary 8 | This generates a new collection view cell under CellKit. 9 | Description 10 | This generates a new cell. 11 | Kind 12 | Xcode.IDEKit.TextSubstitutionFileTemplateKind 13 | Platforms 14 | 15 | com.apple.platform.iphoneos 16 | 17 | SortOrder 18 | 9 19 | Options 20 | 21 | 22 | Description 23 | The name of the cell to create 24 | Identifier 25 | sourceCellName 26 | Name 27 | New cell name: 28 | NotPersisted 29 | 30 | Required 31 | 32 | Type 33 | text 34 | 35 | 36 | Default 37 | ___VARIABLE_sourceCellName:identifier___ 38 | Identifier 39 | sourceCellIdentifier 40 | Type 41 | static 42 | 43 | 44 | Default 45 | ___VARIABLE_sourceCellIdentifier___CollectionViewCell 46 | Description 47 | The XIB name 48 | Identifier 49 | xibName 50 | Name 51 | XIB name: 52 | Required 53 | 54 | Type 55 | static 56 | 57 | 58 | Default 59 | ___VARIABLE_sourceCellIdentifier___CollectionViewCell 60 | Description 61 | The Cell name 62 | Identifier 63 | cellName 64 | Name 65 | Cell name: 66 | Required 67 | 68 | Type 69 | static 70 | 71 | 72 | Default 73 | ___VARIABLE_sourceCellIdentifier___CollectionViewCellModel 74 | Description 75 | The cell model name 76 | Identifier 77 | cellModelName 78 | Name 79 | CellModel name: 80 | Required 81 | 82 | Type 83 | static 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /CellKit/Collection View Cell.xctemplate/___VARIABLE_sourceCellIdentifier___CollectionViewCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___ using CellKit Collection View Cell Template (v1.0). 6 | // Copyright © ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import CellKit 10 | 11 | final class ___VARIABLE_sourceCellIdentifier___CollectionViewCell: UICollectionViewCell { 12 | 13 | } 14 | 15 | extension ___VARIABLE_sourceCellIdentifier___CollectionViewCell: CellConfigurable { 16 | func configure(with model: ___VARIABLE_sourceCellIdentifier___CollectionViewCellModel) { 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /CellKit/Collection View Cell.xctemplate/___VARIABLE_sourceCellIdentifier___CollectionViewCell.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /CellKit/Collection View Cell.xctemplate/___VARIABLE_sourceCellIdentifier___CollectionViewCellModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___ using CellKit Collection View Cell Template (v1.0). 6 | // Copyright © ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import CellKit 10 | 11 | struct ___VARIABLE_sourceCellIdentifier___CollectionViewCellModel { 12 | 13 | } 14 | 15 | extension ___VARIABLE_sourceCellIdentifier___CollectionViewCellModel: CellModel, ReusableCellConvertible { 16 | typealias Cell = ___VARIABLE_sourceCellIdentifier___CollectionViewCell 17 | } 18 | -------------------------------------------------------------------------------- /CellKit/Collection View Reusable View.xctemplate/TemplateIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/CellKit/Collection View Reusable View.xctemplate/TemplateIcon.png -------------------------------------------------------------------------------- /CellKit/Collection View Reusable View.xctemplate/TemplateIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/CellKit/Collection View Reusable View.xctemplate/TemplateIcon@2x.png -------------------------------------------------------------------------------- /CellKit/Collection View Reusable View.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DefaultCompletionName 6 | CellKit Collection View Reusable View 7 | Summary 8 | This generates a new collection reusable view. 9 | Description 10 | This generates a new cell. 11 | Kind 12 | Xcode.IDEKit.TextSubstitutionFileTemplateKind 13 | Platforms 14 | 15 | com.apple.platform.iphoneos 16 | 17 | SortOrder 18 | 9 19 | Options 20 | 21 | 22 | Description 23 | The name of the view to create 24 | Identifier 25 | sourceViewName 26 | Name 27 | New view name: 28 | NotPersisted 29 | 30 | Required 31 | 32 | Type 33 | text 34 | 35 | 36 | Default 37 | ___VARIABLE_sourceViewName:identifier___ 38 | Identifier 39 | sourceViewIdentifier 40 | Type 41 | static 42 | 43 | 44 | Default 45 | ___VARIABLE_sourceViewIdentifier___CollectionViewReusableView 46 | Description 47 | The XIB name 48 | Identifier 49 | xibName 50 | Name 51 | XIB name: 52 | Required 53 | 54 | Type 55 | static 56 | 57 | 58 | Default 59 | ___VARIABLE_sourceViewIdentifier___CollectionViewReusableView 60 | Description 61 | The view name 62 | Identifier 63 | viewName 64 | Name 65 | View name: 66 | Required 67 | 68 | Type 69 | static 70 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /CellKit/Collection View Reusable View.xctemplate/___VARIABLE_sourceViewIdentifier___CollectionViewReusableView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___ using Collection Reusable View Template (v1.0). 6 | // Copyright © ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | final class ___VARIABLE_sourceViewIdentifier___CollectionViewReusableView: UICollectionReusableView { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /CellKit/Collection View Reusable View.xctemplate/___VARIABLE_sourceViewIdentifier___CollectionViewReusableView.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /CellKit/Table View Cell.xctemplate/TemplateIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/CellKit/Table View Cell.xctemplate/TemplateIcon.png -------------------------------------------------------------------------------- /CellKit/Table View Cell.xctemplate/TemplateIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/CellKit/Table View Cell.xctemplate/TemplateIcon@2x.png -------------------------------------------------------------------------------- /CellKit/Table View Cell.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DefaultCompletionName 6 | CellKit Table View Cell 7 | Summary 8 | This generates a new table view cell for CellKit. 9 | Description 10 | This generates a new cell. 11 | Kind 12 | Xcode.IDEKit.TextSubstitutionFileTemplateKind 13 | Platforms 14 | 15 | com.apple.platform.iphoneos 16 | 17 | SortOrder 18 | 9 19 | Options 20 | 21 | 22 | Description 23 | The name of the cell to create 24 | Identifier 25 | sourceCellName 26 | Name 27 | New cell name: 28 | NotPersisted 29 | 30 | Required 31 | 32 | Type 33 | text 34 | 35 | 36 | Default 37 | ___VARIABLE_sourceCellName:identifier___ 38 | Identifier 39 | sourceCellIdentifier 40 | Type 41 | static 42 | 43 | 44 | Default 45 | ___VARIABLE_sourceCellIdentifier___TableViewCell 46 | Description 47 | The XIB name 48 | Identifier 49 | xibName 50 | Name 51 | XIB name: 52 | Required 53 | 54 | Type 55 | static 56 | 57 | 58 | Default 59 | ___VARIABLE_sourceCellIdentifier___TableViewCell 60 | Description 61 | The Cell name 62 | Identifier 63 | cellName 64 | Name 65 | Cell name: 66 | Required 67 | 68 | Type 69 | static 70 | 71 | 72 | Default 73 | ___VARIABLE_sourceCellIdentifier___TableViewCellModel 74 | Description 75 | The cell model name 76 | Identifier 77 | cellModelName 78 | Name 79 | CellModel name: 80 | Required 81 | 82 | Type 83 | static 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /CellKit/Table View Cell.xctemplate/___VARIABLE_sourceCellIdentifier___TableViewCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___ using CellKit Table View Cell Template (v1.0). 6 | // Copyright © ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import CellKit 10 | 11 | final class ___VARIABLE_sourceCellIdentifier___TableViewCell: UITableViewCell { 12 | 13 | } 14 | 15 | extension ___VARIABLE_sourceCellIdentifier___TableViewCell: CellConfigurable { 16 | func configure(with model: ___VARIABLE_sourceCellIdentifier___TableViewCellModel) { 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /CellKit/Table View Cell.xctemplate/___VARIABLE_sourceCellIdentifier___TableViewCell.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /CellKit/Table View Cell.xctemplate/___VARIABLE_sourceCellIdentifier___TableViewCellModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___ using CellKit Table View Cell Template (v1.0). 6 | // Copyright © ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import CellKit 10 | 11 | struct ___VARIABLE_sourceCellIdentifier___TableViewCellModel { 12 | 13 | } 14 | 15 | extension ___VARIABLE_sourceCellIdentifier___TableViewCellModel: CellModel, ReusableCellConvertible { 16 | typealias Cell = ___VARIABLE_sourceCellIdentifier___TableViewCell 17 | 18 | var cellHeight: Double { 19 | return .automaticDimension 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /CellKit/Table View Header Footer.xctemplate/TemplateIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/CellKit/Table View Header Footer.xctemplate/TemplateIcon.png -------------------------------------------------------------------------------- /CellKit/Table View Header Footer.xctemplate/TemplateIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/CellKit/Table View Header Footer.xctemplate/TemplateIcon@2x.png -------------------------------------------------------------------------------- /CellKit/Table View Header Footer.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DefaultCompletionName 6 | CellKit Table View Header Footer View 7 | Summary 8 | This generates a new table view header footer view for CellKit 9 | Description 10 | This generates a new header footer view. 11 | Kind 12 | Xcode.IDEKit.TextSubstitutionFileTemplateKind 13 | Platforms 14 | 15 | com.apple.platform.iphoneos 16 | 17 | SortOrder 18 | 9 19 | Options 20 | 21 | 22 | Description 23 | The name of the header footer view to create 24 | Identifier 25 | sourceCellName 26 | Name 27 | New header footer name: 28 | NotPersisted 29 | 30 | Required 31 | 32 | Type 33 | text 34 | 35 | 36 | Default 37 | ___VARIABLE_sourceCellName:identifier___ 38 | Identifier 39 | sourceCellIdentifier 40 | Type 41 | static 42 | 43 | 44 | Default 45 | ___VARIABLE_sourceCellIdentifier___TableViewHeaderFooter 46 | Description 47 | The XIB name 48 | Identifier 49 | xibName 50 | Name 51 | XIB name: 52 | Required 53 | 54 | Type 55 | static 56 | 57 | 58 | Default 59 | ___VARIABLE_sourceCellIdentifier___TableViewHeaderFooter 60 | Description 61 | The Cell name 62 | Identifier 63 | cellName 64 | Name 65 | Cell name: 66 | Required 67 | 68 | Type 69 | static 70 | 71 | 72 | Default 73 | ___VARIABLE_sourceCellIdentifier___TableViewHeaderFooterModel 74 | Description 75 | The cell model name 76 | Identifier 77 | cellModelName 78 | Name 79 | CellModel name: 80 | Required 81 | 82 | Type 83 | static 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /CellKit/Table View Header Footer.xctemplate/___VARIABLE_sourceCellIdentifier___TableViewHeaderFooter.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___ using CellKit Table View Header Footer Template (v1.0). 6 | // Copyright © ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import CellKit 10 | 11 | final class ___VARIABLE_sourceCellIdentifier___TableViewHeaderFooter: UITableViewHeaderFooterView { 12 | 13 | override func awakeFromNib() { 14 | super.awakeFromNib() 15 | } 16 | 17 | } 18 | 19 | extension ___VARIABLE_sourceCellIdentifier___TableViewHeaderFooter: CellConfigurable { 20 | func configure(with model: ___VARIABLE_sourceCellIdentifier___TableViewHeaderFooterModel) { 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /CellKit/Table View Header Footer.xctemplate/___VARIABLE_sourceCellIdentifier___TableViewHeaderFooter.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /CellKit/Table View Header Footer.xctemplate/___VARIABLE_sourceCellIdentifier___TableViewHeaderFooterModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___ using CellKit Table View Header Footer Template (v1.0). 6 | // Copyright © ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import CellKit 10 | 11 | struct ___VARIABLE_sourceCellIdentifier___TableViewHeaderFooterModel { 12 | 13 | } 14 | 15 | extension ___VARIABLE_sourceCellIdentifier___TableViewHeaderFooterModel: SupplementaryViewModel, CellConvertible { 16 | typealias Cell = ___VARIABLE_sourceCellIdentifier___TableViewHeaderFooter 17 | 18 | var cellHeight: Double { 19 | return 45.0 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /FTAPIKit/Endpoints.xctemplate/Default/___VARIABLE_endpointName___Endpoints.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___ using FTAPIKit Endpoint Template (v1.0). 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import FTAPIKit 10 | 11 | struct ___VARIABLE_templateName___Endpoint: APIEndpoint { 12 | 13 | let path: String = "" 14 | 15 | } 16 | -------------------------------------------------------------------------------- /FTAPIKit/Endpoints.xctemplate/HasRequest/___VARIABLE_endpointName___Endpoints.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___ using FTAPIKit Request Endpoint Template (v1.0). 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import FTAPIKit 10 | 11 | struct ___VARIABLE_templateName___Endpoint: APIRequestEndpoint { 12 | typealias Request = ___VARIABLE_templateName___Request 13 | 14 | var body: ___VARIABLE_templateName___Request 15 | var path: String 16 | } 17 | -------------------------------------------------------------------------------- /FTAPIKit/Endpoints.xctemplate/HasRequest/___VARIABLE_endpointName___Requests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___ using FTAPIKit Request Endpoint Template (v1.0). 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct ___VARIABLE_templateName___Request: Encodable {} 12 | -------------------------------------------------------------------------------- /FTAPIKit/Endpoints.xctemplate/HasRequestHasResponse/___VARIABLE_endpointName___Endpoints.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___ using FTAPIKit Request Response Endpoint Template (v1.0). 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import FTAPIKit 10 | 11 | struct ___VARIABLE_templateName___Endpoint: APIRequestResponseEndpoint { 12 | typealias Response = ___VARIABLE_templateName___Response 13 | typealias Request = ___VARIABLE_templateName___Request 14 | 15 | var body: ___VARIABLE_templateName___Request 16 | let path: String = "" 17 | 18 | } 19 | -------------------------------------------------------------------------------- /FTAPIKit/Endpoints.xctemplate/HasRequestHasResponse/___VARIABLE_endpointName___Requests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___ using FTAPIKit Request Response Endpoint Template (v1.0). 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct ___VARIABLE_templateName___Request: Encodable {} 12 | -------------------------------------------------------------------------------- /FTAPIKit/Endpoints.xctemplate/HasRequestHasResponse/___VARIABLE_endpointName___Responses.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___ using FTAPIKit Request Response Endpoint Template (v1.0). 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct ___VARIABLE_templateName___Response: Decodable { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /FTAPIKit/Endpoints.xctemplate/HasResponse/___VARIABLE_endpointName___Endpoints.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___ using FTAPIKit Response Endpoint Template (v1.0). 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import FTAPIKit 10 | 11 | struct ___VARIABLE_templateName___Endpoint: APIResponseEndpoint { 12 | typealias Response = ___VARIABLE_templateName___Response 13 | 14 | let path: String = "" 15 | 16 | } 17 | -------------------------------------------------------------------------------- /FTAPIKit/Endpoints.xctemplate/HasResponse/___VARIABLE_endpointName___Responses.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___ using FTAPIKit Response Endpoint Template (v1.0). 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct ___VARIABLE_templateName___Response: Decodable { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /FTAPIKit/Endpoints.xctemplate/TemplateIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/FTAPIKit/Endpoints.xctemplate/TemplateIcon.png -------------------------------------------------------------------------------- /FTAPIKit/Endpoints.xctemplate/TemplateIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/FTAPIKit/Endpoints.xctemplate/TemplateIcon@2x.png -------------------------------------------------------------------------------- /FTAPIKit/Endpoints.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DefaultCompletionName 6 | Endpoint 7 | Description 8 | This generates a new endpoint for use with the APIAdapter from the FTAPIKit. 9 | Kind 10 | Xcode.IDEKit.TextSubstitutionFileTemplateKind 11 | Options 12 | 13 | 14 | Description 15 | The name of the endpoint 16 | Identifier 17 | endpointName 18 | Name 19 | Endpoint file name: 20 | NotPersisted 21 | 22 | Required 23 | 24 | Type 25 | text 26 | 27 | 28 | Description 29 | The name of template request. 30 | Identifier 31 | templateName 32 | Name 33 | Template endpoint name: 34 | NotPersisted 35 | 36 | Required 37 | 38 | Type 39 | text 40 | 41 | 42 | Identifier 43 | hasRequest 44 | Name 45 | Generate Request file 46 | Description 47 | Check whethe you want to create file containing requests. 48 | Type 49 | checkbox 50 | 51 | 52 | Identifier 53 | hasResponse 54 | Name 55 | Generate Response file 56 | Description 57 | Check whethe you want to create file containing responses. 58 | Type 59 | checkbox 60 | 61 | 62 | Platforms 63 | 64 | com.apple.platform.iphoneos 65 | 66 | SortOrder 67 | 99 68 | Summary 69 | This generates a new service for use with the ServiceHolder (dependency injection) from the FuntastyKit. 70 | 71 | 72 | -------------------------------------------------------------------------------- /KMP/KMP Scene.xctemplate/TemplateIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/KMP/KMP Scene.xctemplate/TemplateIcon.png -------------------------------------------------------------------------------- /KMP/KMP Scene.xctemplate/TemplateIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/KMP/KMP Scene.xctemplate/TemplateIcon@2x.png -------------------------------------------------------------------------------- /KMP/KMP Scene.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DefaultCompletionName 6 | KMP Scene 7 | Description 8 | This generates a new KMP SwiftUI scene using Futured architecture. It consists of the view, view model protocol and view model. 9 | Kind 10 | Xcode.IDEKit.TextSubstitutionFileTemplateKind 11 | Options 12 | 13 | 14 | Description 15 | The name of the scene to create 16 | Identifier 17 | sceneName 18 | Name 19 | New Scene Name: 20 | NotPersisted 21 | 22 | Required 23 | 24 | Type 25 | text 26 | 27 | 28 | Description 29 | The name of shared KMP module 30 | Identifier 31 | kmpModuleName 32 | Name 33 | KMP Module Name: 34 | NotPersisted 35 | 36 | Required 37 | 38 | Type 39 | text 40 | 41 | 42 | Default 43 | ___VARIABLE_sceneName:identifier___ 44 | Identifier 45 | sceneIdentifier 46 | Type 47 | static 48 | 49 | 50 | Default 51 | ___VARIABLE_sceneIdentifier___View 52 | Description 53 | The view name 54 | Identifier 55 | viewName 56 | Name 57 | View Name: 58 | Required 59 | 60 | Type 61 | static 62 | 63 | 64 | Default 65 | ___VARIABLE_sceneIdentifier___ViewModel 66 | Description 67 | The view model name 68 | Identifier 69 | viewModelName 70 | Name 71 | ViewModel Name: 72 | Required 73 | 74 | Type 75 | static 76 | 77 | 78 | Platforms 79 | 80 | com.apple.platform.iphoneos 81 | 82 | SortOrder 83 | 10 84 | Summary 85 | This generates a new SwiftUI scene using Futured KMP architecture. 86 | 87 | 88 | -------------------------------------------------------------------------------- /KMP/KMP Scene.xctemplate/___VARIABLE_sceneIdentifier___View.swift: -------------------------------------------------------------------------------- 1 | import ___VARIABLE_kmpModuleName___ 2 | import SwiftUI 3 | 4 | struct ___VARIABLE_sceneIdentifier___View: View { 5 | private let viewModel: ViewModel 6 | 7 | init(_ viewModel: ViewModel) { 8 | self.viewModel = viewModel 9 | } 10 | 11 | var body: some View { 12 | Text("___VARIABLE_sceneIdentifier___View") 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /KMP/KMP Scene.xctemplate/___VARIABLE_sceneIdentifier___ViewModel.swift: -------------------------------------------------------------------------------- 1 | import ___VARIABLE_kmpModuleName___ 2 | import SwiftUI 3 | 4 | protocol ___VARIABLE_sceneIdentifier___ViewModelProtocol: DynamicProperty { 5 | } 6 | 7 | struct ___VARIABLE_sceneIdentifier___ViewModel { 8 | @StateObject @KotlinStateFlow private var viewState: ___VARIABLE_sceneIdentifier___ViewState 9 | private let actions: ___VARIABLE_sceneIdentifier___ScreenActions 10 | private let events: SkieSwiftFlow<___VARIABLE_sceneIdentifier___Event> 11 | 12 | init(_ screen: ___VARIABLE_sceneIdentifier___Screen) { 13 | self._viewState = .init(screen.viewState) 14 | self.actions = screen.actions 15 | self.events = screen.events 16 | } 17 | } 18 | 19 | extension ___VARIABLE_sceneIdentifier___ViewModel: ___VARIABLE_sceneIdentifier___ViewModelProtocol {} 20 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2020 Futured apps s.r.o. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /Logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Modal Scene.xctemplate/TemplateIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/MVVM-C/MVVM-C Modal Scene.xctemplate/TemplateIcon.png -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Modal Scene.xctemplate/TemplateIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/MVVM-C/MVVM-C Modal Scene.xctemplate/TemplateIcon@2x.png -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Modal Scene.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DefaultCompletionName 6 | Scene 7 | Description 8 | This generates a new modal scene using Futured MVVM-C architecture. It consists of the view controller, view model, coordinator and storyboard. 9 | Kind 10 | Xcode.IDEKit.TextSubstitutionFileTemplateKind 11 | Options 12 | 13 | 14 | Description 15 | The name of the scene to create 16 | Identifier 17 | sceneName 18 | Name 19 | New Scene Name: 20 | NotPersisted 21 | 22 | Required 23 | 24 | Type 25 | text 26 | 27 | 28 | Default 29 | ___VARIABLE_sceneName:identifier___ 30 | Identifier 31 | sceneIdentifier 32 | Type 33 | static 34 | 35 | 36 | Default 37 | ___VARIABLE_sceneIdentifier___ViewController 38 | Description 39 | The view controller name 40 | Identifier 41 | viewControllerName 42 | Name 43 | View Controller Name: 44 | Required 45 | 46 | Type 47 | static 48 | 49 | 50 | Default 51 | ___VARIABLE_sceneIdentifier___ViewModel 52 | Description 53 | The view model name 54 | Identifier 55 | viewModelName 56 | Name 57 | ViewModel Name: 58 | Required 59 | 60 | Type 61 | static 62 | 63 | 64 | Default 65 | ___VARIABLE_sceneIdentifier___Coordinator 66 | Description 67 | The coordinator name 68 | Identifier 69 | coordinatorName 70 | Name 71 | Coordinator Name: 72 | Required 73 | 74 | Type 75 | static 76 | 77 | 78 | Default 79 | ___VARIABLE_sceneIdentifier___Storyboard 80 | Description 81 | The storyboard name 82 | Identifier 83 | storyboardName 84 | Name 85 | Storyboard Name: 86 | Required 87 | 88 | Type 89 | static 90 | 91 | 92 | Platforms 93 | 94 | com.apple.platform.iphoneos 95 | 96 | SortOrder 97 | 9 98 | Summary 99 | This generates a new modal scene using Futured MVVM-C architecture. 100 | 101 | 102 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Modal Scene.xctemplate/___VARIABLE_sceneIdentifier___.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Modal Scene.xctemplate/___VARIABLE_sceneIdentifier___Coordinator.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import FuntastyKit 11 | 12 | private struct ___VARIABLE_sceneIdentifier___Storyboard: StoryboardType { 13 | static let name = "___VARIABLE_sceneIdentifier___" 14 | static let navigationController = StoryboardReference<___VARIABLE_sceneIdentifier___Storyboard, UINavigationController>(id: "___VARIABLE_sceneIdentifier___NavigationControllerID") 15 | static let viewController = StoryboardReference<___VARIABLE_sceneIdentifier___Storyboard, ___VARIABLE_sceneIdentifier___ViewController>(id: "___VARIABLE_sceneIdentifier___ViewControllerID") 16 | } 17 | 18 | final class ___VARIABLE_sceneIdentifier___Coordinator: ModalCoordinator { 19 | let sourceViewController: UIViewController 20 | weak var destinationNavigationController: UINavigationController? 21 | weak var viewController: ___VARIABLE_sceneIdentifier___ViewController? 22 | 23 | private let serviceHolder: ServiceHolder 24 | 25 | init(sourceViewController: UIViewController, serviceHolder: ServiceHolder) { 26 | self.sourceViewController = sourceViewController 27 | self.serviceHolder = serviceHolder 28 | self.destinationNavigationController = ___VARIABLE_sceneIdentifier___Storyboard.navigationController.instantiate() 29 | self.viewController = destinationNavigationController?.topViewController as? ___VARIABLE_sceneIdentifier___ViewController 30 | } 31 | 32 | func configure(viewController: ___VARIABLE_sceneIdentifier___ViewController) { 33 | viewController.viewModel = ___VARIABLE_sceneIdentifier___ViewModel(coordinator: self, viewController: viewController) 34 | } 35 | } 36 | 37 | extension ___VARIABLE_sceneIdentifier___Coordinator: ___VARIABLE_sceneIdentifier___CoordinatorInput { 38 | } 39 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Modal Scene.xctemplate/___VARIABLE_sceneIdentifier___ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | final class ___VARIABLE_sceneIdentifier___ViewController: UIViewController { 12 | var viewModel: ___VARIABLE_sceneIdentifier___ViewModel! 13 | 14 | // MARK: - View lifecycle 15 | 16 | override func viewDidLoad() { 17 | super.viewDidLoad() 18 | } 19 | } 20 | 21 | extension ___VARIABLE_sceneIdentifier___ViewController: ___VARIABLE_sceneIdentifier___ViewControllerInput { 22 | } 23 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Modal Scene.xctemplate/___VARIABLE_sceneIdentifier___ViewModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import FuntastyKit 11 | 12 | protocol ___VARIABLE_sceneIdentifier___CoordinatorInput: Coordinator { 13 | } 14 | 15 | protocol ___VARIABLE_sceneIdentifier___ViewControllerInput: AnyObject { 16 | } 17 | 18 | final class ___VARIABLE_sceneIdentifier___ViewModel { 19 | private let coordinator: ___VARIABLE_sceneIdentifier___CoordinatorInput 20 | private weak var viewController: ___VARIABLE_sceneIdentifier___ViewControllerInput? 21 | 22 | init(coordinator: ___VARIABLE_sceneIdentifier___CoordinatorInput, viewController: ___VARIABLE_sceneIdentifier___ViewControllerInput) { 23 | self.coordinator = coordinator 24 | self.viewController = viewController 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Push Scene.xctemplate/TemplateIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/MVVM-C/MVVM-C Push Scene.xctemplate/TemplateIcon.png -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Push Scene.xctemplate/TemplateIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/MVVM-C/MVVM-C Push Scene.xctemplate/TemplateIcon@2x.png -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Push Scene.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DefaultCompletionName 6 | Scene 7 | Description 8 | This generates a new push scene using Futured MVVM-C architecture. It consists of the view controller, view model, coordinator and storyboard. 9 | Kind 10 | Xcode.IDEKit.TextSubstitutionFileTemplateKind 11 | Options 12 | 13 | 14 | Description 15 | The name of the scene to create 16 | Identifier 17 | sceneName 18 | Name 19 | New Scene Name: 20 | NotPersisted 21 | 22 | Required 23 | 24 | Type 25 | text 26 | 27 | 28 | Default 29 | ___VARIABLE_sceneName:identifier___ 30 | Identifier 31 | sceneIdentifier 32 | Type 33 | static 34 | 35 | 36 | Default 37 | ___VARIABLE_sceneIdentifier___ViewController 38 | Description 39 | The view controller name 40 | Identifier 41 | viewControllerName 42 | Name 43 | View Controller Name: 44 | Required 45 | 46 | Type 47 | static 48 | 49 | 50 | Default 51 | ___VARIABLE_sceneIdentifier___ViewModel 52 | Description 53 | The view model name 54 | Identifier 55 | viewModelName 56 | Name 57 | ViewModel Name: 58 | Required 59 | 60 | Type 61 | static 62 | 63 | 64 | Default 65 | ___VARIABLE_sceneIdentifier___Coordinator 66 | Description 67 | The coordinator name 68 | Identifier 69 | coordinatorName 70 | Name 71 | Coordinator Name: 72 | Required 73 | 74 | Type 75 | static 76 | 77 | 78 | Default 79 | ___VARIABLE_sceneIdentifier___Storyboard 80 | Description 81 | The storyboard name 82 | Identifier 83 | storyboardName 84 | Name 85 | Storyboard Name: 86 | Required 87 | 88 | Type 89 | static 90 | 91 | 92 | Platforms 93 | 94 | com.apple.platform.iphoneos 95 | 96 | SortOrder 97 | 9 98 | Summary 99 | This generates a new push scene using Futured MVVM-C architecture. 100 | 101 | 102 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Push Scene.xctemplate/___VARIABLE_sceneIdentifier___.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Push Scene.xctemplate/___VARIABLE_sceneIdentifier___Coordinator.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import FuntastyKit 11 | 12 | private struct ___VARIABLE_sceneIdentifier___Storyboard: StoryboardType { 13 | static let name = "___VARIABLE_sceneIdentifier___" 14 | static let viewController = StoryboardReference<___VARIABLE_sceneIdentifier___Storyboard, ___VARIABLE_sceneIdentifier___ViewController>(id: "___VARIABLE_sceneIdentifier___ViewControllerID") 15 | } 16 | 17 | final class ___VARIABLE_sceneIdentifier___Coordinator: PushCoordinator { 18 | weak var navigationController: UINavigationController? 19 | weak var viewController: ___VARIABLE_sceneIdentifier___ViewController? 20 | 21 | private let serviceHolder: ServiceHolder 22 | 23 | init(navigationController: UINavigationController, serviceHolder: ServiceHolder) { 24 | self.navigationController = navigationController 25 | self.serviceHolder = serviceHolder 26 | self.viewController = ___VARIABLE_sceneIdentifier___Storyboard.viewController.instantiate() 27 | } 28 | 29 | func configure(viewController: ___VARIABLE_sceneIdentifier___ViewController) { 30 | viewController.viewModel = ___VARIABLE_sceneIdentifier___ViewModel(coordinator: self, viewController: viewController) 31 | } 32 | } 33 | 34 | extension ___VARIABLE_sceneIdentifier___Coordinator: ___VARIABLE_sceneIdentifier___CoordinatorInput { 35 | } 36 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Push Scene.xctemplate/___VARIABLE_sceneIdentifier___ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | final class ___VARIABLE_sceneIdentifier___ViewController: UIViewController { 12 | var viewModel: ___VARIABLE_sceneIdentifier___ViewModel! 13 | 14 | // MARK: - View lifecycle 15 | 16 | override func viewDidLoad() { 17 | super.viewDidLoad() 18 | } 19 | } 20 | 21 | extension ___VARIABLE_sceneIdentifier___ViewController: ___VARIABLE_sceneIdentifier___ViewControllerInput { 22 | } 23 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Push Scene.xctemplate/___VARIABLE_sceneIdentifier___ViewModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import FuntastyKit 11 | 12 | protocol ___VARIABLE_sceneIdentifier___CoordinatorInput: Coordinator { 13 | } 14 | 15 | protocol ___VARIABLE_sceneIdentifier___ViewControllerInput: AnyObject { 16 | } 17 | 18 | final class ___VARIABLE_sceneIdentifier___ViewModel { 19 | private let coordinator: ___VARIABLE_sceneIdentifier___CoordinatorInput 20 | private weak var viewController: ___VARIABLE_sceneIdentifier___ViewControllerInput? 21 | 22 | init(coordinator: ___VARIABLE_sceneIdentifier___CoordinatorInput, viewController: ___VARIABLE_sceneIdentifier___ViewControllerInput) { 23 | self.coordinator = coordinator 24 | self.viewController = viewController 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Scene.xctemplate/TemplateIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/MVVM-C/MVVM-C Scene.xctemplate/TemplateIcon.png -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Scene.xctemplate/TemplateIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/MVVM-C/MVVM-C Scene.xctemplate/TemplateIcon@2x.png -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Scene.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DefaultCompletionName 6 | Scene 7 | Description 8 | This generates a new scene using Futured MVVM-C architecture. It consists of the view controller, view model, coordinator and storyboard. 9 | Kind 10 | Xcode.IDEKit.TextSubstitutionFileTemplateKind 11 | Options 12 | 13 | 14 | Description 15 | The name of the scene to create 16 | Identifier 17 | sceneName 18 | Name 19 | New Scene Name: 20 | NotPersisted 21 | 22 | Required 23 | 24 | Type 25 | text 26 | 27 | 28 | Default 29 | ___VARIABLE_sceneName:identifier___ 30 | Identifier 31 | sceneIdentifier 32 | Type 33 | static 34 | 35 | 36 | Default 37 | ___VARIABLE_sceneIdentifier___ViewController 38 | Description 39 | The view controller name 40 | Identifier 41 | viewControllerName 42 | Name 43 | View Controller Name: 44 | Required 45 | 46 | Type 47 | static 48 | 49 | 50 | Default 51 | ___VARIABLE_sceneIdentifier___ViewModel 52 | Description 53 | The view model name 54 | Identifier 55 | viewModelName 56 | Name 57 | ViewModel Name: 58 | Required 59 | 60 | Type 61 | static 62 | 63 | 64 | Default 65 | ___VARIABLE_sceneIdentifier___Coordinator 66 | Description 67 | The coordinator name 68 | Identifier 69 | coordinatorName 70 | Name 71 | Coordinator Name: 72 | Required 73 | 74 | Type 75 | static 76 | 77 | 78 | Default 79 | ___VARIABLE_sceneIdentifier___Storyboard 80 | Description 81 | The storyboard name 82 | Identifier 83 | storyboardName 84 | Name 85 | Storyboard Name: 86 | Required 87 | 88 | Type 89 | static 90 | 91 | 92 | Platforms 93 | 94 | com.apple.platform.iphoneos 95 | 96 | SortOrder 97 | 9 98 | Summary 99 | This generates a new scene using Futured MVVM-C architecture. 100 | 101 | 102 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Scene.xctemplate/___VARIABLE_sceneIdentifier___.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Scene.xctemplate/___VARIABLE_sceneIdentifier___Coordinator.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import FuntastyKit 11 | 12 | private struct ___VARIABLE_sceneIdentifier___Storyboard: StoryboardType { 13 | static let name = "___VARIABLE_sceneIdentifier___" 14 | static let navigationController = StoryboardReference<___VARIABLE_sceneIdentifier___Storyboard, UINavigationController>(id: "___VARIABLE_sceneIdentifier___NavigationControllerID") 15 | static let viewController = StoryboardReference<___VARIABLE_sceneIdentifier___Storyboard, ___VARIABLE_sceneIdentifier___ViewController>(id: "___VARIABLE_sceneIdentifier___ViewControllerID") 16 | } 17 | 18 | final class ___VARIABLE_sceneIdentifier___Coordinator: DefaultCoordinator { 19 | private let navigationController: UINavigationController 20 | weak var viewController: ___VARIABLE_sceneIdentifier___ViewController? 21 | 22 | private let serviceHolder: ServiceHolder 23 | 24 | init(navigationController: UINavigationController, serviceHolder: ServiceHolder) { 25 | self.navigationController = navigationController 26 | self.viewController = ___VARIABLE_sceneIdentifier___Storyboard.viewController.instantiate() 27 | 28 | self.serviceHolder = serviceHolder 29 | } 30 | 31 | func start() { 32 | guard let viewController = viewController else { 33 | return 34 | } 35 | viewController.viewModel = ___VARIABLE_sceneIdentifier___ViewModel(coordinator: self, viewController: viewController) 36 | 37 | navigationController.pushViewController(viewController, animated: true) 38 | } 39 | 40 | func stop() { 41 | _ = navigationController.popViewController(animated: true) 42 | } 43 | } 44 | 45 | extension ___VARIABLE_sceneIdentifier___Coordinator: ___VARIABLE_sceneIdentifier___CoordinatorInput { 46 | } 47 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Scene.xctemplate/___VARIABLE_sceneIdentifier___ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | final class ___VARIABLE_sceneIdentifier___ViewController: UIViewController { 12 | var viewModel: ___VARIABLE_sceneIdentifier___ViewModel! 13 | 14 | // MARK: - View lifecycle 15 | 16 | override func viewDidLoad() { 17 | super.viewDidLoad() 18 | } 19 | } 20 | 21 | extension ___VARIABLE_sceneIdentifier___ViewController: ___VARIABLE_sceneIdentifier___ViewControllerInput { 22 | } 23 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Scene.xctemplate/___VARIABLE_sceneIdentifier___ViewModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import FuntastyKit 11 | 12 | protocol ___VARIABLE_sceneIdentifier___CoordinatorInput: Coordinator { 13 | } 14 | 15 | protocol ___VARIABLE_sceneIdentifier___ViewControllerInput: AnyObject { 16 | } 17 | 18 | final class ___VARIABLE_sceneIdentifier___ViewModel { 19 | private let coordinator: ___VARIABLE_sceneIdentifier___CoordinatorInput 20 | private weak var viewController: ___VARIABLE_sceneIdentifier___ViewControllerInput? 21 | 22 | init(coordinator: ___VARIABLE_sceneIdentifier___CoordinatorInput, viewController: ___VARIABLE_sceneIdentifier___ViewControllerInput) { 23 | self.coordinator = coordinator 24 | self.viewController = viewController 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Show Scene.xctemplate/TemplateIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/MVVM-C/MVVM-C Show Scene.xctemplate/TemplateIcon.png -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Show Scene.xctemplate/TemplateIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/MVVM-C/MVVM-C Show Scene.xctemplate/TemplateIcon@2x.png -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Show Scene.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DefaultCompletionName 6 | Scene 7 | Description 8 | This generates a new show scene using Futured MVVM-C architecture. It consists of the view controller, view model, coordinator and storyboard. 9 | Kind 10 | Xcode.IDEKit.TextSubstitutionFileTemplateKind 11 | Options 12 | 13 | 14 | Description 15 | The name of the scene to create 16 | Identifier 17 | sceneName 18 | Name 19 | New Scene Name: 20 | NotPersisted 21 | 22 | Required 23 | 24 | Type 25 | text 26 | 27 | 28 | Default 29 | ___VARIABLE_sceneName:identifier___ 30 | Identifier 31 | sceneIdentifier 32 | Type 33 | static 34 | 35 | 36 | Default 37 | ___VARIABLE_sceneIdentifier___ViewController 38 | Description 39 | The view controller name 40 | Identifier 41 | viewControllerName 42 | Name 43 | View Controller Name: 44 | Required 45 | 46 | Type 47 | static 48 | 49 | 50 | Default 51 | ___VARIABLE_sceneIdentifier___ViewModel 52 | Description 53 | The view model name 54 | Identifier 55 | viewModelName 56 | Name 57 | ViewModel Name: 58 | Required 59 | 60 | Type 61 | static 62 | 63 | 64 | Default 65 | ___VARIABLE_sceneIdentifier___Coordinator 66 | Description 67 | The coordinator name 68 | Identifier 69 | coordinatorName 70 | Name 71 | Coordinator Name: 72 | Required 73 | 74 | Type 75 | static 76 | 77 | 78 | Default 79 | ___VARIABLE_sceneIdentifier___Storyboard 80 | Description 81 | The storyboard name 82 | Identifier 83 | storyboardName 84 | Name 85 | Storyboard Name: 86 | Required 87 | 88 | Type 89 | static 90 | 91 | 92 | Platforms 93 | 94 | com.apple.platform.iphoneos 95 | 96 | SortOrder 97 | 9 98 | Summary 99 | This generates a new show scene using Futured MVVM-C architecture. 100 | 101 | 102 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Show Scene.xctemplate/___VARIABLE_sceneIdentifier___.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Show Scene.xctemplate/___VARIABLE_sceneIdentifier___Coordinator.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import FuntastyKit 11 | 12 | private struct ___VARIABLE_sceneIdentifier___Storyboard: StoryboardType { 13 | static let name = "___VARIABLE_sceneIdentifier___" 14 | static let navigationController = StoryboardReference<___VARIABLE_sceneIdentifier___Storyboard, UINavigationController>(id: "___VARIABLE_sceneIdentifier___NavigationControllerID") 15 | static let viewController = StoryboardReference<___VARIABLE_sceneIdentifier___Storyboard, ___VARIABLE_sceneIdentifier___ViewController>(id: "___VARIABLE_sceneIdentifier___ViewControllerID") 16 | } 17 | 18 | final class ___VARIABLE_sceneIdentifier___Coordinator: ShowCoordinator { 19 | let sourceViewController: UIViewController 20 | weak var destinationNavigationController: UINavigationController? 21 | weak var viewController: ___VARIABLE_sceneIdentifier___ViewController? 22 | 23 | private let serviceHolder: ServiceHolder 24 | 25 | init(sourceViewController: UIViewController, serviceHolder: ServiceHolder) { 26 | self.sourceViewController = sourceViewController 27 | self.serviceHolder = serviceHolder 28 | self.destinationNavigationController = ___VARIABLE_sceneIdentifier___Storyboard.navigationController.instantiate() 29 | self.viewController = destinationNavigationController?.topViewController as? ___VARIABLE_sceneIdentifier___ViewController 30 | } 31 | 32 | func configure(viewController: ___VARIABLE_sceneIdentifier___ViewController) { 33 | viewController.viewModel = ___VARIABLE_sceneIdentifier___ViewModel(coordinator: self, viewController: viewController) 34 | } 35 | } 36 | 37 | extension ___VARIABLE_sceneIdentifier___Coordinator: ___VARIABLE_sceneIdentifier___CoordinatorInput { 38 | } 39 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Show Scene.xctemplate/___VARIABLE_sceneIdentifier___ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | final class ___VARIABLE_sceneIdentifier___ViewController: UIViewController { 12 | var viewModel: ___VARIABLE_sceneIdentifier___ViewModel! 13 | 14 | // MARK: - View lifecycle 15 | 16 | override func viewDidLoad() { 17 | super.viewDidLoad() 18 | } 19 | } 20 | 21 | extension ___VARIABLE_sceneIdentifier___ViewController: ___VARIABLE_sceneIdentifier___ViewControllerInput { 22 | } 23 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Show Scene.xctemplate/___VARIABLE_sceneIdentifier___ViewModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import FuntastyKit 11 | 12 | protocol ___VARIABLE_sceneIdentifier___CoordinatorInput: Coordinator { 13 | } 14 | 15 | protocol ___VARIABLE_sceneIdentifier___ViewControllerInput: AnyObject { 16 | } 17 | 18 | final class ___VARIABLE_sceneIdentifier___ViewModel { 19 | private let coordinator: ___VARIABLE_sceneIdentifier___CoordinatorInput 20 | private weak var viewController: ___VARIABLE_sceneIdentifier___ViewControllerInput? 21 | 22 | init(coordinator: ___VARIABLE_sceneIdentifier___CoordinatorInput, viewController: ___VARIABLE_sceneIdentifier___ViewControllerInput) { 23 | self.coordinator = coordinator 24 | self.viewController = viewController 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Tab Bar Item Scene.xctemplate/TemplateIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/MVVM-C/MVVM-C Tab Bar Item Scene.xctemplate/TemplateIcon.png -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Tab Bar Item Scene.xctemplate/TemplateIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/MVVM-C/MVVM-C Tab Bar Item Scene.xctemplate/TemplateIcon@2x.png -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Tab Bar Item Scene.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DefaultCompletionName 6 | Scene 7 | Description 8 | This generates a new tab bar item scene using Futured MVVM-C architecture. It consists of the view controller, view model, coordinator and storyboard. 9 | Kind 10 | Xcode.IDEKit.TextSubstitutionFileTemplateKind 11 | Options 12 | 13 | 14 | Description 15 | The name of the scene to create 16 | Identifier 17 | sceneName 18 | Name 19 | New Scene Name: 20 | NotPersisted 21 | 22 | Required 23 | 24 | Type 25 | text 26 | 27 | 28 | Default 29 | ___VARIABLE_sceneName:identifier___ 30 | Identifier 31 | sceneIdentifier 32 | Type 33 | static 34 | 35 | 36 | Default 37 | ___VARIABLE_sceneIdentifier___ViewController 38 | Description 39 | The view controller name 40 | Identifier 41 | viewControllerName 42 | Name 43 | View Controller Name: 44 | Required 45 | 46 | Type 47 | static 48 | 49 | 50 | Default 51 | ___VARIABLE_sceneIdentifier___ViewModel 52 | Description 53 | The view model name 54 | Identifier 55 | viewModelName 56 | Name 57 | ViewModel Name: 58 | Required 59 | 60 | Type 61 | static 62 | 63 | 64 | Default 65 | ___VARIABLE_sceneIdentifier___Coordinator 66 | Description 67 | The coordinator name 68 | Identifier 69 | coordinatorName 70 | Name 71 | Coordinator Name: 72 | Required 73 | 74 | Type 75 | static 76 | 77 | 78 | Default 79 | ___VARIABLE_sceneIdentifier___Storyboard 80 | Description 81 | The storyboard name 82 | Identifier 83 | storyboardName 84 | Name 85 | Storyboard Name: 86 | Required 87 | 88 | Type 89 | static 90 | 91 | 92 | Platforms 93 | 94 | com.apple.platform.iphoneos 95 | 96 | SortOrder 97 | 9 98 | Summary 99 | This generates a new tab bar item scene using Futured MVVM-C architecture. 100 | 101 | 102 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Tab Bar Item Scene.xctemplate/___VARIABLE_sceneIdentifier___.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Tab Bar Item Scene.xctemplate/___VARIABLE_sceneIdentifier___Coordinator.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import FuntastyKit 11 | 12 | private struct ___VARIABLE_sceneIdentifier___Storyboard: StoryboardType { 13 | static let name = "___VARIABLE_sceneIdentifier___" 14 | static let navigationController = StoryboardReference<___VARIABLE_sceneIdentifier___Storyboard, UINavigationController>(id: "___VARIABLE_sceneIdentifier___NavigationControllerID") 15 | static let viewController = StoryboardReference<___VARIABLE_sceneIdentifier___Storyboard, ___VARIABLE_sceneIdentifier___ViewController>(id: "___VARIABLE_sceneIdentifier___ViewControllerID") 16 | } 17 | 18 | final class ___VARIABLE_sceneIdentifier___Coordinator: TabBarItemCoordinator { 19 | weak var tabBarController: UITabBarController? 20 | weak var destinationNavigationController: UINavigationController? 21 | weak var viewController: ___VARIABLE_sceneIdentifier___ViewController? 22 | 23 | private let serviceHolder: ServiceHolder 24 | 25 | init(tabBarController: UITabBarController, serviceHolder: ServiceHolder) { 26 | self.tabBarController = tabBarController 27 | self.serviceHolder = serviceHolder 28 | self.destinationNavigationController = ___VARIABLE_sceneIdentifier___Storyboard.navigationController.instantiate() 29 | self.viewController = destinationNavigationController?.topViewController as? ___VARIABLE_sceneIdentifier___ViewController 30 | } 31 | 32 | func configure(viewController: ___VARIABLE_sceneIdentifier___ViewController) { 33 | viewController.viewModel = ___VARIABLE_sceneIdentifier___ViewModel(coordinator: self, viewController: viewController) 34 | } 35 | } 36 | 37 | extension ___VARIABLE_sceneIdentifier___Coordinator: ___VARIABLE_sceneIdentifier___CoordinatorInput { 38 | } 39 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Tab Bar Item Scene.xctemplate/___VARIABLE_sceneIdentifier___ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | final class ___VARIABLE_sceneIdentifier___ViewController: UIViewController { 12 | var viewModel: ___VARIABLE_sceneIdentifier___ViewModel! 13 | 14 | // MARK: - View lifecycle 15 | 16 | override func viewDidLoad() { 17 | super.viewDidLoad() 18 | } 19 | } 20 | 21 | extension ___VARIABLE_sceneIdentifier___ViewController: ___VARIABLE_sceneIdentifier___ViewControllerInput { 22 | } 23 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Tab Bar Item Scene.xctemplate/___VARIABLE_sceneIdentifier___ViewModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import FuntastyKit 11 | 12 | protocol ___VARIABLE_sceneIdentifier___CoordinatorInput: Coordinator { 13 | } 14 | 15 | protocol ___VARIABLE_sceneIdentifier___ViewControllerInput: AnyObject { 16 | } 17 | 18 | final class ___VARIABLE_sceneIdentifier___ViewModel { 19 | private let coordinator: ___VARIABLE_sceneIdentifier___CoordinatorInput 20 | private weak var viewController: ___VARIABLE_sceneIdentifier___ViewControllerInput? 21 | 22 | init(coordinator: ___VARIABLE_sceneIdentifier___CoordinatorInput, viewController: ___VARIABLE_sceneIdentifier___ViewControllerInput) { 23 | self.coordinator = coordinator 24 | self.viewController = viewController 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Window Scene.xctemplate/TemplateIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/MVVM-C/MVVM-C Window Scene.xctemplate/TemplateIcon.png -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Window Scene.xctemplate/TemplateIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/MVVM-C/MVVM-C Window Scene.xctemplate/TemplateIcon@2x.png -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Window Scene.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DefaultCompletionName 6 | Home 7 | Description 8 | This generates a new root/home scene using Futured MVVM-C architecture. It consists of the view controller, view model, coordinator and storyboard. 9 | Kind 10 | Xcode.IDEKit.TextSubstitutionFileTemplateKind 11 | Options 12 | 13 | 14 | Description 15 | The name of the scene to create 16 | Identifier 17 | sceneName 18 | Name 19 | New Scene Name: 20 | NotPersisted 21 | 22 | Required 23 | 24 | Type 25 | text 26 | 27 | 28 | Default 29 | ___VARIABLE_sceneName:identifier___ 30 | Identifier 31 | sceneIdentifier 32 | Type 33 | static 34 | 35 | 36 | Default 37 | ___VARIABLE_sceneIdentifier___ViewController 38 | Description 39 | The view controller name 40 | Identifier 41 | viewControllerName 42 | Name 43 | View Controller Name: 44 | Required 45 | 46 | Type 47 | static 48 | 49 | 50 | Default 51 | ___VARIABLE_sceneIdentifier___ViewModel 52 | Description 53 | The view model name 54 | Identifier 55 | viewModelName 56 | Name 57 | ViewModel Name: 58 | Required 59 | 60 | Type 61 | static 62 | 63 | 64 | Default 65 | ___VARIABLE_sceneIdentifier___Coordinator 66 | Description 67 | The coordinator name 68 | Identifier 69 | coordinatorName 70 | Name 71 | Coordinator Name: 72 | Required 73 | 74 | Type 75 | static 76 | 77 | 78 | Default 79 | ___VARIABLE_sceneIdentifier___Storyboard 80 | Description 81 | The storyboard name 82 | Identifier 83 | storyboardName 84 | Name 85 | Storyboard Name: 86 | Required 87 | 88 | Type 89 | static 90 | 91 | 92 | Platforms 93 | 94 | com.apple.platform.iphoneos 95 | 96 | SortOrder 97 | 9 98 | Summary 99 | This generates a new root/home scene using Futured MVVM-C architecture. 100 | 101 | 102 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Window Scene.xctemplate/___VARIABLE_sceneIdentifier___.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Window Scene.xctemplate/___VARIABLE_sceneIdentifier___Coordinator.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import FuntastyKit 11 | 12 | private struct ___VARIABLE_sceneIdentifier___Storyboard: StoryboardType { 13 | static let name = "___VARIABLE_sceneIdentifier___" 14 | static let navigationController = StoryboardReference<___VARIABLE_sceneIdentifier___Storyboard, UINavigationController>(id: "___VARIABLE_sceneIdentifier___NavigationControllerID") 15 | static let viewController = StoryboardReference<___VARIABLE_sceneIdentifier___Storyboard, ___VARIABLE_sceneIdentifier___ViewController>(id: "___VARIABLE_sceneIdentifier___ViewControllerID") 16 | } 17 | 18 | final class ___VARIABLE_sceneIdentifier___Coordinator: DefaultCoordinator { 19 | private let window: UIWindow 20 | private weak var destinationNavigationController: UINavigationController? 21 | weak var viewController: ___VARIABLE_sceneIdentifier___ViewController? 22 | 23 | private let serviceHolder: ServiceHolder 24 | 25 | init(window: UIWindow, serviceHolder: ServiceHolder) { 26 | self.window = window 27 | self.serviceHolder = serviceHolder 28 | self.destinationNavigationController = ___VARIABLE_sceneIdentifier___Storyboard.navigationController.instantiate() 29 | self.viewController = destinationNavigationController?.topViewController as? ___VARIABLE_sceneIdentifier___ViewController 30 | } 31 | 32 | func start() { 33 | guard let viewController = viewController, let destinationNavigationController = destinationNavigationController else { 34 | return 35 | } 36 | viewController.viewModel = ___VARIABLE_sceneIdentifier___ViewModel(coordinator: self, viewController: viewController) 37 | window.rootViewController = destinationNavigationController 38 | } 39 | } 40 | 41 | extension ___VARIABLE_sceneIdentifier___Coordinator: ___VARIABLE_sceneIdentifier___CoordinatorInput { 42 | } 43 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Window Scene.xctemplate/___VARIABLE_sceneIdentifier___ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | final class ___VARIABLE_sceneIdentifier___ViewController: UIViewController { 12 | var viewModel: ___VARIABLE_sceneIdentifier___ViewModel! 13 | 14 | // MARK: - View lifecycle 15 | 16 | override func viewDidLoad() { 17 | super.viewDidLoad() 18 | } 19 | } 20 | 21 | extension ___VARIABLE_sceneIdentifier___ViewController: ___VARIABLE_sceneIdentifier___ViewControllerInput { 22 | } 23 | -------------------------------------------------------------------------------- /MVVM-C/MVVM-C Window Scene.xctemplate/___VARIABLE_sceneIdentifier___ViewModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import FuntastyKit 11 | 12 | protocol ___VARIABLE_sceneIdentifier___CoordinatorInput: Coordinator { 13 | } 14 | 15 | protocol ___VARIABLE_sceneIdentifier___ViewControllerInput: AnyObject { 16 | } 17 | 18 | final class ___VARIABLE_sceneIdentifier___ViewModel { 19 | private let coordinator: ___VARIABLE_sceneIdentifier___CoordinatorInput 20 | private weak var viewController: ___VARIABLE_sceneIdentifier___ViewControllerInput? 21 | 22 | init(coordinator: ___VARIABLE_sceneIdentifier___CoordinatorInput, viewController: ___VARIABLE_sceneIdentifier___ViewControllerInput) { 23 | self.coordinator = coordinator 24 | self.viewController = viewController 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /MVVM-C/Nibable View.xctemplate/TemplateIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/MVVM-C/Nibable View.xctemplate/TemplateIcon.png -------------------------------------------------------------------------------- /MVVM-C/Nibable View.xctemplate/TemplateIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/MVVM-C/Nibable View.xctemplate/TemplateIcon@2x.png -------------------------------------------------------------------------------- /MVVM-C/Nibable View.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DefaultCompletionName 6 | Nibable view. 7 | Summary 8 | This generates a new nibable view under FuntastyKit. 9 | Description 10 | This generates a new view. 11 | Kind 12 | Xcode.IDEKit.TextSubstitutionFileTemplateKind 13 | Platforms 14 | 15 | com.apple.platform.iphoneos 16 | 17 | SortOrder 18 | 9 19 | Options 20 | 21 | 22 | Description 23 | The name of the view to create 24 | Identifier 25 | sourceViewName 26 | Name 27 | New view name: 28 | NotPersisted 29 | 30 | Required 31 | 32 | Type 33 | text 34 | 35 | 36 | Default 37 | ___VARIABLE_sourceViewName:identifier___ 38 | Identifier 39 | sourceViewIdentifier 40 | Type 41 | static 42 | 43 | 44 | Default 45 | ___VARIABLE_sourceViewIdentifier___View 46 | Description 47 | The XIB name 48 | Identifier 49 | xibName 50 | Name 51 | XIB name: 52 | Required 53 | 54 | Type 55 | static 56 | 57 | 58 | Default 59 | ___VARIABLE_sourceViewIdentifier___View 60 | Description 61 | The view name 62 | Identifier 63 | viewName 64 | Name 65 | View name: 66 | Required 67 | 68 | Type 69 | static 70 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /MVVM-C/Nibable View.xctemplate/___VARIABLE_sourceViewIdentifier___View.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___ using Nibable View Template (v1.0). 6 | // Copyright © ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import FuntastyKit 11 | 12 | final class ___VARIABLE_sourceViewIdentifier___View: UIView, Nibable { 13 | 14 | override func awakeFromNib() { 15 | super.awakeFromNib() 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /MVVM-C/Nibable View.xctemplate/___VARIABLE_sourceViewIdentifier___View.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /MVVM-C/Service.xctemplate/TemplateIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/MVVM-C/Service.xctemplate/TemplateIcon.png -------------------------------------------------------------------------------- /MVVM-C/Service.xctemplate/TemplateIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/MVVM-C/Service.xctemplate/TemplateIcon@2x.png -------------------------------------------------------------------------------- /MVVM-C/Service.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DefaultCompletionName 6 | Service 7 | Description 8 | This generates a new service for use with the ServiceHolder (dependency injection) from the FuntastyKit. 9 | Kind 10 | Xcode.IDEKit.TextSubstitutionFileTemplateKind 11 | Options 12 | 13 | 14 | Description 15 | The name of the service to create 16 | Identifier 17 | serviceName 18 | Name 19 | Name: 20 | NotPersisted 21 | 22 | Required 23 | 24 | Type 25 | text 26 | 27 | 28 | Default 29 | ___VARIABLE_serviceName:identifier___Service 30 | Description 31 | The service name 32 | Identifier 33 | serviceIdentifier 34 | Name 35 | Service Name: 36 | Required 37 | 38 | Type 39 | static 40 | 41 | 42 | Platforms 43 | 44 | com.apple.platform.iphoneos 45 | 46 | SortOrder 47 | 99 48 | Summary 49 | This generates a new service for use with the ServiceHolder (dependency injection) from the FuntastyKit. 50 | 51 | 52 | -------------------------------------------------------------------------------- /MVVM-C/Service.xctemplate/___VARIABLE_serviceIdentifier___.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import FuntastyKit 11 | 12 | protocol ___VARIABLE_serviceIdentifier___: Service { 13 | 14 | } 15 | 16 | final class Production___VARIABLE_serviceIdentifier___: ___VARIABLE_serviceIdentifier___ { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | 2 | TEMPLATE_NAMES = 'MVVM-C' 'CellKit' 'FTAPIKit' 'SwiftUI' 'KMP' 3 | TEMPLATE_DIR = $(HOME)/Library/Developer/Xcode/Templates/ 4 | 5 | install: 6 | for name in $(TEMPLATE_NAMES) ; do \ 7 | mkdir -p $(TEMPLATE_DIR)$$name ; \ 8 | cd $$name ; \ 9 | cp -R *.xctemplate $(TEMPLATE_DIR)$$name ; \ 10 | cd .. ; \ 11 | done 12 | 13 | .PHONY = install 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | iOS Templates logo 2 | 3 | # iOS Templates 4 | 5 | iOS templates commonly used in [Futured apps](https://futured.app). 6 | 7 | #### MVVM-C templates 8 | The main template generates a new scene using MVVM-C architecture used to used in [Futured apps](https://futured.app). For more specific navigation cases there are window, modal, show, push and tab bar scene templates. 9 | 10 | #### CellKit templates 11 | Basic templates that make working with the [CellKit](https://github.com/futuredapp/CellKit) easier. A table view cell template with model and XIB is available. 12 | 13 | #### FTAPIKit templates 14 | Basic templates that make working with the [FTAPIKit](https://github.com/futuredapp/FTAPIKit) easier. An API endpoint template is available. 15 | 16 | #### SwiftUI templates 17 | The template generates a new scene in SwiftUI. A scene consists of a View and a ViewState. 18 | 19 | ## Installation 20 | 21 | The templates can be added to Xcode simply by cloning the repo and running `make` in it. 22 | 23 | Also, they could be installed by running some template management tool like [xcman](https://github.com/josefdolezal/xcman): 24 | 25 | ``` 26 | xcman templates install --name Futured\ Templates futuredapp/iOS-templates 27 | ``` 28 | 29 | ## Contributors 30 | 31 | Current maintainer and main contributor is [Patrik Potoček](https://github.com/Patrez), . 32 | 33 | We want to thank other contributors, namely: 34 | 35 | - [Matěj Kašpar Jirásek](https://github.com/mkj-is) 36 | - [Mikoláš Stuchlík](https://github.com/mikolasstuchlik) 37 | - [Adam Leitgeb](https://github.com/adam-leitgeb) 38 | - [Petr Zvoníček](https://github.com/zvonicek) 39 | - [Michal Simik](https://github.com/michals92) 40 | - [Tomáš Babulák](https://github.com/tomasbabulak) 41 | - [Adam Bezak](https://github.com/michalsrutek) 42 | - [Adam Salih](https://github.com/max9631) 43 | - [Radek Doležal](https://github.com/eRDe33) 44 | 45 | ## License 46 | 47 | `iOS Templates` are available under the MIT license. See the [LICENSE](LICENSE) for more information. 48 | -------------------------------------------------------------------------------- /SwiftUI/Scene.xctemplate/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/SwiftUI/Scene.xctemplate/.DS_Store -------------------------------------------------------------------------------- /SwiftUI/Scene.xctemplate/TemplateIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/SwiftUI/Scene.xctemplate/TemplateIcon.png -------------------------------------------------------------------------------- /SwiftUI/Scene.xctemplate/TemplateIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/futuredapp/iOS-templates/714450811cf81e3bbad5e1b284b03443fa6653e5/SwiftUI/Scene.xctemplate/TemplateIcon@2x.png -------------------------------------------------------------------------------- /SwiftUI/Scene.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DefaultCompletionName 6 | Scene 7 | Description 8 | This generates a new SwiftUI scene using Futured architecture. It consists of the view and view state. 9 | Kind 10 | Xcode.IDEKit.TextSubstitutionFileTemplateKind 11 | Options 12 | 13 | 14 | Description 15 | The name of the scene to create 16 | Identifier 17 | sceneName 18 | Name 19 | New Scene Name: 20 | NotPersisted 21 | 22 | Required 23 | 24 | Type 25 | text 26 | 27 | 28 | Default 29 | ___VARIABLE_sceneName:identifier___ 30 | Identifier 31 | sceneIdentifier 32 | Type 33 | static 34 | 35 | 36 | Default 37 | ___VARIABLE_sceneIdentifier___View 38 | Description 39 | The view name 40 | Identifier 41 | viewName 42 | Name 43 | View Name: 44 | Required 45 | 46 | Type 47 | static 48 | 49 | 50 | Default 51 | ___VARIABLE_sceneIdentifier___ViewState 52 | Description 53 | The view state name 54 | Identifier 55 | viewStateName 56 | Name 57 | ViewState Name: 58 | Required 59 | 60 | Type 61 | static 62 | 63 | 64 | Platforms 65 | 66 | com.apple.platform.iphoneos 67 | 68 | SortOrder 69 | 9 70 | Summary 71 | This generates a new SwiftUI scene using Futured architecture. 72 | 73 | 74 | -------------------------------------------------------------------------------- /SwiftUI/Scene.xctemplate/___VARIABLE_sceneIdentifier___View.swift: -------------------------------------------------------------------------------- 1 | import FTDesignLibrary 2 | import SwiftUI 3 | 4 | struct ___VARIABLE_sceneIdentifier___View: View { 5 | private let state = ___VARIABLE_sceneIdentifier___ViewState() 6 | 7 | var body: some View { 8 | Text("___VARIABLE_sceneIdentifier___View") 9 | } 10 | } 11 | 12 | struct ___VARIABLE_sceneIdentifier___View_Previews: PreviewProvider { 13 | static var previews: some View { 14 | ___VARIABLE_sceneIdentifier___View() 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /SwiftUI/Scene.xctemplate/___VARIABLE_sceneIdentifier___ViewState.swift: -------------------------------------------------------------------------------- 1 | import FuturedKit 2 | import SwiftUI 3 | 4 | struct ___VARIABLE_sceneIdentifier___ViewState: ViewState { 5 | } 6 | --------------------------------------------------------------------------------