{"id":2184,"date":"2021-09-06T08:08:08","date_gmt":"2021-09-06T08:08:08","guid":{"rendered":"https:\/\/prelive-new.opus.ee\/?p=2184"},"modified":"2026-02-19T16:11:22","modified_gmt":"2026-02-19T16:11:22","slug":"no-room-for-mediocrity-developing-lqas-new-and-snappy-review-tool","status":"publish","type":"post","link":"https:\/\/www.opus.ee\/en\/journal\/no-room-for-mediocrity-developing-lqas-new-and-snappy-review-tool\/","title":{"rendered":"No Room for Mediocrity: Developing LQA\u2019s New and Snappy Review Tool"},"content":{"rendered":"\r\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"453\" src=\"https:\/\/www.opus.ee\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-06-at-11.13.54-1024x453.png\" alt=\"\" class=\"wp-image-2188\" srcset=\"https:\/\/www.opus.ee\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-06-at-11.13.54-1024x453.png 1024w, https:\/\/www.opus.ee\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-06-at-11.13.54-524x232.png 524w, https:\/\/www.opus.ee\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-06-at-11.13.54-762x337.png 762w, https:\/\/www.opus.ee\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-06-at-11.13.54-768x340.png 768w, https:\/\/www.opus.ee\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-06-at-11.13.54-1536x680.png 1536w, https:\/\/www.opus.ee\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-06-at-11.13.54-2048x907.png 2048w, https:\/\/www.opus.ee\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-06-at-11.13.54-300x133.png 300w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">In the world of luxury, there\u2019s no room for mediocrity, and nowhere is it&nbsp;truer&nbsp;than within the&nbsp;realm&nbsp;of high-class hotels. To help the world-famous hotel chains to maintain their standards&nbsp;and uncover issues, Leading Quality Assurance (LQA) comes to the rescue, collecting and analyzing copious amounts of data.&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">As you might have imagined, processing,&nbsp;analyzing, and visualizing&nbsp;this data is a job for&nbsp;a sophisticated&nbsp;piece of software, but up until recently, the system used was&nbsp;severely&nbsp;lacking. Opus stepped in as LQA\u2019s development partner to fix the issues.&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Raul Viskar, Opus\u2019 lead developer, explained that LQA approached them with a problem: the developer who had built the original system to handle all of the data being generated, had retired and so&nbsp;far, they&nbsp;had&nbsp;had no luck finding anyone with the technical know-how and required effectiveness to fix any pre-existing issues and to develop the next version of the application.&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Opus was up to the challenge, and set to work on two separate projects, the first of which was to fix any major problems with the old&nbsp;.NET based&nbsp;application whilst the new version was being planned.&nbsp;Once the first wave of issues was solved, Opus\u2019 team could turn their attention to building a&nbsp;brand-new&nbsp;system entirely on Node and React.&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">\u201cAlthough I say new, then you have to understand that the amount of data LQA had was enormous and we were tasked with retrieving, analyzing, and&nbsp;displaying&nbsp;this data within a fraction of&nbsp;a&nbsp;second \u2013 a user selects the parameters they\u2019d want to see, for example, ratings given to their breakfast quality over the past year compared to the year before that, and the system had to spit it out with beautiful graphs immediately,\u201d said&nbsp;Viskar.&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">With the original version of the application, all of this data, alongside all of the procedures and logics, was stored in&nbsp;an&nbsp;MS SQL database. Opus\u2019s team migrated the database to PostgreSQL and all of the logic into the code itself. \u201cDue to the sheer&nbsp;number&nbsp;of different instructions and logics it was quite a challenge, but in the&nbsp;end,&nbsp;it enabled us to offer&nbsp;a system that was heaps and bounds snappier than the original one,\u201d he said.&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Alongside data management, privacy and security were also something that Opus\u2019 team had to keep in mind. With most of the hotels in the world being competitors, even the ones under the same corporate umbrella, it was vital to protect the data and have a sophisticated&nbsp;role management system in place. \u201cHaving any data leak was simply not an option,\u201d Viskar said.&nbsp;<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\"><strong>The power of React<\/strong>&nbsp;<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">On its surface the front-end work of LQAs system might seem trivial \u2013 it needs to have options to enter data and then the ability to display this data in a form factor that\u2019s easy to&nbsp;read for a not-so-tech-savvy person. However, to achieve the&nbsp;responsiveness&nbsp;expected from the application, much of what would normally be handled&nbsp;by the back-end was handed over to be handled by the front-end.&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Viskar&nbsp;explained that their aim was to minimize the time the user had to wait before&nbsp;submitting&nbsp;a request and seeing what they wanted to see. As such most of the data mapping&nbsp;is handled by the front-end, alongside the generation of responsive graphics and several other processes. \u201cIt minimized the&nbsp;number&nbsp;of times&nbsp;the page had to be reloaded,\u201d he noted.&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">All of this was achieved by using&nbsp;React and a variety of top-notch&nbsp;libraries.&nbsp;\u201cIn addition to saving time by using time-proven libraries, our awesome UX designer&nbsp;provided us with React components to&nbsp;display&nbsp;the graphs and other visual elements, as such&nbsp;there was even less need to&nbsp;reinvent the wheel during the process,\u201d Viskar added.&nbsp;\u201cAll-in-all, it was a great opportunity to work with React&nbsp;at its best.\u201d&nbsp;<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\"><strong>Let\u2019s make decisions<\/strong>&nbsp;<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">With this project, Opus also found itself in a position where it had to make some fundamental decisions&nbsp;about its development practices.&nbsp;Viskar explained that it became apparent that they had to decide on some&nbsp;principles to be used in the event of a larger than average number of developers working on React projects.&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">\u201cWith&nbsp;LQA\u2019s development, we had to constantly deal with different styles and approaches, and it became clear that we had to&nbsp;settle on some general guidelines,\u201d he noted. \u201cBut this did not mean that someone from higher up dictated what had to be done. Quite the opposite \u2013 we held workshops,&nbsp;discussions, and everyone from junior developers to architects got to have their say. In the end,&nbsp;we settled on a set of principles we use in some form to this day.\u201d&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">\u201cIt\u2019s common for companies to say that all of the developers have a say on how things are done. This here shows that at least\u00a0at\u00a0Opus it\u2019s 100 percent true,\u201d he said.\u00a0<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><a rel=\"noreferrer noopener\" href=\"https:\/\/www.opus.ee\/careers\/\" target=\"_blank\"><strong>Want to join our team? Take a look at our open positions.<\/strong><\/a>\u00a0We\u2019re looking forward to hearing from you!<\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>In the world of luxury, there\u2019s no room for mediocrity, and nowhere is it&nbsp;truer&nbsp;than within the&nbsp;realm&nbsp;of high-class hotels. To help the world-famous hotel chains to maintain their standards&nbsp;and uncover issues, Leading Quality Assurance (LQA) comes to the rescue, collecting and analyzing copious amounts of data.&nbsp; As you might have imagined, processing,&nbsp;analyzing, and visualizing&nbsp;this data is&hellip;<\/p>\n","protected":false},"author":10,"featured_media":2188,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2184","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.opus.ee\/en\/wp-json\/wp\/v2\/posts\/2184","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.opus.ee\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.opus.ee\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.opus.ee\/en\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.opus.ee\/en\/wp-json\/wp\/v2\/comments?post=2184"}],"version-history":[{"count":4,"href":"https:\/\/www.opus.ee\/en\/wp-json\/wp\/v2\/posts\/2184\/revisions"}],"predecessor-version":[{"id":4093,"href":"https:\/\/www.opus.ee\/en\/wp-json\/wp\/v2\/posts\/2184\/revisions\/4093"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.opus.ee\/en\/wp-json\/wp\/v2\/media\/2188"}],"wp:attachment":[{"href":"https:\/\/www.opus.ee\/en\/wp-json\/wp\/v2\/media?parent=2184"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.opus.ee\/en\/wp-json\/wp\/v2\/categories?post=2184"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.opus.ee\/en\/wp-json\/wp\/v2\/tags?post=2184"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}