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.
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.
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.
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.
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 (Obsidian). While the process to become a partner developer with Questrade has made it hard to make a very functional experience, I learned a lot along the way.
Let's Work Together
And make something beautiful!