The Wholesale B2B Marketplace

The Wholesale B2B Marketplace

Elaborate mobile B2B platform
The Wholesale B2B Marketplace
Initially, Agilie was asked to improve the existing app’s features. A few years later, the client entrusted our team to build a retail marketplace platform from scratch - Android, iOS, and web versions.
The final B2B platform serves for suppliers from China, India, and other countries to sell their goods to the US and European retailers. These days, world-known brands, like Adidas, are active clients of the service.

Project info
B2B Marketplace app
iOS and Android app
Project timeline:
8 months

Development Challenges to Overcome
While working on the Wholesale B2B Marketplace project, our team faced certain difficulties, and it was pretty exciting to rise to those challenges and build a competitive product.

Migration to new programming languages
iOS. Initially, the iOS version of the project was written in Objective-C. However, the increased popularity of Swift has led to the idea of migration to this new language with its undoubted advantages. Therefore, the new app features were being written in the Swift language, and the old code was being rewritten too. When Swift 3.0 was released, the new changeover turned out to be a laborious task because the syntax has changed significantly, and a number of features had to be fixed manually. Fortunately, subsequent language improvements have been much easier for developers.
Android. Android app was written in Java. But when we started working on the project, Kotlin became the official development language for the Android platform. Therefore, it was decided to write new features in Kotlin and, if possible, rewrite the old ones. Since there are no problems with the mutual compatibility of these languages, there were no difficulties in their interaction.

Loading content
In the first version of the project, media content was being downloaded directly, which was fraught with risks of data loss in such cases as crashes, battery discharge, etc. Besides, the client's requirements for the application had increased, and the updated service should have been able to deal with 100+ photos. To achieve such an aim, we used the Realm database that has several advantages, for example, data encryption capabilities. What's more, we have resorted to the technology of storing photo/video in the cacheable phone storage (the feature of the cacheable directory is that when the phone memory is full it can self-clean as needed). This approach ensures the preservation of content and the ability to continue downloading data even in cases of force majeure.

Moving to Clean Architecture
The original code for the old app version was written using the MVP architecture. Having undertaken the project, we decided to use the Clean Architecture approach. This architecture helped us to implement the messaging system more qualitatively and to refactor the main screens, which later allowed speeding up the bug fixing and changing of features.

Offline access
Then the client came up with the idea of implementing the offline mode. Due to this feature, in the absence of an Internet connection, the main data for the display is being taken from the database. At the moment, only viewing and deferred download of media content to the server is available. The plans include the possibility of creating Inspirations / Wishlists, editing, adding comments offline.

Customizing chat
We didn't create the feature of messaging (chat) from scratch but we were faced with the need to improve it. The fact is that former client's developers used the Sinch library for instant messaging and the native Core Data database for storing information (messages, contacts, etc.). The Sinch library is not such a bad choice, but it did not fully meet our needs. We had to add code to the library so that it could cope with all the tasks, which led to a considerable loss of time (and therefore client's money). In this regard, it was decided to look for more suitable alternatives. The result of our search was the powerful and easy-to-use Twilio service. It allowed us to organize a stable chat operation and unload the server.

Technology used:
Technology used:

Implemented Features
Siri Integration
This B2B marketplace platform supports Siri technology. For example, the user can ask the app to send a message to a specific recipient ("Hey Siri, send a message to Joe").
iMessages extension
iMessages extension we've implemented is a list of goods from Inspirations/Wishlist/Showrooms that can be sent to the interlocutor in the form of a picture and a short product description.
Augmented reality
After the release of AR Kit, our team implemented support for augmented reality. This feature helps to study 3D models of goods in a three-dimensional format: one can twist them and view from different angles and distances.
The Inspirations screen is a set of pictures that a user saves on his phone and collects into specific groups. Their task is to illustrate what kind of goods this user dreams about.
Wishlist also gives the opportunity to collect groups of pictures that show products that the user would like to have. However, this feature, unlike the previous one, allows sharing this Wishlist with the manufacturer.
Showrooms is a ready-made collection of goods that the manufacturer shares. The user can choose and order the list of products he likes.