The admin can manage all content on the platform via a content management system (CMS). This content is different for each country.
Loyalty app for fast food restaurant chain
European mobile loyalty app that allows customers to place order and track rewards
Our client’s request
Our client from a fast food restaurant chain decided to change the business logic of their loyalty system in Europe. Previously, every European country fast food restaurant operated in had its own app for its loyalty program, with unique offers and discounts. But as the number of restaurants started to grow, it became challenging to manage all of these apps. This is why top managers decided to develop a single app for the entire European market.
In close cooperation with our client’s development team, we created a loyalty app for iOS and Android that caters to European users.
Users can create profiles, check the menu, pre-order, get fresh offers and get discounts.
We built native Android and iOS apps. We used Kotlin for Android development and followed clean architecture principles. For the iOS app, we used Swift and implemented a service-oriented architecture.
Clean architecture for Android
We created a presentation layer divided into feature modules that look like separate libraries. This allowed us to:
cut the app development time
easily add new features by creating new modules
reduce the app’s size
Service-oriented architecture for iOS
We chose a service-oriented architecture in combination with the model–view–controller (MVC) design pattern. This architecture allowed us to prevent view controllers from being overloaded and reuse code. We implemented our own HTTP client to make requests and handle responses with native Codable decoding and encoding without third-party dependencies. This approach was time-efficient.
The app has dynamic content that can be changed by the admin via a CMS. Meanwhile, the design looks and feels native to each platform.
The app’s content is loaded once and then stored offline, minimizing the app’s storage needs. To store data and optimize images (by resizing and caching), we used Realm for iOS and Room for Android.
Dynamic localization without updating the app in the app stores
Dynamic localization allows our client to add new countries, languages, and images to the app at any time. It also allows our client to avoid spending money on a separate development team to maintain each country’s app and reduces the effort required to provide localized content via multiple APIs. To add support for a new country, a new loyalty app no longer needs to be uploaded to the app stores. The backend simply needs to be updated with localized content.
Users can log in to the app, choose a country, and get special offers based on their location. Users can check out the menu, pre-order food and drinks, and track current offers.
Registered users can join the referral program and invite their friends. Each member of the program gets a discount on every purchase.
Users can pre-order food and drinks and thus skip the line. Plus, users get a discount when ordering in the app.
An automated carousel allows users to tap any offer and see the details.
When ordering in a restaurant, users can scan the QR code in the app to earn points. They can also add a plastic loyalty card number to an existing app account.
Users can quickly find a nearby fast food restaurant, view its hours, get directions, and see the approximate time required to get there.
Users can customize their orders in the app. For example, they can add double cheese or exclude onion. They can also save their favorite order and give them custom names for quick search.
Users can view their order history across all restaurants.
Steelkiwi is working on an iOS and Android app for a loyalty program platform’s client. Steelkiwi’s work meets the mark, and the app performs well on the iOS and Android stores. The team is professional, organized, and on top of the ball. They always make a concerted effort to fully understand the requirements for their assignments. Steelkiwi is a reliable vendor that always delivers.