Our client is a company specialising in facilitating the providers of courier and freight services and their customers. They have rich experience and provide strong online support. Couriers and Freight rely on their internet website and their freight software for highly efficient performance, in their own words “our freight software is the cornerstone of how we make deliveries.” The software not only connects carriers and customers but it also can be used for tracking the parcels and managing the whole process of delivery - from establishing the size of the parcel to scheduling the exact time of delivery.

The project

Couriers and Freight approached us with a request to assist them in the development of the new version of their software. The old system was due to replacement and a new solution was on its way. Part of it was ready and our team was supposed to tackle the frontend of the software as the backend was being built by the internal development team of the company. We were expected to work in parallel with the backend team - to participate in the sprint plannings, to help define the API endpoints needed for the newly developed features, and to keep up with building the front-end interfaces.

Another challenge we were facing was the technology that we were about to use and which we hadn’t worked with before. The team had to use React + Redux with TypeScript, and the visual representation had to be executed via Ant Design and MS Office UI. These were all new to us and we had to get to know them and advance in a short period of time. Relying on our experience and knowledge we were ready to accept that challenge and managed to reach the expected level of proficiency in the new technologies.

The code itself was in extremely bad shape - full of broken modules lacking any specification, a pile of bugs, complicated approach in building the architecture and data management. And last but not least - the test code coverage of the already built functionalities was close to zero %.

To top it all, we were expected to stabilise the project while expanding its capacity and building new functionalities from scratch.

How did we handle things?

The above mentioned issues required good planning. In order to complete the task we split the team in two. The first micro team was going to seal the leaks and stabilise the system and the other team was responsible for building new functionalities. The code was a mess, the structure was tangled and there were no types defined at all. Not to mention we were supposed to work with a remote API which made things even more complicated. On the other hand the backend team was overloaded and the delivery of new functionalities and fixes was taking ages. That’s why we were expected to be agile and flexible and to be able to solve problems only on the frontend part of the system. Altogether we managed to fill the gaps and to rewrite pretty much all core modules of the application.

Meanwhile we were busy working on the business demands of the client. The guys were providing new functionalities and making their best to deliver them in time while keeping the quality high.

We put significant efforts in improving the code coverage of the platform. We started writing unit, snapshot and e2e tests for all the features we were developing in order to increase the system’s quality control and to minimise regression defects.

What are the results?

As a result of our team commitment we pulled the project through. By rewriting most of the core modules we stabilised the system and provided a solid base for further expansion of the platform. We also managed to increase the code coverage up to 70% and the percentage is growing by the day. All that hard work we did in the last several months allowed the client to successfully manage the migration of all their existing users into the new system.

Now we are prepared to carry on working on all new exciting functionalities that Couriers and Freight have in mind for improving their platform.