diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 91e6985e1c8c105a1f57c7ca6af45c0ace6456f8..6271079b32f859405fea39df52bf7fd623beed77 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -63,9 +63,12 @@ test:e2e:
 ## VALIDATION ##
 
 include:
-  project: infra/gitlab
-  ref: master
-  file: templates/deploy.ci.yml
+  - project: infra/gitlab
+    ref: master
+    file: templates/deploy.ci.yml
+  - project: infra/gitlab
+    ref: master
+    file: templates/nodejs.ci.yml
 
 test1:
   extends: .ansible
@@ -130,14 +133,8 @@ stg2:
 ## RELEASE TAGGING ##
 
 publish:
+  extends: .publish_npm
   stage: release
-  image: ${CI_REGISTRY}/infra/docker/jsrelease:latest
-  script:
-    - semantic-release
-  only:
-    - master
-  tags:
-    - deploy
 
 ## LIVE DEPLOYMENTS ##
 
diff --git a/README.md b/README.md
index a6f348834a6073b08fd71109923b6b2b1aca64e8..5930e71e8ecc8d8c7acbabd574344824b2536184 100644
--- a/README.md
+++ b/README.md
@@ -284,12 +284,11 @@ Eg.:
         {
           "type": "events",
           "parameters": {
-            "events": "federation://events/",
+            "dataSrc": "federation://events/",
+            "postUri": "server://events/",
             "circles": "federation://circles/",
-            "get": "federation://events/",
-            "post": "server://events/",
-            "postTypeevents": "server://typeevents/",
             "typeevents": "federation://typeevents/",
+            "postTypeUri": "server://typeevents/",
             "uploads": "server://upload/"
           },
           "federation": [
@@ -381,12 +380,11 @@ Module declaration, on `config.json`:
     {
       "type": "events",
       "parameters": {
-        "events": "federation://events/",
+        "dataSrc": "federation://events/",
+        "postUri": "server://events/",
         "circles": "federation://circles/",
-        "get": "federation://events/",
-        "post": "server://events/",
-        "postTypeevents": "server://typeevents/",
         "typeevents": "federation://typeevents/",
+        "postTypeUri": "server://typeevents/",
         "pastevents": "visible",
         "visiblecheckbox": "visible",
         "visibilityregions": "visible",
diff --git a/src/index.pug b/src/index.pug
index bb4ab8f84e00f4d0d886bcc94ee783c4a07b110c..7d9df65412e6422237a437e0a8afc7208dc12625 100644
--- a/src/index.pug
+++ b/src/index.pug
@@ -107,15 +107,18 @@ html(lang="en")
               if component.type == "about"
                 include views/page-about.pug
 
+              if component.type == "rocketchat"
+                include views/page-rocketchat.pug
+
               if component.type == "chat"
                 .whitespace-normal
-                  orbit-reactivity(bind-user nested-field='inbox' target-src="store://user.contacts")
+                  orbit-reactivity(bind-user nested-field='inbox' target-src="store://user.contacts.@id")
                   include views/page-messages.pug
 
               if component.type == "circles"
                 .with-sidebar.whitespace-normal.jsMobileContentSidebarControl
-                  orbit-reactivity(bind-user nested-field='inbox' target-src="store://user.circles")
-                  orbit-reactivity(bind-user nested-field="circles" target-src="store://user")
+                  orbit-reactivity(bind-user nested-field='inbox' target-src="store://user.circles.@id")
+                  orbit-reactivity(bind-user nested-field="circles" target-src="store://user.@id")
                   orbit-reactivity(data-src=`${component.parameters.dataSrcJoinable}` target-src=`${component.parameters.dataSrc}`)
                   orbit-reactivity(data-src=`${component.parameters.post}` target-src=`${component.parameters.dataSrc}`)
                   orbit-reactivity(bind-user nested-field="circles" target-src=`${component.parameters.post}`)
@@ -144,13 +147,13 @@ html(lang="en")
                   include views/page-polls.pug
 
               if component.type == "directory"
-                orbit-reactivity(bind-user nested-field="profile" target-src="store://user")
-                orbit-reactivity(bind-user nested-field="account" target-src="store://user")
+                orbit-reactivity(bind-user nested-field="profile" target-src="store://user.@id")
+                orbit-reactivity(bind-user nested-field="account" target-src="store://user.@id")
 
               if component.type == "projects"
                 .with-sidebar.whitespace-normal.jsMobileContentSidebarControl
-                  orbit-reactivity(bind-user nested-field='inbox' target-src="store://user.projects")
-                  orbit-reactivity(bind-user nested-field="projects" target-src="store://user")
+                  orbit-reactivity(bind-user nested-field='inbox' target-src="store://user.projects.@id")
+                  orbit-reactivity(bind-user nested-field="projects" target-src="store://user.@id")
                   orbit-reactivity(data-src=`${component.parameters.dataSrcJoinable}` target-src=`${component.parameters.dataSrc}`)
                   orbit-reactivity(data-src=`${component.parameters.dataSrcJoinable}` target-src=`${component.parameters.post}`)
                   orbit-reactivity(data-src=`${component.parameters.post}` target-src=`${component.parameters.dataSrc}`)
@@ -195,6 +198,8 @@ html(lang="en")
             no-render
           )
             include views/page-profile.pug
+            orbit-reactivity(bind-user nested-field='skills' target-src="store://user.@id")
+
 
         if componentSet.has('circles')
           div.scrollbar-content.bg-color-white(
diff --git a/src/scripts/menu-search-control.js b/src/scripts/menu-search-control.js
index a4bb17fc9b31658a63d9eaca570285e4dad86f90..0dd92f60b55ff290ce5dce5ab612feb9d04e7413 100644
--- a/src/scripts/menu-search-control.js
+++ b/src/scripts/menu-search-control.js
@@ -33,14 +33,20 @@ document.addEventListener("DOMContentLoaded", () => {
         menuAdmin.classList.toggle('hidden', true);
       });
     }
-    menuHeader.addEventListener('click', e => {
-      menuArrow.classList.toggle('transform-up');
-      menuSub.classList.toggle('hidden');
-    });
-    menuOption.addEventListener('click', e => {
-      menuAdmin.classList.toggle('hidden');
-      e.stopPropagation();
-    });
+
+    if (menuHeader) {
+      menuHeader.addEventListener('click', e => {
+        menuArrow.classList.toggle('transform-up');
+        menuSub.classList.toggle('hidden');
+      });
+    }
+
+    if (menuOption) {
+      menuOption.addEventListener('click', e => {
+        menuAdmin.classList.toggle('hidden');
+        e.stopPropagation();
+      });
+    }
   });
 
   const searchForm = document.querySelector('.menu-search');
diff --git a/src/scripts/orbit-reactivity.js b/src/scripts/orbit-reactivity.js
index 05dd9d15172b7a9c9cc9543cbbec12edfb2394d1..5c50f944899be075f57f21c9b4ae128fce5937ca 100644
--- a/src/scripts/orbit-reactivity.js
+++ b/src/scripts/orbit-reactivity.js
@@ -21,6 +21,7 @@ import(`https://cdn.skypack.dev/@startinblox/core@${core.version}`).then(core =>
       } else {
         this.resourceId = value;
       }
+      await this.replaceAttributesData();
       this.subscribe();
     },
     unsubscribe(resourceId, targetSrc) {
diff --git a/src/styles/chat/_index.scss b/src/styles/chat/_index.scss
index 9d9224dc3df6dffaff76e2974f936dbb3309fb9e..3a8d3f89c4b02fd14d555d6e33d44753490d3cd0 100644
--- a/src/styles/chat/_index.scss
+++ b/src/styles/chat/_index.scss
@@ -10,7 +10,7 @@
 
   @media (max-width: 768px) {
 
-    height: calc(100vh - 50px - 58px);
+    height: calc(100vh - 50px);
 
     .messages-header {
       display: flex;
diff --git a/src/styles/content/_index.scss b/src/styles/content/_index.scss
index 115f927023f54635a407c9452378a98944b467bc..2acbdf77ebf52455dd0e6f5d5e02e79bf501ed62 100644
--- a/src/styles/content/_index.scss
+++ b/src/styles/content/_index.scss
@@ -116,8 +116,11 @@ main {
   -ms-overflow-style: none;
 }
 
-.scrollbar-nav {
-  height: 100vh;
+.scrollbar-content {
+
+  @media (max-width: 768px) {
+    position: relative;
+  }
 }
 
 /* Custom scrollbar of the right-menu */
diff --git a/src/styles/left-nav/_index.scss b/src/styles/left-nav/_index.scss
index 4566b8854d0628a9f219863221752d2d3813022e..1b676a0f341c37c632ec09131ef26cd361a72895 100644
--- a/src/styles/left-nav/_index.scss
+++ b/src/styles/left-nav/_index.scss
@@ -1,5 +1,8 @@
 nav#main__menu {
-  height: 100vh;
+
+  @media (min-width: 768.01px) {
+    height: 100vh;
+  }
 
   &.searching {
     background-image: url('../images/magnify-white.svg');
@@ -14,10 +17,6 @@ nav#main__menu {
     }
   }
 
-  @media (max-width: 768px) {
-    min-height: calc(100vh - 50px);
-  }
-
   .transparent-background {
     background-color: transparent;
 
@@ -239,8 +238,8 @@ nav#main__menu {
       }
 
       solid-set-default[name="message"] {
-        margin-right: 9px;
-        width: 74%;
+        margin-right: 5px;
+        width: 75%;
       }
 
       orbit-menu-contact-removed {
diff --git a/src/views/page-events.pug b/src/views/page-events.pug
index b7ee2091416ce55aba23910ee58fd9133856e07a..c46b8e9b84d96f28979d04f727444a3bc777b10f 100644
--- a/src/views/page-events.pug
+++ b/src/views/page-events.pug
@@ -1,5 +1,7 @@
 solid-event(
-  data-src=`${component.parameters.events}`
+  data-src=`${component.parameters.dataSrc}`
+  post-uri=`${component.parameters.postUri}`
+  post-types-uri=`${component.parameters.postTypesUri}`
   past-events=`${component.parameters.pastevents || "hidden"}`
   visiblecheckbox=`${component.parameters.visiblecheckbox || "hidden"}`
   visibilityregions=`${component.parameters.visibilityregions || "hidden"}`
diff --git a/src/views/page-rocketchat.pug b/src/views/page-rocketchat.pug
new file mode 100644
index 0000000000000000000000000000000000000000..a698f1beffa59924b2457effad9939928e65141d
--- /dev/null
+++ b/src/views/page-rocketchat.pug
@@ -0,0 +1,2 @@
+div.scrollbar-content(data-view=rocketchat)
+  iframe(width='100%', height='100%', src=`${component.parameters.target}`)
diff --git a/src/views/partials/circle/page-circle-events.pug b/src/views/partials/circle/page-circle-events.pug
index 07e54e95a64f399aa8058a876293f53a99d11861..b4c879e71c7efcbaf2bea967d443847d0f5f0789 100644
--- a/src/views/partials/circle/page-circle-events.pug
+++ b/src/views/partials/circle/page-circle-events.pug
@@ -1,8 +1,14 @@
 solid-event(
   bind-resources
   nested-field="events"
+  post-uri=`${extension.parameters.postUri}`
+  past-events=`${extension.parameters.pastevents || "hidden"}`
+  visiblecheckbox=`${extension.parameters.visiblecheckbox || "hidden"}`
+  visibilityregions=`${extension.parameters.visibilityregions || "hidden"}`
+  range-event-region=`${extension.parameters.regionevents}`
   range-event-type=`${extension.parameters.typeevents}`
   range-event-circle=`${extension.parameters.circles}`
+  post-types-uri=`${extension.parameters.postTypesUri}`
   upload-dir=`${extension.parameters.uploads}`
   id-prefix='default'
   uniq=extension.uniq
diff --git a/src/views/partials/menu-left.pug b/src/views/partials/menu-left.pug
index 2fd8c5ae51852ec2dd6645d059554c08dc5f7084..af4584c1ab8df532694ec11c568c60cf57cca50d 100644
--- a/src/views/partials/menu-left.pug
+++ b/src/views/partials/menu-left.pug
@@ -31,7 +31,6 @@ solid-router#navbar-router(default-route=defaultRoute)
             div.segment.icon.icon-small.icon-grid
           div.segment.text-uppercase.text-letter-spacing-large(data-trans="menuLeft.communities")
         div.divider
-          
       if component.type == "circles"
         div.jsMenuTab
           div.menu-header.segment.full.padding-xsmall.text-semibold.text-color-white.bg-color-heading.transparent-background.hover.cursor-pointer.jsMenuHeader
@@ -100,6 +99,12 @@ solid-router#navbar-router(default-route=defaultRoute)
               filtered-by="general-search"
               order-asc="contact.name"
             )
+      if component.type == "rocketchat"
+        solid-route.menu-tab.segment.full.padding-xsmall.text-semibold.text-color-white.heading-active.bg-color-heading.transparent-background.hover.active(name=component.route)
+          div.segment.margin-right-xxsmall
+            div.segment.icon.icon-small.icon-briefcase
+          div.segment.text-uppercase.text-letter-spacing-large(data-trans="menuLeft.rocketchat")
+        div.divider
       if component.type == "projects"
         div.jsMenuTab
           div.menu-header.segment.full.padding-xsmall.text-semibold.text-color-white.heading-active.bg-color-heading.transparent-background.hover.active.cursor-pointer.jsMenuHeader