To stay ahead, QF reached out to us to develop a new iOS and Android app. Client Location
Vancouver Island, BCIndustry
- 50,000+ Products scanned using the app in the first months
- 210% Increase in app sessions month over month from previous app
- 100,000+ Push notifications sent in the first months
- 4.5/5 App store rating
Vancouver Island based grocer Quality Foods (QF) is well-known in the industry as a leader in technology. We're proud to have been a part of this since our work began with them nearly twenty years ago.
We developed their online shopping platform which lead to their their first iPhone app in 2011 which eventually made its way to the Google Play store for Android phones.
However, since 2011, much has happened in the mobile app space. QF's app was aging, graphics were dated, speed was slow, and their competitors were making strides digitally. It was time for a new app.
Knowing this app would be an important asset for QF for years to come, we had to ensure it was planned properly and created using the most modern technologies.
Content management system integrationDeals, offers and promotions seen in the app are pulled dynamically from a CMS system we created to allow QF to manage their content.
In-store location detectionSpecial app features are enabled when you're detected in a store. We built a custom location management utility to handle this (details below).
Communication with store checkoutsSelecting a deal sends the info to the checkout via QF's internal web services which the app communicates with.
Push notificationsAn extensive push notification system sends automated pushes, and also gives QF the ability to schedule their own manual notifications.
Data and image cachingAll data calls and images are stored locally in the app once received and implement custom cache rules for refreshing data.
Camera based UPC scanningThroughout the app you can use use your phone's camera to scan product UPC codes.
Overview + Planning
We traveled to Vancouver Island for meetings to define the project scope.
When starting a large scale project like this one, it's important to confirm the exact app objectives with everyone involved. Larger companies mean more people in the room.
We began with meetings with key personnel from QF to discuss what's possible now, and what should be deemed a future upgrade.
Together, we prioritized a final scope of deliverables which would be defined as phase one.
Latest technologiesIt was critical that the app be built using the latest SDKs, both to ensure longevity of the app and to ensure it would be easier to implement new features when Apple or Google released them.
iOS and AndroidThis app must be available on both iOS and Android devices and must be compiled into native apps.
Integration at the store checkouts for "My Daily Special"Store level integration at the checkouts was a must. A new feature called My Daily Special was outlined.
Fast loadingMany grocery apps are slow - heavy graphics, network requirements. We had to ensure all data queries were optimized for speed, and all images were cached to only download once.
New featuresThis app must do things no other grocer was doing. Together, we agreed upon a new feature called Ad Watch to go along side the new My Daily Special area.
Push notificationsPush notifications aren't used much in the industry. We had to make a way for QF to have full control of their push scheduling and content.
Many features require detecting that the user is in the store. How do we achieve this accurately when considering poor GPS signals and/or wifi?Keep scrolling to see the solution
How do we handle push notifications and the high volume of pushes that this app will send?
Each area of the app was thoroughly wireframed. Every feature, every button. This was to ensure all parties were on the same page as to exactly how the app would function before any programming took place.
Technology - Client side
We had important decisions to make in the early stages regarding how to build this app efficiently.
XamarinXamarin was chosen as the development platform as it allowed us to save time and budget by having a common code-base between both iOS and Android versions.
MVC ArchitectureWe ensured the code bases in both iOS and Android were developed using an MVC layered architecture, as best as possible.
Testflight and Google Play Beta TestingWe knew we'd be testing with thousands of users. This meant ensuring the most advanced testing methods were implemented.
While we can develop apps natively in Swift & Java, we chose Xamarin for it's cross platform capabilities and use of the Visual Studio IDE, which saved our client considerable expenses in time savings.
Total time/cost savings
Technology - Server side
Both the iOS and Android versions communicate to the same central web service, which relays information to the central database and QF's head office systems.
Performance is critical, as we have thousands of concurrent users.
AWS ServersNew servers on Amazon Web Services EC2 (web) and RDS (database) were setup with CloudWatch alarm monitoring and auto-scaling.
Web Service / APIA central .NET Core API Controller manages all communication from the app to the web server.
Token SecurityEvery call in the app is encrypted to the web server, and is parameterized with short life span tokens.
My Daily Special
Customers can select any item to be on sale, just for them. Since getting customers to the store is the most important goal of all, this solves a common problem of favourite items being on sale at a competitor.Play Video
Have you ever been to a grocery store and an item you enjoy was on sale, and it was only pure luck that you came across it? Ad watch ensures customers get alerted when their favourite items are on sale via push notifications.Play Video
Many grocers now have app-based deals. We took it a step further by enabling a way for QF to create personalized deals that are tailored to customer shopping history data, which they analyze using Python.Play Video
We had problems with GPS locator timing, signal strength, 3rd party plugins, iOS and Android quirks, battery life...
...so we built our own custom location system.
To resolve all issues, we developed a custom location management system, one for each operating system.
The system is asynchronous to operate silently in the background with minimal battery use using a combination of low energy GPS acquisition, wifi detection, and fallback procedures when poor signals occur.
What happens when you send a push notification to thousands and thousands of users?
It means that many open the app at the exact same time.
Since QF's app is heavily reliant on the web service for up to date info from the database, that results in thousands of phones asking for data simultaneously.
We had to ensure the infrastructure could handle these large spikes in traffic - achieved through AWS servers, monitoring and burst capabilities.
Over 1100 employees were sent email invites to begin testing the iOS and Android apps with us.
The app featured a special feedback system which resulted in the smoothest transition to launching that we could have ever asked for, as all bugs were submitted with the help of QF staff long before the public received the app.
App Launch Day
The launch of the app happened without any issues, and a QF Facebook promotion was created for users to tell us what their favourite new feature was. This is a clever way to promote the app, as the posts were public for friends of those posting to see.