Development of the Zerista iOS app started in the summer of 2011. Due to lack of internal resources and knowledge, we decided to outsource development of the initial version. That didn’t work. We ended up with an app that was a wrapper around html pages – it was slow and didn’t work offline. Back in 2011 that was a deal-breaker for conferences. Cell phone coverage at event venues was poor (often in basements with lots of other people around) and WiFi was non-existent or super expensive. Today things are better, but offline usage is still an important competitive advantage because it makes for a much better user experience and WiFi at big events still costs tens of thousands of dollars.
So in November 2011, we brought development in house and started working on an Android version. I put myself in charge of the iOS app because I had an iPhone and wanted to know how to develop an app. And I was more interested in programming in Objective C than Java.
Between November 2011 and June 2019, we released 327 versions of the app, or a new release about every 8 days. And until Apple drastically changed the rules around branded apps in 2017, we delivered over 1, 000 apps to the Zerista iTunes account (the engineering work behind automating that process deserves its own blog post). To see the app in action, you can install the Zerista Live app, which is what the sales team uses to demo to potential customers.
I won’t go over all of the app’s features, for that you read the Zerista marketing site or download the app. But its an app I am quite proud of, it has a vast feature set and of course works great offline.
As of June 2019, here is how the app code breaks down:
─────────────────────────────────────────────────────────────────────────────── Language Files Lines Blanks Comments Code Complexity ─────────────────────────────────────────────────────────────────────────────── C Header 2768 87155 12213 49936 25006 144 Objective C 1362 182019 31663 15499 134857 17520 XCode Config 72 756 0 0 756 0 Markdown 30 18523 4077 0 14446 0 JSON 20 16032 13 0 16019 0 License 16 1380 243 0 1137 0 Shell 16 8115 118 128 7869 300 SVG 9 1542 7 9 1526 0 Swift 5 970 181 65 724 88 JavaScript 4 15014 2726 3458 8830 1537 Ruby 4 114 14 30 70 8 Plain Text 3 69 14 0 55 0 CSS 2 906 96 31 779 0 D 2 9 0 0 9 0 Mustache 2 105 15 0 90 2 gitignore 2 24 3 4 17 0 C 1 290 0 0 290 0 Gherkin Specificati… 1 9 2 0 7 0 XML 1 991 0 0 991 0 ─────────────────────────────────────────────────────────────────────────────── Total 4320 334023 51385 69160 213478 19599 ─────────────────────────────────────────────────────────────────────────────── Estimated Cost to Develop $7,540,777 Estimated Schedule Effort 33.060460 months Estimated People Required 27.018539 Estimated Total Time: 74 years ─────────────────────────────────────────────────────────────────────────────── * Statistics generated by scc (cost estimates are based on the COCOMO model so consider them wildly inaccurate)
Notice there is very little Swift code – but that’s also a topic for another blog post.
And fun fact – 99% of the app wasn’t even written on a Mac!