The BlackList Lifestyle
Our client’s request
TrendyList is a Saudi Arabian lifestyle news platform. Ahsan Kamal, the owner of TrendyList, came to SteelKiwi with a request to create TrendyList mobile applications for iOS and Android. His goal was to make TrendyList more comfortable for users and to attract a larger audience by making it accessible from mobile devices.
One of our tasks for this project was to develop an especially comfortable and easy-to-use admin panel that the TrendyList team could use to manage the platform. Our goal was for the platform’s contributors and editors to be able to spend all their time taking care of work and not figuring out complexities of the system.
Every minute of our lives we’re bombarded with information – from our phones, computers, TVs, cars, radios. There’s a never-ending buzz of words, facts, and figures going in and out of our heads. Just in the one minute you’ve spent reading this page, people all over the world have liked more than 4M Facebook posts and 2M Instagram photos, watched 7M Snapchat videos, and sent 3+M text messages.
In such a strong current of information, it’s hard not to get carried away from the things you actually care about and want to keep up with. TrendyList that allows you to carefully filter this torrent and pay attention only to the things you truly enjoy. With TrendyList, you can find ideas about design, fashion, beauty, home, and food; events taking place in your area; and articles about local restaurants, gyms, and stores. By developing the TrendyList mobile app, we’ve made sure that users can always access the platform – and therefore the information that matters to them – whenever they want and wherever they are.
We designed the iOS and Android applications from top to bottom, working very hard on each and every detail. Our aim was to create a design that would be aesthetically pleasing yet not call for too much attention. We wanted users to concentrate on reading articles and viewing images. To achieve this, we struck a balance between text and images, making them equally attractive.
The interface we designed is minimalistic yet functional. Article details are hidden under buttons that are discreetly located on the screen. If readers are particularly interested in, for instance, the location or date of an event, they can simply press one of these buttons and the information will immediately pop up on the screen.
We also added a map for events that are advertised on TrendyList so that users can see where events will be taking place in addition to reading about them.
We developed two native mobile applications using Java (for Android) and Swift (for iOS). For now, these applications only allow users to read content. However, our client is planning to soon add the ability to contribute content directly through the apps.
We also built a Django control panel, which supports three different user roles: Admin, Contributor, and Editor. Contributors are responsible for writing articles, and therefore have permission in the CMS to write and edit articles as well as add pictures, tags, and all other relevant information. Contributors cannot, however, publish articles – this is the job of Editors, who publish after making the final edits. Logically, Admins have all of the rights of Contributors and Editors, and in addition can send personalized notifications to TrendyList users.
For TrendyList, we developed a RESTful backend that uses the REST API to serve articles. All in-app publications are added from the Django admin panel. The server is also capable of sending email as well as push notifications to users’ phones.
The iOS application is written in Swift. In order to fulfill our client’s requirements, we implemented the Model-View-ViewModel (MVVM) architecture and created a number of custom UI elements and helper modules in accordance with the principles of Material Design. For the REST API interactions we integrated Alamofire, and we customized the parsing mechanism for the Core Data models that provide offline support. Each API call is observed by a network activity indicator. Errors are managed by custom-made structures and extensions.
On the Directory screen, we created a custom layout for the UICollectionView and implemented customized buttons with UIStackView, which is perfect for dynamically inserting and removing views.
We chose OneSignal to manage push notifications. The Media layer, which deals with the custom media slider and video playback, was implemented using native iOS frameworks. Image caching and loading is handled by Kingfisher.
The Android app is written in Java. We went with the Model-View-Presenter (MVP) architecture for this app because it’s modular and is great for building MVPs since all changes can be made within separate elements without the need to disrupt the overall business logic. We designed the Android app following Material Design guidelines. For REST API interactions, we implemented the stable and popular combination of RxJava and Retrofit.
Last but not least, we integrated Google Maps to show the exact location where events advertised through the app will take place.
Registered and non-registered users have almost identical permissions in TrendyList. However, only registered users can store their favorite pieces so they can easily revisit them.
All users can receive notifications when an article comes out on a topic they’re interested, while registered users are also notified about events they’ve liked (24-hours in advance). TrendyList admins can also send registered users personalized notifications (such as holiday wishes).
Articles on TrendyList can be filtered alphabetically, categorically, or by city (which is useful when looking for events).
TrendyList allows businesses to post paid promotional articles, which take up a specific position in the feed. For this feature to work properly, we needed to figure out a way to display articles in the right positions with the correct pagination. To do so, we developed a logic that sorts all articles in the background using a Celery task.