Previous projectNext project

Uber like solution for the grain truck market

IndustryLogistics
LocationThe CIS
Development2016-2018
SmartSeeds is a service connecting both cargo owners and cargo carriers in one system to complete mutually beneficial transactions on the transportation of grains and oilseeds. Initially, it covers the CIS countries.

Task

This service integrates several types of users at the same time. From one sight, grain owners and grain traders are present. They are interested in cargo delivery from the elevator after harvesting to the terminal or port where this cargo is sent to the destination. One of the features of the transportation process is the volume. Cargo can reach up to thousands of tons, and it is necessary to have many trucks available. Also, cargo can not be in stock for long and must be collected in time.

Before the launch of SmartSeeds, cargo owners who didn’t have proper vehicles had to solve this problem with their efforts by searching carriers. Moreover, more than one carrier is required to handle the transportation process in a limited time due to big cargo volumes.

    Benefits for cargo owners

    This service was first created to simplify and systematize the search of carriers rs and minimize the volume of bureaucratic procedures while organizing the transportation process. The charging service has an interface similar to an Uber-like app. It is sufficient to choose the place of cargo departure, the place of destination, the loading date, and the type of agricultural crop.

    The rest of the process, including the submission of the request application, closing the request, price increase, monitoring of cargo transportation, requests process, all the stages of business logic will be arranged by the system.

      Benefits for cargo carriers

      There are cargo carriers From the other side of the process. General carriers are companies or individuals owning a huge truck fleet or a few vehicles. Rarely is one owner able to make the request. There are various reasons for this: short-term, big cargo volumes, and no vehicles available. Hence, the service has one more feature: it helps carriers perform small trucking in frames of one big client request.

      Cargo owner doesn’t choose any carrier precisely because he shouldn’t be concerned about it. He just publishes the request and waits for it to be performed in time. For a carrier, it is sufficient to have a truck available and respond to the request. Wheto n the request is taken away completely, all the carriers proceed to work.

      The role of drivers in the system

      There is one more role in the system – driver. Drivers are fixed by precise vehicles that belong to carriers. The driver’s task is to complete the request: load the cargo at the loading point, transport the cargo, and go to the disembarkation point. A mobile app manages the transportation process from the driver’s side. Due to the app, the driver can change the current stage of the request completion and exchange information with the support service in case of unexpected circumstances. Moreover, a GPS sensor is installed on each truck to monitor movement. GPS sensor periodically sends coordinates to our geo-information service (GIS). These coordinates are processed and analyzed to determine the situation: entrance exit from Geo zones, deviation from the route, signal loss, and downtime.

      Also, there are representatives of the terminals in this process working in ports and willing to receive information about transport that is about to arrive at the port for disembarkation.

      Architecture and components of the system

      The work on the project started by studying the field and all business problems in text and graphics. Simultaneously, server architecture was under development, and the technologies needed were chosen. Since we are developers experienced in PHP-framework Symfony, we chose it for the realization of the realization logic of the service. Our system was separated into several components that were developed separately.

      • API —the heart of the system, through which all the transactions are made;
      • Frontend — client web-interface web interface register and manage the requests from private pprofiles
      • Backend — web-interface web interfaces to control and manage the system;
      • GIS — geo-informational service that processes coordinates from vehicles and transfers information on various business events to API;
      • Mobile app for the driver – an app used for management of the cargo transportation process;
      • Mobile app for cargo owner and carrier – completes functions of web application in the form of a native application on Android and iOS.

      External services

      There are several external services used in this system. For example, Wialon was supposed to be used only as an external Gan IS. It was planned to be integrated with our system to complete all the necessary tasks for this project. However, we implemented all the required GIS functions ourselves to make it independent from external factors. Herewith, the internal system process can be processed much more easily. Wialon remained only as a re-translator of GPS-signal that GPS signal data from the vehicle’s sensors and then re-translates it to our system by TCP. To proceed with low-level data, we developed a decoder of the GPa S tracker protocol in Python. We used MongoDB as a store of big data about vehicles vehicle/p>

      In this project, many tasks had to be rendered in asynchronous background processes. For this, we used a queuing set over RabbitMQ. There, we sent such tasks as sending notifications to system participants via different channels, processing information about events during transport movement, communication between API and GIS services, and much more.

      Also, we connected Firebase Cloud Messaging to this server for sending push notifications notifications and Infobip for sending SMS. Moreover, we connected the API of such services as Selfon and the Central Bank in the CIS region to receive information about registered legal entities and simplify registering users. To draw routes and generate static maps, we use Google Maps API.

      There is a possibility to manage system settings in the administrator’s interface, for example:

      • edit various reference books: brands and models of vehicles, embarkation, and disembarkation points;
      • verify users;
      • manage requests;
      • set transportation tariffs in different regions;
      • review statistics;
      • edit texts of messages and notifications;
      • Manage notification-sending channels according to every user type and event.

      “1C Accounting” is integrated into our project to manage documentation and draw up invoices. Integration was conducted by the team of developers and arranged by the client.

      Total amount of developers that participated in different stages of project development from our side is more than 20 people. There are nine backend developers, two front-end developers, 3 Android developers, 2 IOS developers, 2 QA managers, two project managers, and 1 DevOps. Also, in the development process, we communicated with the client’s representatives: designers, technical specialists, and field specialists.

      Adapting to changes in business logic

      Requirements and business logic were changed a few times during the process of project development. The reason was the customer was applying a more efficient business model regarding market demands. For example, one such change was the breakdown of the request by a carrier. Since elevators have a physical limit of tons to be loaded daily and cargo volume can largely exceed this limit, such terms as lot were added.

      The request is divided into equal or different sizes. One lot is one day, and several tons can be loaded into the elevator. Then carriers operate parts of the lot: if a lot is less than 300 tons, the carrier can take, for example, only 20-25 tons, depending on the carrying capacity of a vehicle. Part of the lot is a track performed by one driver under request. Due to the iterative development of the functions, we managed with an adaptation of the changes mentioned.

      Both cargo owner and cargo carrier can follow the transportation process. This information can be viewed online.

      There are many complex elements of the interface used in this project. To make it easier to work with these elements, our front-end developers created some components on Vue.js + RxJS. For example, a map showing transport moving, asynchronous input fields, and our implementation of the Select element.

      RxJs library was used for the implementation of address search. Due to this library, we can filter users' data entry streams and optimize the number of requests to the server. As a result, the user has access to a live search, and the business has a fast and high-quality solution that is easy to maintain in the future.

      Future plans

      According to the intentions of the project's customers, after the end of development, this web service is supposed to cover all business processes between different players in the system. Also, there is a plan to integrate new roles into the system in the future, such as a representative of farming entity (same as personnel at the terminal, but at the point of embarkation), various types of managers in frames of cargo owner's and carrier's roles, account for fiscal services. It is planned to expand the range of functions of user accounts. At this stage, we implemented MVP consisting of basic functions that let the service be launched in time, show itself on the market and attract first users, register vehicles and drivers in the system, and create and calculate first requests.

      Cast:

      • Vladimir Sutowski
        Vladimir Sutowski

        Project Manager

      • Ruslan
        Ruslan

        Front End Developer

      • Andrey Siagrovskyi
        Andrey Siagrovskyi

        Front End Developer

      • Andriy
        Andriy

        Front End Developer

      • Sergey Zheleznyak
        Sergey Zheleznyak

        Back End Team Lead

      • Artem
        Artem

        Back End Team Lead

      • Mykhailo Vilshansky
        Mykhailo Vilshansky

        Back End Developer

      • Alex L. Litvin
        Alex L. Litvin

        Back End Developer

      • Yevgen Zholkevskiy
        Yevgen Zholkevskiy

        Back End Developer

      • Yurii Svatok
        Yurii Svatok

        Back End Developer

      • Sergey Veretilo
        Sergey Veretilo

        Back End Developer

      • Max Logvinenko
        Max Logvinenko

        Back End Developer

      • Oleksandr
        Oleksandr

        Mobile Team Lead

      • Anton
        Anton

        Android Developer

      • Oleksandr K.
        Oleksandr K.

        Android Developer

      • Viktor
        Viktor

        iOS Developer

      • Yevhen
        Yevhen

        DevOps

      • Misha
        Misha

        QA Manager

      • Igor Harbuzyuk
        Igor Harbuzyuk

        Project Manager

      • Svetlana Bolgar
        Svetlana Bolgar

        Project Manager

      Other Case Studies

      • BenzinPreis24

        BenzinPreis24

        Service for efficient search of petrol stations in Switzerland

      • MeinFernbus Apps

        MeinFernbus Apps

        Mobile app development for the German largest passenger transportation company

      • Airfarm

        Airfarm

        An independent agro network app, Germany

      Contact us and we'll be happy to create something awesome for you

      Budget

      • 10K
      • 20K
      • 50K
      • 100K
      • 150K
      • 200K