Having started developing the application system since 2013, 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 have large client companies that regularly ordered customization of the main product, due to which virtually all of the project’s resources were transferred to the form of support for large clients.
In compensation, we released ZENLIX 2.95 ( https://github.com/ZENLIX/ZENLIX-2 ) to the public . It is also worth noting that the version on GitHub is a product - which has nothing to do with the ZENLIX 3.x version.
At a certain point, we began to realize that we were losing other customers. It was necessary to make radical changes in the policy of supporting companies. On the one hand, we were limited by the maintenance contract to the possibility of increasing the budget, on the other hand, we could not afford to increase the number of developers. In the end, fate gave us such a chance.
In January 2019, the contract for the support of one client expired and we reformatted the staff to start a new product breath.
Start of development
For 2 years, most of the frontend modules used (js), as well as the backend, are outdated. Therefore, for the introduction of new features and development, it was necessary to prepare a platform so that in the future it was possible to use the most new features 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 shown by the practice of our colleagues, this is a complicated and unjustified process, as a result of which there is a risk to get bogged down in refactoring the code, which in turn would delay the upgrade for long months.
We chose the second option. To do this, we initialized a clean project on Laravel version 5.5 (LTS), then installed all the composer modules (the latest stable versions), including them in the Laravel service files, generated resources and configured them, based on the previous version of ZENLIX. After that, we began to transfer Controllers, Models, Migrations, Templates, and other objects 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 problems of notification in the old version and excluded them in the new one. As a result of code migration, as well as the use of Laravel 5.5, the minimum software requirements for PHP have increased: PHP> = 7.0.0.
Officially, we can 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 the speed of the application by 64% compared with version 3.x.
We also rewrote and optimized the nodejs microservice code. Now it uses one less module - have excluded express.
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 with the release we generate from 20 -> 1 minimized js-file and from 13 -> 1 css-file. It also gave a significant increase in the rendering speed of the client part of the content display.
We have not changed our policy of controlling product openness. No ioncube, etc. All code is still open to our customers. No control, except for the license agreement, which strictly regulates the use of the product within the framework of one subject of organizational activity.
And in the new version we have implemented several convenient features:
- Ability to disable menu items, as well as their functionality. Now the administrator for all can disable the modules: Users, Groups, Messages, Knowledge Center, Calendar, Reports.
- The system update and installation repository remained a bottleneck. We wanted the administrator to choose for himself what to update, in spite of his changes in the local code. As a result, using the experience of supporting our large companies, we implemented it on a GitLab server. When buying a product, the client is given read_only access to the git repository. The shell of the ZENLIX console commands makes the process softer and more convenient than using bare git pull. But it does not prohibit the use of the latter for merge.The product update system now works only through the console (php artisan zenlix: update). Through the web, the administrator can still check the availability of the new version, as well as read the information / instructions on the release / update. By running the console command, the administrator switches the system to maintenance status and starts the update process.
- The system of console installation , now as the main type of installation of the product. (php artisan zenlix: install) allows, using a login / password, to get a version of ZENLIX, as well as produce a basic configuration. In most cases, this team is necessary for our technical specialists, who produce 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 have a very strong effect on the usability of the finished product, has been reworked.
In general, we would like to conclude that by updating the product platform to the latest stable version (Laravel 5.5), with 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 make an Android application, a full-fledged API for creating and working with applications, Web-hooks for events and other things.
Separately, it is worth noting that we have prepared a ready VM image (vmdk, ovf) with the following software already installed and configured by ZENLIX.
Ubuntu 18.04.2 LTS
We will be happy to answer all your questions via email: email@example.com, as well as a telegram .