Skip to content
Cross-platform MVVM in Swift
Swift Python Other
Branch: master
Clone or download
bogo and danielrhammond Add a facility to skip tests (#168)
* Add a facility to skip tests
Latest commit 8187436 Jul 25, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Configuration Support Xcode 9.3 (#113) Mar 9, 2018
Core Small changes required to make iOS 13 happy (#165) Jun 3, 2019
Documentation Update to Swift 4.2, add Buck support. (#159) Apr 29, 2019
Examples Refactor Buckfiles to be at the root of the project w/ relative paths… Apr 30, 2019
External Refactor Buckfiles to be at the root of the project w/ relative paths… Apr 30, 2019
Pilot.xcodeproj Update to Swift 4.2, add Buck support. (#159) Apr 29, 2019
UI Small changes required to make iOS 13 happy (#165) Jun 3, 2019
.buckconfig Update to Swift 4.2, add Buck support. (#159) Apr 29, 2019
.gitignore Update to Swift 4.2, add Buck support. (#159) Apr 29, 2019
.gitmodules
.travis.yml Update to Swift 4.2, add Buck support. (#159) Apr 29, 2019
BUCK Add a facility to skip tests (#168) Jul 24, 2019
CODE_OF_CONDUCT.md 🚀 Feb 17, 2017
CONTRIBUTING.md
LICENSE
Pilot.gyp Update to Swift 4.2, use Hasher, fix Xcode 10.2 compilation complaint… Feb 27, 2019
README.BUCK Update to Swift 4.2, add Buck support. (#159) Apr 29, 2019
README.md Small adjustments. May 29, 2018
install-xctool.sh Update to Swift 4.2, add Buck support. (#159) Apr 29, 2019
travis-ios.xcconfig Fix config file comment typo. Feb 14, 2018
travis-macos.xcconfig Fix config file comment typo. Feb 14, 2018

README.md

Pilot: Cross-platform MVVM in Swift

If you squint, any modern client application can viewed as a "scrollable list of stuff from the internet". Whether it's a scrollable list of food, photos, videos, merchandise, cats, or cat merchandise -- all applications share common scaffolding.

Pilot provides a suite of robust components to take care of this common scaffolding so you can focus on what matters: your data (Model), business logic (ViewModel), and presentation (View).

These components are not overly-prescriptive to any particular application architecture, so you can adopt them without having to rewrite or commit to Pilot forever.

Component Libraries

Pilot is modularized into components providing building blocks for fast and safe application development (see flight plan for upcoming components).

  • Pilot: Provides a core MVVM stack, various model collections, diff engine, action handling, along with some minimal async, observable, and logging components. This is a Foundation-only framework (i.e. No UIKit or AppKit)
  • PilotUI: UI layer components built atop Pilot for both Mac and iOS. Contains collection view bindings and other macOS/iOS extensions for Pilot development.

Usage

See the Getting Started guide for a basic walkthrough of core concepts.

There is a Sample Project which demonstrates macOS app and iOS app built from the same Pilot MVVM stack.

Otherwise, please see type documentation and let us know if anything is unclear.

Requirements

  • Xcode 9.2
  • Swift 4.0
  • iOS 9.0+ / macOS 10.11+

Installation

Travis CI

Xcode

  • Drag Pilot.xcodeproj into Project Navigator
  • Go to Project > Targets > General > Embed Frameworks, click +, and select Pilot [Platform] and PilotUI [platform] targets.
  • In Project > Targets > Build Phases > Target Dependencies, ensure Pilot [Platform] and PilotUI [Platform] are there.

GYP

The GYP config is an alternative way of using Pilot, it's ONLY for using it in other GYP projects. If you don't know what GYP is, you can safely ignore this section here.

  • Generate iOS Xcode project via gyp Pilot.gyp --depth=. --suffix=.ios.dxbuild -DOS=ios
  • Generate MacOS Xcode project via gyp Pilot.gyp --depth=. --suffix=.osx.dxbuild -DOS=mac
  • Use generated Pilot.ios.dxbuild.xcodeproj to build Pilot for iOS, or Pilot.ios.dxbuild.xcodeproj for macOS.

License

Apache 2.0

You can’t perform that action at this time.