{"id":2199,"date":"2021-09-23T06:59:55","date_gmt":"2021-09-23T06:59:55","guid":{"rendered":"https:\/\/prelive-new.opus.ee\/?p=2199"},"modified":"2026-02-19T16:10:24","modified_gmt":"2026-02-19T16:10:24","slug":"developing-coursy-the-efficient-way-to-train-your-employees","status":"publish","type":"post","link":"https:\/\/www.opus.ee\/en\/journal\/developing-coursy-the-efficient-way-to-train-your-employees\/","title":{"rendered":"Developing Coursy: The Efficient Way to Train Your Employees"},"content":{"rendered":"\r\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.opus.ee\/wp-content\/uploads\/2021\/09\/coursy-1-1024x576.png\" alt=\"\" class=\"wp-image-2202\" srcset=\"https:\/\/www.opus.ee\/wp-content\/uploads\/2021\/09\/coursy-1-1024x576.png 1024w, https:\/\/www.opus.ee\/wp-content\/uploads\/2021\/09\/coursy-1-1536x864.png 1536w, https:\/\/www.opus.ee\/wp-content\/uploads\/2021\/09\/coursy-1-300x169.png 300w, https:\/\/www.opus.ee\/wp-content\/uploads\/2021\/09\/coursy-1-768x432.png 768w, https:\/\/www.opus.ee\/wp-content\/uploads\/2021\/09\/coursy-1.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Imagine having to ensure that all of the thousands of people who work for your company have had all of the training, re-training, and certifications they need in order to be eligible to fill their role. How would you go about managing all of this, whilst ensuring that nothing is missed?<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Well, for the past 20 years, HR managers have had two Excel spreadsheets: one had all of the information about the training any particular role had to complete and the other had info about people filling those roles and whether or not they had had a chance to complete the training. As you can imagine, it\u2019s time-consuming, a logistical headache, and impractical. Here\u2019s where Coursy, originally created and developed by Opus and now operating as an independent company, comes into play.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.coursy.io\/\">Coursy\u2019s<\/a> aim is to digitize the space of professional development and learning, whilst ensuring that everyone eligible has the tools at their disposal to participate in workshops, seminars, or lectures organized by their company.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">\u201cCoursy ties everything into a single ecosystem \u2013 it offers HR the ability to monitor participation, employees can see any courses available to them, and it enables people to learn remotely, without the need to take a day to travel to a training center. Everything can be available via their smart devices,\u201d said Coursy\u2019s product manager Janne Laanmets.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">To enable all this, Opus\u2019 development team had to build the solution from the ground up. Having been an active development project for several years now, some of the tech-stack used within the tool is ready to be migrated to newer and better pastures. However, the fundamentals still hold up well.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Margus Eha, CEO of Opus,explained that with Coursy, it was important to create a resilient, easily scalable, and extremely robust system that could hold up with thousands of simultaneous users \u2013 it\u2019s not rare to see companies with more than 5000 employees using Coursy\u2019s services to manage the development of their employees.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">As such, the back-end of the application was built with PHP, whilst the front-end is based on Angular. Today, preparations are underway to migrate the front-end to React.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">\u201cWhen working on Coursy, it was incredibly important for everyone that we kept the future in mind. While at first it was based on the needs of a few individual customers, we knew it wouldn\u2019t stay like that,\u201d saidEha<strong>.<\/strong> \u201cAs such, we had to develop it in a way that we didn\u2019t paint ourselves into a corner once additional features and functions were added. This was important both in respect to the code, as well as to the underlying business logic.\u201d<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">This approach has already been put to the test, with Coursy ever-evolving. For example, today the system has evolved to be more automatic than ever. \u201cAfter setting it up, Coursy can automatically keep track of employee\u2019s training, attended courses, and a lot more. For HR personnel, this can save huge amounts of time,\u201d said Laanmets<strong>.<\/strong><\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">These are not the only time-saving features that Opus\u2019 developers introduced to the tool. For example, Coursy\u2019s clients have been incredibly fond of the functionality that allows to generate attendance reports and have participants sign them with their finger via a tablet. \u201cThis might seem small, but in the end, it makes everyone\u2019s lives a lot easier,\u201d noted Laanmets<strong>.<\/strong><\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Today, Coursy\u2019s development continues in co-operation between Opus\u2019s team and Coursy\u2019s in-house development staff.<\/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\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>Imagine having to ensure that all of the thousands of people who work for your company have had all of the training, re-training, and certifications they need in order to be eligible to fill their role. How would you go about managing all of this, whilst ensuring that nothing is missed? Well, for the past&hellip;<\/p>\n","protected":false},"author":10,"featured_media":2200,"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-2199","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\/2199","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=2199"}],"version-history":[{"count":2,"href":"https:\/\/www.opus.ee\/en\/wp-json\/wp\/v2\/posts\/2199\/revisions"}],"predecessor-version":[{"id":4091,"href":"https:\/\/www.opus.ee\/en\/wp-json\/wp\/v2\/posts\/2199\/revisions\/4091"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.opus.ee\/en\/wp-json\/wp\/v2\/media\/2200"}],"wp:attachment":[{"href":"https:\/\/www.opus.ee\/en\/wp-json\/wp\/v2\/media?parent=2199"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.opus.ee\/en\/wp-json\/wp\/v2\/categories?post=2199"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.opus.ee\/en\/wp-json\/wp\/v2\/tags?post=2199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}