M2LAB is an IT company that develops software solutions for construction organizations.


We had to fix errors in the architecture of the app's client-side and provide a flexible solution that can be tailored to specific client needs.


We had to keep in mind SEO optimization and the fact that an existing module was built using Vue.js framework. In this case, we decided to use Nuxt.js framework that allowed us to save a part of an existing code base as well as to implement page rendering on a server to simplify search engine indexing.

To make an app flexible, we provided the support of various color schemes as well as an option to connect different app modules depending on whether a developer uses them or not.

To receive all the necessary data needed for a 3D catalog to work properly, we enhanced an existing integration with the API of the customer's CRM system ("M2LAB Developer"). Plus, we adapted the CRM to the changes in the app's architecture in close cooperation with the M2LAB's development team. 

Also, we had to develop a feature for inserting 3D catalogs to developers’ websites. For this purpose, we developed a module that adds up to Nuxt.js functionality.  It allows developers to upload scripts that insert 3D catalogs in the right place on a page.

Challenges we faced

While developing certain pages and elements, we faced the need to define the centers of SVG elements. 

The challenge is that a visual center of a design element, as it appears on a page, isn't always an actual center of an SVG element. To fix this issue, we had to define the coordinates of this center, and then convert these coordinates in the context of the webpage.

For this purpose, we used the polylabel algorithm for quickly searching actual centers of SVG elements. And to solve the problem of converting coordinates, we derived a formula that returns pixel-accurate target results.


  • At this point, 10+ major developers from all over Russia have been connected to the module. 
  • All the developers provide their feedback for enhancing the module.