Porting product PHP code from Zend Framework to Laravel

Migration code for taxi automation service


The customer is the Vostochny Express company (Moscow), the owner of the Taxi-agent program. The client came to us with their finished product, the code of which was written in the outdated Zend Framework. It's difficult to maintain and develop a project running on outdated technologies. It hindered the development of the product, they were losing customers.

Product description:

The product is an IT service solution (SaaS) for work automating of taxi services and stations. It allows to aggregate orders from different sources into a single database. The service is integrated with GetTaxi, Yandex Taxi, Citymobil, and UP&UP.

The first version of the product was developed on the Zend PHP framework, which was released 15 years ago. We decided to migrate the product to the modern Laravel framework. Laravel allows to quickly and conveniently create administration dashboards and the user interface. Its code is easy to read.

The customer set the following tasks : to analyze the current project code, rewrite the code on a new framework, preserving the business logic with all the functionality of the product, update connections between databases (the current ones did not work in full).

Go to the service website
  • The project was done according to the outstaffing model. Our PHP developer communicated directly with the client representative did the tasks and made changes in full-time mode.
  • The following was achieved: expanding and strengthening the customer's project team by a programmer, fully involved in the process, a deep dive into the client's industry, and quick solutions to all emerging problems.
  • Laravel
  • Cordova
  • MySQL
  • Blade
  • Eloquent ORM
  • Secured the solution. Eloquent ORM protects the service from malicious queries by validating their parameters. Escaping prohibited HTML tags removes the possibility of placing dangerous scripts in the service.
  • Performance increased by 35%. Laravel's built-in Redis, Memcache and APC, databases store information in a key-value pair, the data is located in the server's RAM, so requests are processed faster. Bulk object caching also speeds uploading.
  • We implemented the withdrawal chain Cordova - mobile server - Laravel - payment microservice. The driver requests a withdrawal of funds through the Cordova application. The request is redirected to the mobile server. The server leaves a record in the database. Then Laravel connects. If the auto-withdrawal is enabled, the request is redirected directly to the payment microservice. If auto-withdrawal is not connected, the request is first moderated by the manager and, after approval, is transferred to payment.
  • Improved the aggregation of orders from different sources. Taxi services transmit information about completed orders and their payments to the service. Based on this data, payments are calculated, including commissions. The service-integrated program Tarificator transfers the final cost of the trip for the driver to their internal account and the commission from this trip to the account of the service. The driver can withdraw funds to a bank card, QIWI wallet, or fuel payment.
  • We migrated the project in 11 months. We have completely rewritten the legacy code, optimized and improved it. Since the migration was done without code reuse (to a pure framework), the functionality was completely redone on some pages. We have optimized it and improved the interface.

At the moment, the work is underway to improve usability: we are optimizing UI & UX.