Case: development of a project elaboration system

In brief:
Developed an automated system with a user-friendly web interface that helped engineers reduce the time of drafting from 2 hours to 10 minutes.
Client
The company provides IT services and develops and regularly updates its own tools. Over the past two years, it has been actively growing: the number of specialists on staff has increased, the flow of clients has expanded, and, as a result, the complexity of projects has risen.
Problem
Previously, all work was done in Google Docs, and this project management system was no longer convenient.
For example:
- Due to the lack of standardization and ready-made templates, the team had to manually manage numerous tasks and input project data. This process was time-consuming and often led to errors.
- Managers took a long time to prepare and send out commercial proposals, resulting in delays. Losing leads to competitor companies became a common occurrence.
- The experience from previous project elaborations was not preserved. The IT department lacked the ability to thoroughly document technologies and stages of project work. Instead of focusing on solving tasks, engineers spent time trying to recall how they handled similar tasks in the past.
While a system of project management rules in Google Docs was sufficient for handling simple client requests, the company now needed a more flexible and modern solution.
Task
Develop a new service with a simple web interface for handling projects of any complexity.
How should it work?
- A client submits a request for infrastructure setup.
- For each request, a separate project is created in the service, within which the team identifies and describes the scope of work step by step in the form of tasks. Each task contains detailed information: a title, a list of actions required to complete it, a time estimate, and calendar deadlines.
- Engineers export the prepared project solutions to Google Spreadsheets.
The new system should have a graphical interface to display statistics collected from the task system as engineers work on projects. For example, it should be possible to visually compare the time actually spent on completing a task with the initial estimated values. This will help adjust the estimates provided in the templates in the future.
System Requirements
- A web interface with authentication;
- Authentication based on Redmine credentials;
- Role-based access control;
- Creation and management of projects within the service, divided into stages and tasks, presented in a tabular format;
- Ability to extend the list of fields for tasks;
- A dedicated page for managing application settings;
- Export of project solutions to Google Spreadsheets;
- Aggregation of project management statistics collected from the task system (Redmine);
- A dashboard for displaying the collected statistics in the form of graphs.
Our Solution
We developed a system based on a microservices architecture.
For the Frontend, Vue was used. The Backend was implemented as a set of microservices developed in Go, each handling its own set of tasks. A total of 3 microservices were created with the following roles:
- First: Implements the core functionality of the service, directly interacting with the frontend.
- Second: Handles caching of Redmine data required for authentication.
- Third: Collects and processes statistics.
Thanks to this separation, the development process became more organized and efficient. Each microservice is now managed by a separate team specializing in specific functions.
Additionally, developers work with a smaller codebase, which has significantly accelerated the creation of new features—by an average of 15-20%.
Some microservices have a well-developed API. Interaction between system components is facilitated through this API.
To expand the functionality of the service, add new data fields to project tasks, and store statistics on engineers’ work on projects, we used MongoDB as the database management system.
Compared to the usual relational databases, the choice of a NoSQL-based solution increased the speed of development of new functions requiring structural changes in the service and interaction with the database by an average of 30%.
To enable the customer’s engineers to use the experience gained in the course of previous work, we developed special templates. They represent tasks with already filled in fields, such as the name of the service, its acceptance criteria, estimation of execution time and others. Besides, the new system with templates allowed us to reduce the time of project development from 2 hours to 10 minutes.
With the help of the new statistics collection module, engineers can analyze the correspondence between the planned and actual time spent on tasks and make necessary corrections to the templates used. This helps to avoid repeating mistakes in future developments.
This module has also proven useful for project managers. Now they can track costs and, as soon as they approach the upper limit of the estimate, quickly intervene in potentially complex tasks and monitor their progress. This ensures that the project’s profitability remains at the desired level.
A common tool Grafana was used to visualize statistics.
Redis was used for intermediate caching of data from Redmine.
All components of the solution are deployed in Kubernetes of the cloud provider.
From the initial stages of the project, we implemented CI/CD processes to ensure automatic build, testing, and deployment of all project elements to the production environment. This made the process of developing, assembling, and deploying the application more transparent and streamlined. It also significantly eased the onboarding process for new employees.
Moreover, well-organized CI/CD processes have drastically reduced the time required for each release. While previously this process took about 10 minutes, it now takes no more than a minute. During the development stage, there were about 2–3 releases per day, meaning engineers now save up to 30 minutes of work daily.
Realization time
Product realization was 1.5 calendar months including all approvals, testing, and acceptance.
We can help simplify and speed up the work of your specialists. If you need a convenient solution, please fill out the form below and our team will contact you within 24 hours.