Express-courier delivery app
What is the delivery app for
It’s easy: to make and track the order, сall the courier, find the nearest office, make a callback request, and calculate the delivery cost. How to add all these options into one app? This question is far trickier. And that is what we needed to do for CDEK, a logistics company providing international express-courier delivery services.
CDEK has Android development expertise. And the customer decided to begin with an Android app to review the code and evaluate our skills. We were to develop an iPhone app right after Android version.
Android app: part one
The project was started in May 2017. We found some gaps in the documentation at the very beginning, it slowed us down a bit. Then we got a team member from the client side, so we filled all the gaps in 2 months and began the first phase of the project. Our goal was to develop an app with limited functionality:
- Use tracking number to get the latest delivery status
- Search CDEK offices within a radius of 1, 3 or 10 kilometers according to set parameters: opening hours and conditions of acceptance (e.g. acceptance of goods over 30 kg)
- Contact with a call center
- Callback request
We finished by autumn, and the first Android app version was released in September on Google Play. Well done! But no pause, we continue moving on.
Android app: part two
We developed two important features:
- Calculate delivery cost
- Call the courier
This takes several parameters including the type of user (sender or receiver), addresses, delivery time, weights, and dimensions.
While we were working on this functionality, it became clear that additional options are needed. Is there any way to send a parcel on the weekend? Whether it’s required to carry a box up to the top floor? Should a user get an SMS delivery notification? Lots of small things affect the delivery cost. And furthermore, we decided to make a range of rates: the cheapest delivery, the fastest one, and options in between. The history of calculations can be saved as a history in the app.
The client agreed on all the additional options that were not foreseen at the beginning. Every single one of them required an extra workload. But, despite it, we successfully released the second version of Android in November, just in two months after the first one.
The third and the last phase so far started in January. It could be described in a few words: we made the iOS app. That’s it. We took into account our experience of the first two phases and didn’t have any problem with the final one.
Building the calculator was quite challenging. The solution has to change its form according to inputted parameters. All the additional options are included in a separate list with custom controls. We created a complex screenflow for any given scenario. Users can сall the courier first and then calculate a cost, and vice versa. Or they can just save a costing with no delivery order. Additionally, users can always take a step back, and the app saves all the data. We hid quite a complex logic and functionality beneath an intuitive app interface.
Another thing we can be proud of is the UI/UX app design that we created from the ground up. We put a lot of effort in to make it intuitive, simple and user-friendly along with complex functionality.
The mobile app gave a new way for CDEK to communicate with their customers. The built-in cost calculator is a big competitive advantage. Today, it has over 50,000 downloads on Google Play. And pretty soon, the app is releasing on App Store.
Now we can say, it was a good decision to split the project into two parts, Android and iOS. We developed an app for one platform, tested by two different teams (our and the client’s), and then ported it another platform. Cost-effective solution with minimum changes.
Android: Java, Kotlin, Databinding, Rxjava, Dagger 2, Retrofit, Objectbox Google maps, Yandex api
iOS: Swift, VIPER, Dependency Injection, Realm, Eureka, Google Maps
Backend: Java 8, Spring, Hibernate, PostgreSQL, MapStruct, Flyway
Let's move forward with your project