TrendyList

TrendyList

A platform to promote new places and local events

Our client’s request

Ahsan Kamal image
Client's location: Saudi Arabia

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.

Android iOS Lifestyle SaudiArabia Reviews

Relevance

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.

Results

Duration:
April 2017 – November 2017
Team:
Backend - 2 iOS - 1 Android - 1 UI/UX - 1 DevOps - 1 PM - 1
Designed the UX/UI

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.

Developed a functional backend

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.

Defined the server architecture

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.

Added integrations

We integrated APIs from Google+, Facebook, Instagram and Twitter for authentication. For push notifications we used OneSignal, and we added Celery for scheduling both article postings and notifications.

Developed a native iOS application

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.

Developed a native Android application

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.

For the database and general data management, we integrated Realm and Hawk. OneSignal deals with monitoring, customization, and delivery of push notifications.

Crashlytics was used to monitor and detect any system crashes. Calligraphy and Picasso help with font and image management, respectively, while native Android libraries perform video playback.

Last but not least, we integrated Google Maps to show the exact location where events advertised through the app will take place.

Implemented features

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.

Gallery

Gallery
Gallery
Gallery
Gallery
Gallery
Gallery

Technology Stack

Backend

Python
Python
Django
Django
RabbitMQ
RabbitMQ
REST
REST
Django REST framework
Django REST framework
Celery
Celery
Redis
Redis
PostgreSQL
PostgreSQL
Sentry
Sentry
Swagger
Swagger

Mobile

Twitter API
Twitter API
Instagram API
Instagram API
Java
Java
Swift
Swift
Facebook API
Facebook API
OneSignal
OneSignal
Google+ API
Google+ API

See more case studies

Building a promotional app with ERP features for small and midsize businesses

Building a promotional app with ERP features for small and midsize businesses

A marketplace that connects businesses with clients and equips them with effective management tools

  • Mobile
  • Qatar
  • Kuwait
  • Booking
Improving website performance for a photo blogging community

Improving website performance for a photo blogging community

A photo blogging platform where photographers can showcase their high resolution images

  • Webapp
  • Entertainment
  • US
  • PhotoBlog