
ZENLIX 3.5 - 2 years later

Having started developing the application system, since 2013, the history of which is described in previous publications:
we stopped the release of new versions in 2017. This does not mean that we have ceased to accompany the product and develop it. The fact is that in a short period of time, we had large client companies that regularly ordered customization of the main product, which is why virtually all of the project’s resources went into the form of supporting large customers.
In compensation, we released ZENLIX 2.95 ( link ) publicly available . It’s worth noting that the version on GitHub is a product that has nothing to do with the ZENLIX 3.x version.
At some point, we began to realize that we were losing the rest of our customers. It was necessary to make radical changes in company support policies. On the one hand, we were limited by the escort agreement with the possibility of increasing the budget, on the other hand, we could not afford to increase the staff of developers. As a result, fate gave us such a chance.
In January 2019, one customer support agreement expired and we reformatted the staff to start a new breath of the product.
Development start
For 2 years, most of the used frontend modules (js), as well as the backend (php), are out of date. Therefore, for the introduction of new features and development, it was necessary to prepare the platform so that in the future it was possible to use the latest opportunities and resources, implement a modern UI that meets the needs of consumers.
We started with the backend, namely the upgrade of the framework from Laravel 5.1 to Laravel 5.5 (LTS). There were options for updating the current project, but as the practice of our colleagues showed, this is a complex and unjustified process, as a result of which there is a risk of getting bogged down in code refactoring, which in turn would delay the upgrade for many months.
We chose the second option. To do this, we initialized a clean project on Laravel 5.5 (LTS), then installed all composer-modules (the latest stable versions), including them in Laravel service files, generated resources and configured them, based on the previous version of ZENLIX. After that, we took up the transfer of Controllers, Models, Migrations, Templates, other parts and business objects. Most of the fundamental methods had to be rewritten. For example, authorization / registration modules (with the possibility of authorization through third-party services), a complete notification system (Mailable queue) and others. It also gave its advantages - we found some notification problems in the old version and excluded them in the new one. As a result of code porting, as well as the use of Laravel 5.5, the minimum software requirements for PHP have increased: PHP> = 7.0.0.
We can officially say that now ZENLIX 3.5 supports PHP 7.3 . The transition to the new version of Laravel 5.5 + PHP 7.3 gave a significant increase in application speed by 64% compared to version 3.x.
We also rewrote and optimized the nodejs microservice code. Now it uses one less module - express is excluded.
We updated the frontend: Jquery 3.4, FontAwesome 5, Trumbowyg 2.15 and other modules.
The coolest thing about this is that we now use webpack.mix.js, and upon release we generate a minimized js file from 20 -> 1 and a css file from 13 -> 1. It also gave a significant increase in the rendering speed of the client part of the content display.
We have not changed our product openness control policy. No ioncube, etc. All code is still open to our customers. There is no control other than a licensing agreement, which strictly regulates the use of the product within the framework of one subject of organizational activity.

And in the new version, we implemented several convenient features :
- Ability to disable menu items, as well as their functionality.
Now the administrator can disable modules for everyone: Users, Groups, Messages, Knowledge Center, Calendar, Reports. - The update system and installation repository remained a bottleneck. We wanted the administrator to be able to choose what to update him, in spite of his changes in the local code. As a result, using the experience of supporting our large companies, we implemented this on a GitLab server. When purchasing a product, the client is given read_only access to the git repository. The shell of ZENLIX console commands makes the process softer and more convenient than using bare git pull. But this does not prohibit the use of the latter for merge. The product update system now only works through the console (php artisan zenlix: update). Through the web, the administrator can still check for a new version, as well as read the information / instructions on the release / update. Running the console command
- Console installation system, now as the main type of product installation. (php artisan zenlix: install) allows using the username / password to get the version of ZENLIX, as well as to make the basic configuration. In most cases, this team is necessary for our technical specialists who make a remote free installation of the product.
The system for creating new users, as well as creating an application (user choice) and many other minor changes, which in general very much affect the usability of the finished product, has been redone.
Separately, it is worth noting that we prepared a ready-made VM image (vmdk, ovf) with the following software, already with ZENLIX installed and configured:
- Ubuntu 18.04.2 LTS
- Nginx v1.14.0
- PHP v7.2.17-0
- MySQL v5.7.26-0
- Node v8.10.0
- Supervisord v3.3.1
- Redis v5.0.4
- ZENLIX v3.5
Conclusion
In general, we would like to conclude that having upgraded the product platform to the latest stable version (Laravel 5.5), full support for PHP 7.3, having a stable product update system (git), we plan to release more frequent stable updates. We have many implementations of interesting and convenient things from other customized projects. Gradually we will transfer them to ZENLIX. At a minimum, we will create an Android application, a full-fledged API for creating and working with requests, Web-hooks for events and other things.
We will be happy to answer all your questions through the mail: info@zenlix.com , as well as telegram .