📜 ⬆️ ⬇️

How we wrote helpdesk (part 3)



In continuation of part 2 and part 1 , we decided to write another article in which we want to tell in detail what happened during the 2 years of work on the project, what we achieved, what was new, why the application system is so promising. And of course the article number (3) corresponds to the product version number, which will be discussed below.



How to build a team again and write a system from scratch?
We realized that the further development of the project and its development on the current architecture will result in high labor costs and system performance. There was too much “bike” in our code, which was a “scooter” in the truest sense of the word. It was difficult to fall off of it, since the wheels are small, but we could not develop high speed. And I wanted to go far and fast :)
Therefore, the choice stood in the direction of the PHP framework, which for the most part would have the following criteria:
- Simplicity and understanding of the principles of work due to good documentation and our ideology
- Quick entry into development
- Availability of the necessary tools and libraries for integration with the services we need
- Prospects for supporting the framework
- Professional development of our developers
- Uniform standard of support and development of the system
So, we set ourselves a goal and achieved it. For 8 months, a whole project was written from scratch, using a revised and adapted business model of the previous version of the system.
')
Why do we develop the application system?
You can’t even imagine how widespread the use of application systems is. In theory, in an organization where there is a statement of tasks and tracking of their implementation, the most primitive type of workflow is the application system. It can be used from pizzerias (courier delivery and orders) and, of course, to IT departments that provide support to users. It is precisely to them that we are aimed first of all.
For aesthetic reasons, to optimize the workflow, in the direction of monitoring and accounting for tasks, this is our key task in this direction.

Why did we decide to use Laravel?
First, this is a new framework, but quite popular, beautiful, and out of the box are available implementations of the mechanisms that we need to use in our system. Secondly, we wanted to expand our team, and to use our own narrow framework, which is not used anywhere else but us, didn’t allow conscience before our developers. At the same time, we “killed two birds with one stone” - we got a common standardized system within which everything works and added a +1 framework to the skills of our colleagues.

What are the priorities for us in development?
It's no secret that lately more and more office employees spend time in social networks. Our idea is to develop the product in this particular direction. After all, it is better for an employee to spend most of his time in the corporate news feed, reading profile topics and improving his skills, than looking at the seals and boobs in general social services. networks. (Naturally, you can post the same in the application system). We are very sympathetic to Bitrix, but due to the personal relationship of our developers to the architecture of their project and the quality of the code, we decided to take our direction. We do not want to be their analogue or competitor, we just occupy our direction in this area.

How many users are interested in similar systems?
So much so that in any adequate office structural organization there is a need to keep track of the tasks and deadlines for their execution. Here, either PM-products are chosen, or application systems, or ToDo notebooks, or, ideally, CRM systems. In this regard, ZENLIX is not a universal tool, but its new version tries to be integrated as easily as possible into the enterprise environment, thanks to various common entities. For example, the word group is replaced by a company or a project, and then the task / application is already created for the project.

Development and support


This is the most important part for us, because in it we will tell about our development process.

Deploy & Test
Thanks to Envoy, we have an excellent opportunity to quickly deploy / update the existing development environment for testing, for example, the API to the developer of an iOS-mobile application.

Development process
It all starts with the client. Our team is divided into 2 groups - one is developing the current branch, the other is developing narrow solutions to the application system. Often, these boundaries are erased, because there are some tasks that intersect and we implement them faster than agreed. 65% of all implementation ideas come from our regular customers, from which we analyze their requests and present them in the form of a project development plan. The remaining part comes from the project manager, who is often guided by his analytic abilities of the market of application systems. Thanks to this formula - we achieve the success and recognition of our customers. The development process itself is not the main work, because besides it there is also technical support.

Users support
Our clients receive free support by mail "within one working day", in practice, this figure reaches "within an hour." We very much strive to make this indicator as high as possible. This is due to the fact that it is important for us to understand our users and to receive information from them first of all, in order to move on. Remote support is provided by our technical staff only via SSH, and clients previously accept a small user agreement.

What new have we implemented?

In the new version, we have revised the approaches to the organization of users / groups, the notification system, the general division of structural units. Now the administrator can create an unlimited number of groups (for example, in accordance with the client companies and departments of the organization that support these groups). In addition, each group can be assigned its main users, who will see all applications in the group. For creating applications - an even more flexible approach. We have created a system of application forms, through which each group or user can be assigned a unique form for creating applications.


Application Forms
This is an opportunity that was realized precisely from the requests of our users. This is an excellent example of when one of the users had a “deadline” field on the application creation page and another with a “status” and so on. We decided to satisfy everyone and make a mechanism for creating application forms. Now, from more than 20 points, the application creation form is configured. In addition, the form can be connected both to the user and to a group of users. This functionality additionally allows you to control access rights to create applications for groups / users.

Groups and users
We have changed the approach from user departments and customer companies towards user groups. This is a more flexible and simple user unit management structure. Now you can create your own isolated environment in which groups and users will not overlap, but at the same time I can interact within the framework of my rights to create and process applications.

NodeJS + REDIS


In the earlier version (v.2), we used a second reference to the database table as a system for polling new events. In the new version, we removed this bundle and decided to use REDIS. Now our nodejs server is subscribed to redis and this gives additional stability and speed in the operation of pop-up notifications.


Full QUEUE


Similarly, in the earlier version, we used our own message queue processing mechanism. Once a minute, cron started the message queue processing system and processed them. Such a mechanism was only suitable for mailing and expanding it under pushbullet, iOS-push, SMS was not quite right. In the new version, we used Laravel Queues, which fully cope with these tasks and provides additional stock for further integration with external services.

Individual execution of the application and acceptance of the application after its execution


Additional application statuses in the new version:
- verification of the application - it means that if there is such an item in the application, then the application after the status is completed will have to be confirmed by the author of the application or a super user of the group that this is so. Only after that the application receives the status of completed and closed.
- execution by several at the same time - this means that the application will be considered as completed, if only all users from the list of executors execute it.
In all cases, the notification will work: to mail, sms, pushbullet, webpush, ios-push. (depending on the user's personal settings)

System security


This is one of the important places in the system, which should minimize the distance between Convenience and Safety. A lot has been made possible by the built-in Laravel account system. But we have finalized it, for simultaneous use with LDAP. We used fully the mechanisms of middleware to fully control access to the methods and resources of the system.

License system
Having put a lot of effort into writing the code, we repeatedly returned to the issue of controlling the use of our product and protecting it against illegal commercial use. We even implemented a whole mechanism for verifying licenses and blocking the operation of the system. However, the use of such a system attracted ioncube + dependence on PHP versions.
We still conquered the principle of simplicity and non-attachment of the use of the system by customers. We are confident that our clients should not feel limited in choosing the version of PHP, coded files and be constantly under our licensed supervision. If we are trusted, when choosing software - we trust our customers in their integrity.

Update system
We used the excellent mechanism of Laravel console commands to consistently get the latest version of files and replace them with new ones.
At the same time, it is also convenient to start the system integrity check, database migration and system backup copies.

Chat
Chat can be used as a regular messenger between users of the system, and between users, clients, but in the latter case, the client must first send a request for support. And the user needs to accept the request. And only after providing support, at the end of communication or at any other time, the user can close the chat.

New version of mobile application

A mobile application that works in the new version, can store applications locally, without access to the Internet on a mobile device.
In the old version - you need constant access to the Internet.

One of the advantages of using the application is the use of push notifications.


General list of supported features of the new version




Ps.
We would be happy to consider proposals about long-term cooperation of large companies for a certain result and goals. We want to make our product even better, but this requires investments: to increase the number of developers, equipment, jobs, etc.
This is a typical problem we have encountered. Too many customers, the price of the product is quite loyal, more than enough work. But we do not want to lose current customers, but at the same time we want to go to more large companies.

And for those who are interested in the project - please write to info@zenlix.com and we will be glad to any cooperation.

Source: https://habr.com/ru/post/303484/


All Articles