A company that organizes large events and wants to develop an automated system for managing all its business processes.
An ERP system for managing all aspects of event organization, including functionalities related to maintaining the client base, ticket sales, visitor feedback, and newsletters about upcoming events.
The customer wanted the system to be extensible on the server side and the client side. This required the implementation of an end-to-end plugin system, which involved the extension of both the server side and the client side.
- The frontend part of the platform was implemented on the ReactJS framework.
- A non-trivial architectural solution, the development of which required a high level of knowledge and analytical skill from the programmers.
Approaches and solutions
- Engaging an architect. Initially, it was clear that the task required careful planning and elaboration of the architecture. Therefore, an architect with experience in developing plugin solutions and frameworks was involved in the project. He studied the customer’s requirements and proposed his architecture, which was evaluated for a long time. The team was not in a hurry to program, and worked on the conceptual level.
- Preparing documentation for plugin developers. As soon as the architecture was approved, we started preparing the necessary documentation for plugin developers in parallel with the development. The plugin developers then received the task to implement the solutions.
- Implementing the plugins. Plugins interact using RabbitMQ queues. Each of them can run on either the same or different servers (which may be needed to distribute the load in case of a large number of users). Some plugins were developed by teams with extensive experience in working with a specific user interaction channel (Viber, Telegram).
- Ensuring the product operation quality. Special attention was paid to automated testing: this was necessary to prevent bugs in individual plugins from affecting the work of the entire application. This means that additional modules can be developed over time, while during their creation and testing, other modules will continue to work stably.
Results and achievements
- A plugin system with a modular architecture was implemented. This solution helped to generalize the extension of the user menu, and the addition of new screens and user action handlers at the UI level. Moreover, the simple extension algorithm allows other developers to upgrade the applications as easily as simply installing various plugins on servers, which determines the further behavior of the UI.
- The process of developing plugins by different teams of developers was established, all while maintaining a high level of system stability.
- The engineering approach of our frontend specialists was successfully applied. This made it possible to work with the level of abstraction necessary for the task implementation.