ERP-class application development and its modernization

An ERP-class application for project management that connects and integrates all areas of the company into one IT ecosystem.

JavaScript
Angular.js
PHP 7
Symfony 4.3
GO
Monolith
Strangler Pattern
MariaDB
Redis
Docker
Composer
Unit tests
BDB
PHPUnit
Postman
Behat
Front-end
JavaScript (jQuery), Angular.js
Back-end
PHP 7, Symfony 4.3, GO
Infrastructure
Monolith, Strangler Pattern
Database
MariaDB, Redis
Infrastructure
Overview

An ERP-class application for project management that connects and integrates all areas of the company into one IT ecosystem, which facilitates the flow of information between individual departments. The modular structure of the application makes it easy to adapt to the unique needs of each project management company. That is why architectural offices and creative agencies willingly use it.

Problem

The optimal management of project resources is a challenge faced by many companies. In addition, ever lower budgets and tight deadlines do not make the task any easier. Therefore, an application is needed that will simplify the complexity of processes and to a detailed degree, almost in real time, will allow you to track what is happening with financial and human resources. As a result, this will enable the adoption of a risk reduction strategy and possibly its quick modification, as well as the efficient and proper use of available resources.

Solution

In 2006, a German marketing agency wrote an application for its own needs, enabling it to more effectively manage its employees' time and various project resources. At that time, there was a lack of such solutions, so the decision was made to launch the application on the market.

The first sales attempts quickly showed that customers expect the application, which had quite basic functions, to be adapted to the realities of their business. In practice, this forced the need to quickly add new modules or develop existing ones. Therefore, the company decided to cooperate with a technology partner that could help with this.

Over the next years, FINGO's programmers developed the application with new modules, providing more and more functions. Over time, however, the application ceased to be attractive in terms of its design and UI, compared to the newly emerging solutions offered by the competition. The reason was simple – the client's application was developed in accordance with an approach that was slowly ceasing to be the market standard (the frontend was statically generated on the backend side). Separating the frontend from the backend was becoming the new norm. Therefore, code refactoring was needed.

FINGO's programmers, in wanting to convince the client of the legitimacy of changing the way the product is manufactured, conducted their own analysis. Its task was to find the answer to the question of how to simultaneously develop the current application by adding new modules, whilst modernizing and replacing the old ones, so that it does not affect the quality of application use.

They agreed that integration of the new and the old frameworks would not happen without refactoring the point of contact, i.e., the system login function. The login page thus became the first test for introducing Symfony to the technology stack. The client appreciated the idea put forward by FINGO's programmers and agreed to further work.

Modernization of the application was based on the gradual replacement of the most important modules with newer implementations.

Another challenge was the “Price List” module, a set of templates managed by administrators, which were later used by other users of the application. In this module, the data structure was very complex and it was intended that the templates should be highly customizable to the individual needs of the user. Unfortunately, the module generated a lot of reports from users who had problems with its operation, data consistency or lack of full validation.

To secure the data of many customers, data was migrated from the old format to the new one. This presented certain challenges, as the new structure was very rigorous in terms of consistency and data quality control. In addition, some features have been redesigned to simplify the structure while retaining virtually all the features.

After the release of the new version written in Symfony and Angular, new bug reports from users stopped appearing. One of the reasons for this was the complete coverage of the module with automatic and end-to-end tests.

The change of the technological profile (the transition from PHP to Node.js) and the business strategy (a greater orientation toward the FinTech market) has resulted in the termination of many years of successful cooperation. From 2021, the client has developed the application independently.

Project result
Project results

Efficient delivery of new system functions, thanks to the implementation of business requirements using the agile approach of the Behavior-Driven Development software development process.

Increasing the competitiveness of the application on the market by separating the frontend and backend and switching to new frameworks. Thanks to this, the application testing process was improved (errors were found faster), new functions were delivered faster, and the visual layer became more attractive and usable.

Increasing the efficiency of application development by gradually modernizing the architecture using the Strangler Pattern approach.

Increasing the security of the application and its speed of operation thanks to the constantly updated version of PHP, as well as the libraries and frameworks used.

Over the course of 15 years of cooperation, the FINGO team has become an important technological partner that has not only been able to advise on the implementation of business requirements in technical terms, but also has come up with initiatives for change. This was met with the approval of the customer, but also with an increasingly better reception of the product on the market.