├── Ch11-Backend └── vapor-example │ ├── .swift-version │ ├── Config │ ├── secrets │ │ ├── .gitkeep │ │ └── app.json │ ├── development │ │ └── app.json │ ├── production │ │ ├── app.json │ │ └── servers.json │ ├── app.json │ └── servers.json │ ├── Procfile │ ├── .gitignore │ ├── Resources │ └── Views │ │ ├── template.leaf │ │ ├── embeds │ │ └── header.leaf │ │ └── welcome.html │ ├── Localization │ ├── en.json │ ├── es.json │ └── default.json │ ├── Public │ └── images │ │ └── vapor-logo.png │ ├── app.json │ ├── VaporApp.xcodeproj │ ├── Configs │ │ └── Project.xcconfig │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ ├── Console_Info.plist │ ├── Core_Info.plist │ ├── Fluent_Info.plist │ ├── HMAC_Info.plist │ ├── HTTP_Info.plist │ ├── JSON_Info.plist │ ├── Node_Info.plist │ ├── Routing_Info.plist │ ├── SMTP_Info.plist │ ├── Socks_Info.plist │ ├── URI_Info.plist │ ├── Vapor_Info.plist │ ├── libc_Info.plist │ ├── HTTPRouting_Info.plist │ ├── Polymorphic_Info.plist │ ├── SocksCore_Info.plist │ ├── Transport_Info.plist │ ├── WebSockets_Info.plist │ ├── PathIndexable_Info.plist │ └── TypeSafeRouting_Info.plist │ ├── .travis.yml │ ├── Package.swift │ └── Sources │ └── App │ ├── Middleware │ └── SampleMiddleware.swift │ └── Models │ └── User.swift ├── Ch11-Frontend └── TodoApp │ ├── Pods │ ├── Target Support Files │ │ ├── Argo │ │ │ ├── Argo-prefix.pch │ │ │ ├── Argo.modulemap │ │ │ ├── Argo-dummy.m │ │ │ ├── Argo-umbrella.h │ │ │ └── Argo.xcconfig │ │ ├── Curry │ │ │ ├── Curry-prefix.pch │ │ │ ├── Curry.modulemap │ │ │ ├── Curry-dummy.m │ │ │ ├── Curry-umbrella.h │ │ │ └── Curry.xcconfig │ │ ├── Delta │ │ │ ├── Delta-prefix.pch │ │ │ ├── Delta.modulemap │ │ │ ├── Delta-dummy.m │ │ │ ├── Delta-umbrella.h │ │ │ └── Delta.xcconfig │ │ ├── Result │ │ │ ├── Result-prefix.pch │ │ │ ├── Result.modulemap │ │ │ ├── Result-dummy.m │ │ │ ├── Result-umbrella.h │ │ │ └── Result.xcconfig │ │ ├── Runes │ │ │ ├── Runes-prefix.pch │ │ │ ├── Runes.modulemap │ │ │ ├── Runes-dummy.m │ │ │ ├── Runes-umbrella.h │ │ │ └── Runes.xcconfig │ │ ├── Alamofire │ │ │ ├── Alamofire-prefix.pch │ │ │ ├── Alamofire.modulemap │ │ │ ├── Alamofire-dummy.m │ │ │ ├── Alamofire-umbrella.h │ │ │ └── Alamofire.xcconfig │ │ ├── ReactiveCocoa │ │ │ ├── ReactiveCocoa-prefix.pch │ │ │ ├── ReactiveCocoa-dummy.m │ │ │ ├── ReactiveCocoa.modulemap │ │ │ └── ReactiveCocoa.xcconfig │ │ ├── ReactiveSwift │ │ │ ├── ReactiveSwift-prefix.pch │ │ │ ├── ReactiveSwift.modulemap │ │ │ ├── ReactiveSwift-dummy.m │ │ │ ├── ReactiveSwift-umbrella.h │ │ │ └── ReactiveSwift.xcconfig │ │ ├── Pods-TodoApp │ │ │ ├── Pods-TodoApp.modulemap │ │ │ ├── Pods-TodoApp-dummy.m │ │ │ └── Pods-TodoApp-umbrella.h │ │ └── Pods-TodoAppTests │ │ │ ├── Pods-TodoAppTests.modulemap │ │ │ ├── Pods-TodoAppTests-dummy.m │ │ │ ├── Pods-TodoAppTests-acknowledgements.markdown │ │ │ ├── Pods-TodoAppTests-umbrella.h │ │ │ ├── Pods-TodoAppTests.debug.xcconfig │ │ │ └── Pods-TodoAppTests.release.xcconfig │ ├── ReactiveCocoa │ │ └── ReactiveCocoa │ │ │ ├── NSObject+ReactiveExtensionsProvider.swift │ │ │ ├── module.modulemap │ │ │ ├── Deprecations+Removals.swift │ │ │ ├── UIKit │ │ │ ├── UITableView.swift │ │ │ ├── UICollectionView.swift │ │ │ ├── UIProgressView.swift │ │ │ ├── UIActivityIndicatorView.swift │ │ │ ├── UIImageView.swift │ │ │ ├── iOS │ │ │ │ ├── UIDatePicker.swift │ │ │ │ └── UIStepper.swift │ │ │ ├── ReusableComponents.swift │ │ │ ├── UIBarItem.swift │ │ │ ├── UISegmentedControl.swift │ │ │ ├── UILabel.swift │ │ │ └── UIView.swift │ │ │ ├── ReactiveCocoa.h │ │ │ ├── Shared │ │ │ └── NSLayoutConstraint.swift │ │ │ ├── NSObject+ObjCRuntime.swift │ │ │ ├── ObjCRuntimeAliases.m │ │ │ ├── ObjCRuntimeAliases.h │ │ │ ├── NSObject+Synchronizing.swift │ │ │ └── ObjC+Runtime.swift │ ├── Argo │ │ └── Sources │ │ │ └── Argo │ │ │ ├── Extensions │ │ │ ├── NSNumber.swift │ │ │ └── Dictionary.swift │ │ │ ├── Operators │ │ │ └── Argo.swift │ │ │ └── Types │ │ │ └── Decoded │ │ │ └── FailureCoalescing.swift │ ├── Delta │ │ └── Sources │ │ │ └── Delta.h │ ├── ReactiveSwift │ │ └── Sources │ │ │ └── ResultExtensions.swift │ └── Local Podspecs │ │ ├── Delta.podspec.json │ │ └── Curry.podspec.json │ ├── TodoApp.xcodeproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata │ ├── TodoApp │ ├── Actions │ │ ├── SetFilterAction.swift │ │ ├── DeleteTodoAction.swift │ │ ├── ClearCompletedTodosAction.swift │ │ ├── LoadTodosAction.swift │ │ ├── CreateTodoAction.swift │ │ └── ToggleCompletedAction.swift │ ├── Models │ │ ├── TodoViewModel.swift │ │ ├── TodosViewModel.swift │ │ └── RequestProtocol.swift │ ├── Stores │ │ └── Store.swift │ └── State │ │ └── State.swift │ ├── TodoApp.xcworkspace │ └── contents.xcworkspacedata │ ├── Podfile │ └── TodoAppTests │ └── Info.plist └── Playgrounds ├── Ch10-BestOfBothWorlds.playground └── contents.xcplayground ├── Ch01-Introduction.playground ├── Pages │ ├── Immutability.xcplaygroundpage │ │ └── Contents.swift │ ├── LazyEvaluation.xcplaygroundpage │ │ └── Contents.swift │ ├── Initialization.xcplaygroundpage │ │ └── Contents.swift │ ├── Methods.xcplaygroundpage │ │ └── Contents.swift │ ├── Tuples.xcplaygroundpage │ │ └── Contents.swift │ ├── ARC.xcplaygroundpage │ │ └── Contents.swift │ ├── Generics.xcplaygroundpage │ │ └── Contents.swift │ ├── Subscripts.xcplaygroundpage │ │ └── Contents.swift │ ├── ErrorHandling.xcplaygroundpage │ │ └── Contents.swift │ ├── Types.xcplaygroundpage │ │ └── Contents.swift │ ├── DeclarativeImperative.xcplaygroundpage │ │ └── Contents.swift │ ├── Protocols.xcplaygroundpage │ │ └── Contents.swift │ ├── Collections.xcplaygroundpage │ │ └── Contents.swift │ ├── Strings.xcplaygroundpage │ │ └── Contents.swift │ └── AnyAnyObject.xcplaygroundpage │ │ └── Contents.swift └── Resources │ └── Ch01-Introduction.playground │ ├── Pages │ ├── Immutability.xcplaygroundpage │ │ └── Contents.swift │ ├── LazyEvaluation.xcplaygroundpage │ │ └── Contents.swift │ ├── Initialization.xcplaygroundpage │ │ └── Contents.swift │ ├── Methods.xcplaygroundpage │ │ └── Contents.swift │ ├── Tuples.xcplaygroundpage │ │ └── Contents.swift │ ├── ARC.xcplaygroundpage │ │ └── Contents.swift │ ├── Generics.xcplaygroundpage │ │ └── Contents.swift │ ├── ErrorHandling.xcplaygroundpage │ │ └── Contents.swift │ ├── Subscripts.xcplaygroundpage │ │ └── Contents.swift │ ├── Types.xcplaygroundpage │ │ └── Contents.swift │ ├── DeclarativeImperative.xcplaygroundpage │ │ └── Contents.swift │ ├── Protocols.xcplaygroundpage │ │ └── Contents.swift │ └── Collections.xcplaygroundpage │ │ └── Contents.swift │ └── Resources │ └── Ch01-Introduction.playground │ ├── Pages │ ├── Immutability.xcplaygroundpage │ │ └── Contents.swift │ ├── LazyEvaluation.xcplaygroundpage │ │ └── Contents.swift │ ├── Initialization.xcplaygroundpage │ │ └── Contents.swift │ ├── Methods.xcplaygroundpage │ │ └── Contents.swift │ ├── Tuples.xcplaygroundpage │ │ └── Contents.swift │ ├── ARC.xcplaygroundpage │ │ └── Contents.swift │ ├── Generics.xcplaygroundpage │ │ └── Contents.swift │ ├── Subscripts.xcplaygroundpage │ │ └── Contents.swift │ ├── ErrorHandling.xcplaygroundpage │ │ └── Contents.swift │ ├── Types.xcplaygroundpage │ │ └── Contents.swift │ ├── DeclarativeImperative.xcplaygroundpage │ │ └── Contents.swift │ └── Protocols.xcplaygroundpage │ │ └── Contents.swift │ └── Resources │ └── Ch01-Introduction.playground │ ├── Pages │ ├── Immutability.xcplaygroundpage │ │ └── Contents.swift │ ├── LazyEvaluation.xcplaygroundpage │ │ └── Contents.swift │ ├── Initialization.xcplaygroundpage │ │ └── Contents.swift │ ├── Methods.xcplaygroundpage │ │ └── Contents.swift │ ├── Tuples.xcplaygroundpage │ │ └── Contents.swift │ ├── ARC.xcplaygroundpage │ │ └── Contents.swift │ ├── Generics.xcplaygroundpage │ │ └── Contents.swift │ ├── Subscripts.xcplaygroundpage │ │ └── Contents.swift │ ├── ErrorHandling.xcplaygroundpage │ │ └── Contents.swift │ ├── Types.xcplaygroundpage │ │ └── Contents.swift │ ├── DeclarativeImperative.xcplaygroundpage │ │ └── Contents.swift │ └── Protocols.xcplaygroundpage │ │ └── Contents.swift │ └── Resources │ └── Ch01-Introduction.playground │ ├── Pages │ ├── Immutability.xcplaygroundpage │ │ └── Contents.swift │ ├── LazyEvaluation.xcplaygroundpage │ │ └── Contents.swift │ ├── Initialization.xcplaygroundpage │ │ └── Contents.swift │ ├── Methods.xcplaygroundpage │ │ └── Contents.swift │ ├── Tuples.xcplaygroundpage │ │ └── Contents.swift │ ├── ARC.xcplaygroundpage │ │ └── Contents.swift │ ├── Generics.xcplaygroundpage │ │ └── Contents.swift │ ├── Subscripts.xcplaygroundpage │ │ └── Contents.swift │ ├── ErrorHandling.xcplaygroundpage │ │ └── Contents.swift │ ├── Types.xcplaygroundpage │ │ └── Contents.swift │ ├── DeclarativeImperative.xcplaygroundpage │ │ └── Contents.swift │ └── Protocols.xcplaygroundpage │ │ └── Contents.swift │ └── Resources │ └── Ch01-Introduction.playground │ ├── Pages │ ├── Immutability.xcplaygroundpage │ │ └── Contents.swift │ ├── LazyEvaluation.xcplaygroundpage │ │ └── Contents.swift │ ├── Initialization.xcplaygroundpage │ │ └── Contents.swift │ ├── Methods.xcplaygroundpage │ │ └── Contents.swift │ ├── Tuples.xcplaygroundpage │ │ └── Contents.swift │ ├── ARC.xcplaygroundpage │ │ └── Contents.swift │ ├── Generics.xcplaygroundpage │ │ └── Contents.swift │ ├── Subscripts.xcplaygroundpage │ │ └── Contents.swift │ ├── ErrorHandling.xcplaygroundpage │ │ └── Contents.swift │ ├── Types.xcplaygroundpage │ │ └── Contents.swift │ └── DeclarativeImperative.xcplaygroundpage │ │ └── Contents.swift │ └── Resources │ └── Ch01-Introduction.playground │ ├── Pages │ ├── Immutability.xcplaygroundpage │ │ └── Contents.swift │ ├── LazyEvaluation.xcplaygroundpage │ │ └── Contents.swift │ ├── Initialization.xcplaygroundpage │ │ └── Contents.swift │ ├── Methods.xcplaygroundpage │ │ └── Contents.swift │ ├── Tuples.xcplaygroundpage │ │ └── Contents.swift │ ├── ARC.xcplaygroundpage │ │ └── Contents.swift │ ├── Generics.xcplaygroundpage │ │ └── Contents.swift │ ├── ErrorHandling.xcplaygroundpage │ │ └── Contents.swift │ ├── Subscripts.xcplaygroundpage │ │ └── Contents.swift │ ├── Types.xcplaygroundpage │ │ └── Contents.swift │ └── DeclarativeImperative.xcplaygroundpage │ │ └── Contents.swift │ └── Resources │ └── Ch01-Introduction.playground │ ├── Pages │ ├── Immutability.xcplaygroundpage │ │ └── Contents.swift │ ├── LazyEvaluation.xcplaygroundpage │ │ └── Contents.swift │ ├── Initialization.xcplaygroundpage │ │ └── Contents.swift │ ├── Methods.xcplaygroundpage │ │ └── Contents.swift │ ├── Tuples.xcplaygroundpage │ │ └── Contents.swift │ ├── ARC.xcplaygroundpage │ │ └── Contents.swift │ ├── Generics.xcplaygroundpage │ │ └── Contents.swift │ ├── Subscripts.xcplaygroundpage │ │ └── Contents.swift │ ├── ErrorHandling.xcplaygroundpage │ │ └── Contents.swift │ ├── Types.xcplaygroundpage │ │ └── Contents.swift │ └── DeclarativeImperative.xcplaygroundpage │ │ └── Contents.swift │ └── Resources │ └── Ch01-Introduction.playground │ ├── Pages │ ├── Immutability.xcplaygroundpage │ │ └── Contents.swift │ ├── LazyEvaluation.xcplaygroundpage │ │ └── Contents.swift │ ├── Initialization.xcplaygroundpage │ │ └── Contents.swift │ ├── Methods.xcplaygroundpage │ │ └── Contents.swift │ ├── Tuples.xcplaygroundpage │ │ └── Contents.swift │ ├── ARC.xcplaygroundpage │ │ └── Contents.swift │ ├── Generics.xcplaygroundpage │ │ └── Contents.swift │ ├── Subscripts.xcplaygroundpage │ │ └── Contents.swift │ ├── ErrorHandling.xcplaygroundpage │ │ └── Contents.swift │ ├── Types.xcplaygroundpage │ │ └── Contents.swift │ └── DeclarativeImperative.xcplaygroundpage │ │ └── Contents.swift │ └── Resources │ └── Ch01-Introduction.playground │ ├── Pages │ ├── Immutability.xcplaygroundpage │ │ └── Contents.swift │ ├── LazyEvaluation.xcplaygroundpage │ │ └── Contents.swift │ ├── Initialization.xcplaygroundpage │ │ └── Contents.swift │ ├── Methods.xcplaygroundpage │ │ └── Contents.swift │ ├── Tuples.xcplaygroundpage │ │ └── Contents.swift │ ├── ARC.xcplaygroundpage │ │ └── Contents.swift │ ├── Generics.xcplaygroundpage │ │ └── Contents.swift │ ├── Subscripts.xcplaygroundpage │ │ └── Contents.swift │ ├── ErrorHandling.xcplaygroundpage │ │ └── Contents.swift │ └── Types.xcplaygroundpage │ │ └── Contents.swift │ └── Resources │ └── Ch01-Introduction.playground │ ├── Pages │ ├── Immutability.xcplaygroundpage │ │ └── Contents.swift │ ├── LazyEvaluation.xcplaygroundpage │ │ └── Contents.swift │ ├── Initialization.xcplaygroundpage │ │ └── Contents.swift │ ├── Methods.xcplaygroundpage │ │ └── Contents.swift │ ├── Tuples.xcplaygroundpage │ │ └── Contents.swift │ ├── ARC.xcplaygroundpage │ │ └── Contents.swift │ ├── Generics.xcplaygroundpage │ │ └── Contents.swift │ ├── Subscripts.xcplaygroundpage │ │ └── Contents.swift │ └── ErrorHandling.xcplaygroundpage │ │ └── Contents.swift │ └── Resources │ └── Ch01-Introduction.playground │ ├── Pages │ ├── Immutability.xcplaygroundpage │ │ └── Contents.swift │ ├── LazyEvaluation.xcplaygroundpage │ │ └── Contents.swift │ ├── Initialization.xcplaygroundpage │ │ └── Contents.swift │ ├── Methods.xcplaygroundpage │ │ └── Contents.swift │ ├── Tuples.xcplaygroundpage │ │ └── Contents.swift │ ├── ARC.xcplaygroundpage │ │ └── Contents.swift │ ├── Generics.xcplaygroundpage │ │ └── Contents.swift │ ├── ErrorHandling.xcplaygroundpage │ │ └── Contents.swift │ └── Subscripts.xcplaygroundpage │ │ └── Contents.swift │ └── Resources │ └── Ch01-Introduction.playground │ ├── Pages │ ├── Immutability.xcplaygroundpage │ │ └── Contents.swift │ ├── LazyEvaluation.xcplaygroundpage │ │ └── Contents.swift │ ├── Initialization.xcplaygroundpage │ │ └── Contents.swift │ ├── Methods.xcplaygroundpage │ │ └── Contents.swift │ ├── Tuples.xcplaygroundpage │ │ └── Contents.swift │ ├── ARC.xcplaygroundpage │ │ └── Contents.swift │ └── Generics.xcplaygroundpage │ │ └── Contents.swift │ └── Resources │ └── Ch01-Introduction.playground │ ├── Pages │ ├── Immutability.xcplaygroundpage │ │ └── Contents.swift │ ├── LazyEvaluation.xcplaygroundpage │ │ └── Contents.swift │ ├── Initialization.xcplaygroundpage │ │ └── Contents.swift │ ├── Methods.xcplaygroundpage │ │ └── Contents.swift │ └── Tuples.xcplaygroundpage │ │ └── Contents.swift │ └── Resources │ └── Ch01-Introduction.playground │ ├── Pages │ ├── Immutability.xcplaygroundpage │ │ └── Contents.swift │ ├── LazyEvaluation.xcplaygroundpage │ │ └── Contents.swift │ ├── Initialization.xcplaygroundpage │ │ └── Contents.swift │ └── Methods.xcplaygroundpage │ │ └── Contents.swift │ └── Resources │ └── Ch01-Introduction.playground │ └── Pages │ └── Immutability.xcplaygroundpage │ └── Contents.swift ├── Ch09-ImportanceOfImmutability.playground ├── Pages │ ├── TableOfContents.xcplaygroundpage │ │ └── Contents.swift │ └── FunctionalExample.xcplaygroundpage │ │ └── Contents.swift └── contents.xcplayground ├── Ch04-EnumsPatternMatching.playground ├── Pages │ └── TableOfContents.xcplaygroundpage │ │ └── Contents.swift └── contents.xcplayground ├── Ch08-FunctionalDataStructures.playground ├── Pages │ └── TableOfContents.xcplaygroundpage │ │ └── Contents.swift └── contents.xcplayground ├── Ch06-MapFilterReduce.playground ├── Pages │ ├── Zip.xcplaygroundpage │ │ └── Contents.swift │ ├── Joined.xcplaygroundpage │ │ └── Contents.swift │ ├── Apply.xcplaygroundpage │ │ └── Contents.swift │ ├── TableOfContents.xcplaygroundpage │ │ └── Contents.swift │ ├── Higher-KindedTypes.xcplaygroundpage │ │ └── Contents.swift │ ├── ChainingHigherOrderFuncs.xcplaygroundpage │ │ └── Contents.swift │ ├── Join.xcplaygroundpage │ │ └── Contents.swift │ ├── FlatMap.xcplaygroundpage │ │ └── Contents.swift │ └── Filter.xcplaygroundpage │ │ └── Contents.swift └── contents.xcplayground ├── Ch02-FuncsClosures.playground ├── Pages │ ├── FirstClassFunctions.xcplaygroundpage │ │ └── Contents.swift │ ├── NestedFunctions.xcplaygroundpage │ │ └── Contents.swift │ ├── TailRecursion.xcplaygroundpage │ │ └── Contents.swift │ ├── CapturingValues.xcplaygroundpage │ │ └── Contents.swift │ └── TableOfContents.xcplaygroundpage │ │ └── Contents.swift └── contents.xcplayground ├── Ch05-Generics.playground ├── Pages │ ├── SubclassingGenericClasses.xcplaygroundpage │ │ └── Contents.swift │ ├── TableOfContents.xcplaygroundpage │ │ └── Contents.swift │ └── ExtendingGenericTypes.xcplaygroundpage │ │ └── Contents.swift └── contents.xcplayground ├── Ch07-Optionals.playground ├── Pages │ ├── ImplicitlyUnwrappedOptionals.xcplaygroundpage │ │ └── Contents.swift │ ├── TableOfContents.xcplaygroundpage │ │ └── Contents.swift │ ├── OptionalChaining.xcplaygroundpage │ │ └── Contents.swift │ ├── Definition.xcplaygroundpage │ │ └── Contents.swift │ └── Guard.xcplaygroundpage │ │ └── Contents.swift └── contents.xcplayground └── Ch03-Types.playground ├── Pages ├── TypeCheckingCasting.xcplaygroundpage │ └── Contents.swift ├── TableOfContents.xcplaygroundpage │ └── Contents.swift ├── MixingValueReferenceTypes.xcplaygroundpage │ └── Contents.swift ├── Copying.xcplaygroundpage │ └── Contents.swift └── EqualityVsIdentity.xcplaygroundpage │ └── Contents.swift └── contents.xcplayground /Ch11-Backend/vapor-example/.swift-version: -------------------------------------------------------------------------------- 1 | system -------------------------------------------------------------------------------- /Ch11-Backend/vapor-example/Config/secrets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Ch11-Backend/vapor-example/Config/secrets/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "secret-key" 3 | } -------------------------------------------------------------------------------- /Ch11-Backend/vapor-example/Procfile: -------------------------------------------------------------------------------- 1 | web: App --env=production --workdir="./" 2 | -------------------------------------------------------------------------------- /Ch11-Backend/vapor-example/.gitignore: -------------------------------------------------------------------------------- 1 | Packages 2 | .build 3 | xcuserdata 4 | *.xcodeproj 5 | -------------------------------------------------------------------------------- /Ch11-Backend/vapor-example/Config/development/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "development-key" 3 | } -------------------------------------------------------------------------------- /Ch11-Backend/vapor-example/Config/production/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "$VAPOR_APP_KEY" 3 | } -------------------------------------------------------------------------------- /Ch11-Backend/vapor-example/Config/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "default-key", 3 | "foo": "bar" 4 | } -------------------------------------------------------------------------------- /Ch11-Backend/vapor-example/Config/production/servers.json: -------------------------------------------------------------------------------- 1 | { 2 | "production": { 3 | "port": "$PORT" 4 | } 5 | } -------------------------------------------------------------------------------- /Ch11-Backend/vapor-example/Resources/Views/template.leaf: -------------------------------------------------------------------------------- 1 | #embed("embeds/header") 2 | 3 |