Freelance Project: Build 4-view app using CloudKit (data-driven UX + pixel perfect UI)
* A Keynote deck will be shared with vetted freelancers that includes high-res mockups and detailed examples of UX flow (including animations)
* Use IBAnimatable for animations (this facilitates customization later on, see [login to view URL])
* I will provide you with access to the CloudKit container that you can code against. I will populate the database with sample data and any assets you may need.
* Note: You will be expected to use your own developer account to build and test the app during development. Once the final project is delivered & accepted, I will modify the code so that the prod app uses my developer account & resources (not yours).
The deliverable is a complete Xcode 9 (64-bit) project; here are the general requirements for the project:
* iOS 11 app (must be iPhone X compatible)
* Swift 4
* Data security is a priority from start to finish:
* All local files created/owned by app must use Complete Protection (NSFileProtectionComplete) data protection class.
* Keys must be stored in Secure Enclave whenever possible (if iPhone hardware is too old, then store securely on device)
* Require passcode, Touch ID, or Face ID any time user a) re-starts the app, b) after the phone is locked then unlocked, and/or c) after 15 min of continuously running in the background, whichever comes first
To be considered complete, the app must:
1. Perform the actions demonstrated in the Keynote deck
2. UI must look like the high-res mockups in the Keynote deck
3. Not crash (goes without saying)
4. *and*:
1. Filtering/Business logic code must be segregated from Views (subclass UIManagedDocument, see [login to view URL])
* Use auto-layout
* Use IBAnimatable for animations (this facilitates customization later on, see [login to view URL])
* Instantiate and maintain a local cache of CK records to enable online *and* offline use (see [login to view URL])
* Use Operation Groups to logically bundle data operations
* Include unit and integration tests. At a minimum, include test coverage for:
- [ ] DB: operations and operation groups
- [ ] Data version resolution (see [login to view URL])
- [ ] Changes in iCloud availability (see [login to view URL])
* Adhere to requirements for submission to the App Store (with minor exceptions such as the need to tweak credentials/profiles)
* Adhere to one of the following style guides (you choose which one you prefer): Ray Wenderlich ([login to view URL]) or LinkedIn ([login to view URL])
* Be fully-documented using Markup for Swift/Markdown such that Quick Help documentation is available. This means that every function/method must include values for description, parameters, returns, and throws (as appropriate).