Let's talk!

LogisticsApp

Useful digital tools to facilitate the process of ordering and transportation planning.
image

Details

  • Scope Backend, Frontend & Mobile development, QA, C&S
  • Timeframes January – June 2022
  • Technologies .NET, React, Flutter
  • Business sector Transport & Construction
  • Model of collaboration Time & Material
  • iteo Team 3 x Backend developers
    3 x Frontend developers
    1 x Flutter developer
    1 x QA engineer
    1 x Scrum Master

Clear and usable web and mobile tools as a source of detailed communication and information for the company’s admins and drivers, facilitating the business workflow and supporting its development.

Timeline

  • 2022
    January

    analysis & solution architecture design phase

    February

    setting up infrastructure in Azure

    Feb – May

    development of a mobile app for transport order management and tracking

    March – June

    development of mobile app communicating with the admin’s panel & manual tests

    April – June

    Securing the production environment

    May – June

    testing on PROD & modifications and adjustments based on client’s feedback

  • Project’s highlights

    We created a new channel of communication and information exchange to enhance the inner processes within the company.

    Developed solutions, allowed the client to increase the number of customers served and save money by controlling and monitoring the entire process.

    image
    image

    Business needs & goals

    The company’s goal was to digitize the ordering and transportation planning process. 

    To do so, we needed to build a web admin panel and a mobile application that communicate with each other easily and in real time.

    Functionalities

    Admin panel (web)

    After logging in, the admin sees the list of orders with transport statuses:

    unscheduled, scheduled, started, deviation overview or completed.

    Creating orders

    When creating an order, the planner:

    • selects a customer from the database, or adds a new one

    • selects the type of order and the delivery date

    • selects the type of transport (appropriate truck tonnage)

    • selects the billing model (km or weight)

    • uses the well-developed map module to enter the exact address details of the delivery

    • selects the type of article and the quantity, etc.

    Planning board

    The board contains the information about hourly schedule, list of drivers, and list of orders. 

    Using the drag & drop function, the scheduler assigns the relevant order to the driver available at the time, who instantaneously gets a notification in the mobile app that there is a new order for him to execute. 

    Mobile application

    The driver indicates that he is starting the received order in the mobile app.

    The app displays all the relevant details of the order, including a map with directions to the specific point, estimated time of arrival, loading and unloading, as well as the forwarder’s comment, if any. 

    The driver ticks off the various stages of order completion in the application, which is at the same time displayed on the administrator’s panel, informing him about the progress of the order. In addition, if any unexpected incident on the way comes up, the application has a function to report such things and save them in the form of a note, photo or video recording.

    image

    Challenges & solutions

    Backend

    One of the challenges in this project was modeling the domains in a stage, when our idea about it was still quite misty, and was still being analyzed by the product owner and the UX designer. 

    The modeling result was really good and let us go on with implementation and eventually deliver the MVP. However, at some point near the end of that phase, one aggregate turned out to be really difficult to maintain. It always changed together with another aggregate that existed in yet another bounded context. Because of that, a lot of data had to be passed back and forth between the two contexts. At the end, we made a team decision to refactor the contexts to place both the aggregates in the same context, and remodel both of them.

    Frontend

    Order form

    Because the extensive ordering process could not be broken down into individual steps as its options overlap, one large form had to be used. In order to ensure the proper performance of a solution in which a huge amount of data is collected and analyzed it was necessary to resign from ready-made libraries and develop own solutions.

    Planning board

    The challenge was to develop a solution enabling communication at the driver-logistics level. Using technologies such as GraphQL and WebSockets, live connectivity between our application for drivers and the web administration panel has been enabled

    Mobile

    For real time communication between the admin panel and the driver mobile app we used GraphQl Subscription technology with a custom client implementation for added security. 

    The implementation using a custom client was causing an error underneath the library as the internet was disappearing (probably this is not well handled in the library), the solution to this problem was to add internet state management, and depending on the state, we managed the connection.

    When the application was in backgroup for a long time it was breaking the connection with GraphQl Subscription and the application was not getting any callback that the connection is not established. 

    The solution to this was to listen to the application if it is in background mode and, depending on the state, to operate on the connection.

    Cloud & Security

    The main challenge from the Cloud&Security perspective was related to securing the already existing infrastructure with an application already running in the late stage of its development. 

    Implementing security features, like closing selected resources from the unauthorized access attempts, required extra carefulness and adherence to existing application workflows.

    The additional challenge was related to creating as much infrastructure as code as possible. Some of the resources like Azure B2C are not very IaaC friendly, so our approach demanded extra effort in this area.

    Quality Assurance

    We conducted:

    • manual web application tests

    • backend tests

    • mobile application tests

    • functional tests

    • integration tests

    • import tests

    • usability tests

    • performance tests

    • exploratory tests

    • smoke tests, retests

    • post-deployment tests

    The testing process went smoothly, with no delays, with releases between sprints. Tests were planned, analyzed, implemented and executed.

    Outcome

    Implemented digital solutions streamlined the company’s processes of orders and transport management.

    Now, the communication between the employees is smooth and the transport status is comprehensible for both sides. As a result, the company can serve more customers and be ahead of every obstacle that may occur during the order completion.