*Update
The process to become a partner developer with Questrade has made it hard to make a very functional experience, so I had to pull it from the AppStore for the time being. You can view the iOS source code here.
MVP
After signing up for Questrade and trying their iOS app, I was not satisfied with the slow web-wrapped experience. I wanted a fast mobile client for iOS, so I decided to see if I could make my own. For the initial release, I wanted to deliver an App that was fast, secure and native. With a simple focus on current orders, positions, and balances.
Growth
I wanted to push myself on two main fronts while building this. Build a Swift native client API to interact with Questrade, and learn about app distribution automation. While I also gained a deeper understanding of UIKit auto-layout, localization and interface theming. I want to focus on the former two aspects.
Client API
For this project I ended up building a completely native Swift API using powerful Swift features such as Generics and Codable protocols to deliver a lightweight, secure, powerful, and easy to use native API.
Automated Distribution
I learned the basics of fastlane to automate tedious tasks of capturing, uploading, and localizing App Store metadata. I learned how to use fastlane in conjunction with automated Xcode Tests to capture screenshots and publish versions to AppStore Connect using scoped lanes. This was very useful to save time when exporting screenshots for all devices in different localizations, and for pushing quick builds to TestFlight. After spending the time to learn the basics of fastlane I was able to automate processes that are usually very time consuming and tedious.
Fastlane
UI Test
Outcome
In the end I came away with experience building an open source Questrade API written in Swift, the marketing site, and the published Questrade client app.