diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 96dad6fadbd93f361c615c1dcb10e14dd7a00220..892ef33779e6a216f3734aa8ce94ec7af618d2f9 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -18,9 +18,10 @@ test:
 
 publish:
   stage: publish
-#  only:
-#    refs:
-#      - publish
+  only:
+    refs:
+      - publish
+      - master
   script:
     - sudo npm install --global can-npm-publish
     - yarn config set registry https://registry.npmjs.org/
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 0000000000000000000000000000000000000000..bd3327ab5a9da7959388dab26528073f912af07e
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1 @@
+//registry.npmjs.org/:_authToken=${NPM_TOKEN}
\ No newline at end of file
diff --git a/README.md b/README.md
index 57441c842a4a4a657287da16401a964d310445ed..e1bb85869f674722ce3580e407efb0c812e98f57 100644
--- a/README.md
+++ b/README.md
@@ -20,3 +20,10 @@ yarn install
 
 * `yarn run test` -  Run test for all packages
 * `yarn run clean` - Removes all `node_modules` directories.
+
+## Publishing packages to npmjs.com
+
+There is an automatic publishing process initiated for each package if code is pushed
+to the `master` branch, if the package isn't set to private in its `package.json` and
+the version number in its `package.json` is higher than the version number on npmjs.com.
+
diff --git a/packages/app-shell/.npmrc b/packages/app-shell/.npmrc
new file mode 100644
index 0000000000000000000000000000000000000000..bd3327ab5a9da7959388dab26528073f912af07e
--- /dev/null
+++ b/packages/app-shell/.npmrc
@@ -0,0 +1 @@
+//registry.npmjs.org/:_authToken=${NPM_TOKEN}
\ No newline at end of file
diff --git a/packages/app-shell/README.md b/packages/app-shell/README.md
index c7c23e5bc77b72b2cbbc3329f331a970dbb9ee22..7bfd807c0533dd702581de716b4010f9c2469ae7 100644
--- a/packages/app-shell/README.md
+++ b/packages/app-shell/README.md
@@ -3,7 +3,7 @@
 A web component for building SPAs consisting of one topic with multiple
 activities. Handles login, language selection, activity switching, menus etc.
 
-You can install these component via npm:
+You can install this component via npm:
 
 ```bash
 npm i @dbp-toolkit/app-shell
diff --git a/packages/app-shell/package.json b/packages/app-shell/package.json
index 5e712f9103053d2fd1a1b8370251d0c97ffbd710..eb22be76b96955bf21efc4245345ac45523b65d9 100644
--- a/packages/app-shell/package.json
+++ b/packages/app-shell/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@dbp-toolkit/app-shell",
   "homepage": "https://gitlab.tugraz.at/dbp/web-components/toolkit/-/tree/master/packages/app-shell",
-  "version": "0.1.1",
+  "version": "0.1.4",
   "main": "src/index.js",
   "license": "LGPL-2.1-or-later",
   "devDependencies": {
diff --git a/packages/auth/.npmrc b/packages/auth/.npmrc
new file mode 100644
index 0000000000000000000000000000000000000000..bd3327ab5a9da7959388dab26528073f912af07e
--- /dev/null
+++ b/packages/auth/.npmrc
@@ -0,0 +1 @@
+//registry.npmjs.org/:_authToken=${NPM_TOKEN}
\ No newline at end of file
diff --git a/packages/check-in-place-select/.npmrc b/packages/check-in-place-select/.npmrc
new file mode 100644
index 0000000000000000000000000000000000000000..bd3327ab5a9da7959388dab26528073f912af07e
--- /dev/null
+++ b/packages/check-in-place-select/.npmrc
@@ -0,0 +1 @@
+//registry.npmjs.org/:_authToken=${NPM_TOKEN}
\ No newline at end of file
diff --git a/packages/common/.npmrc b/packages/common/.npmrc
new file mode 100644
index 0000000000000000000000000000000000000000..bd3327ab5a9da7959388dab26528073f912af07e
--- /dev/null
+++ b/packages/common/.npmrc
@@ -0,0 +1 @@
+//registry.npmjs.org/:_authToken=${NPM_TOKEN}
\ No newline at end of file
diff --git a/packages/data-table-view/.npmrc b/packages/data-table-view/.npmrc
new file mode 100644
index 0000000000000000000000000000000000000000..bd3327ab5a9da7959388dab26528073f912af07e
--- /dev/null
+++ b/packages/data-table-view/.npmrc
@@ -0,0 +1 @@
+//registry.npmjs.org/:_authToken=${NPM_TOKEN}
\ No newline at end of file
diff --git a/packages/file-handling/.npmrc b/packages/file-handling/.npmrc
new file mode 100644
index 0000000000000000000000000000000000000000..bd3327ab5a9da7959388dab26528073f912af07e
--- /dev/null
+++ b/packages/file-handling/.npmrc
@@ -0,0 +1 @@
+//registry.npmjs.org/:_authToken=${NPM_TOKEN}
\ No newline at end of file
diff --git a/packages/knowledge-base-web-page-element-view/.npmrc b/packages/knowledge-base-web-page-element-view/.npmrc
new file mode 100644
index 0000000000000000000000000000000000000000..bd3327ab5a9da7959388dab26528073f912af07e
--- /dev/null
+++ b/packages/knowledge-base-web-page-element-view/.npmrc
@@ -0,0 +1 @@
+//registry.npmjs.org/:_authToken=${NPM_TOKEN}
\ No newline at end of file
diff --git a/packages/language-select/.npmignore b/packages/language-select/.npmignore
new file mode 100644
index 0000000000000000000000000000000000000000..bd8138ceb1b9d6026edec0d20ac4be9940d5cf73
--- /dev/null
+++ b/packages/language-select/.npmignore
@@ -0,0 +1,5 @@
+node_modules
+.idea
+npm-debug.log
+package-lock.json
+index.html
diff --git a/packages/language-select/.npmrc b/packages/language-select/.npmrc
new file mode 100644
index 0000000000000000000000000000000000000000..bd3327ab5a9da7959388dab26528073f912af07e
--- /dev/null
+++ b/packages/language-select/.npmrc
@@ -0,0 +1 @@
+//registry.npmjs.org/:_authToken=${NPM_TOKEN}
\ No newline at end of file
diff --git a/packages/language-select/README.md b/packages/language-select/README.md
index 313cb1b48f207c70937aa02afcdb23f45e674702..3adc9fe67d77ff1723abfd929929ce55bdebba41 100644
--- a/packages/language-select/README.md
+++ b/packages/language-select/README.md
@@ -1,5 +1,18 @@
 # Language Select Web Component
 
+You can install this component via npm:
+
+```bash
+npm i @dbp-toolkit/language-select
+```
+
+## Usage
+
+```html
+<dbp-language-select></dbp-language-select>
+<script type="module" src="node_modules/@dbp-toolkit/app-shell/dist/dbp-app-shell.js"></script>
+```
+
 ## Local development
 
 ```bash
diff --git a/packages/language-select/package.json b/packages/language-select/package.json
index 20e584c24a4286bdc54537d2c0f3826adc640955..143e6c05d604f85c66bd968c0162654f061d967f 100644
--- a/packages/language-select/package.json
+++ b/packages/language-select/package.json
@@ -4,7 +4,6 @@
   "version": "0.1.0",
   "main": "src/index.js",
   "license": "LGPL-2.1-or-later",
-  "private": true,
   "devDependencies": {
     "@rollup/plugin-commonjs": "^16.0.0",
     "@rollup/plugin-json": "^4.1.0",
diff --git a/packages/matomo/.npmrc b/packages/matomo/.npmrc
new file mode 100644
index 0000000000000000000000000000000000000000..bd3327ab5a9da7959388dab26528073f912af07e
--- /dev/null
+++ b/packages/matomo/.npmrc
@@ -0,0 +1 @@
+//registry.npmjs.org/:_authToken=${NPM_TOKEN}
\ No newline at end of file
diff --git a/packages/notification/.npmrc b/packages/notification/.npmrc
new file mode 100644
index 0000000000000000000000000000000000000000..bd3327ab5a9da7959388dab26528073f912af07e
--- /dev/null
+++ b/packages/notification/.npmrc
@@ -0,0 +1 @@
+//registry.npmjs.org/:_authToken=${NPM_TOKEN}
\ No newline at end of file
diff --git a/packages/person-profile/.npmrc b/packages/person-profile/.npmrc
new file mode 100644
index 0000000000000000000000000000000000000000..bd3327ab5a9da7959388dab26528073f912af07e
--- /dev/null
+++ b/packages/person-profile/.npmrc
@@ -0,0 +1 @@
+//registry.npmjs.org/:_authToken=${NPM_TOKEN}
\ No newline at end of file
diff --git a/packages/person-select/.npmrc b/packages/person-select/.npmrc
new file mode 100644
index 0000000000000000000000000000000000000000..bd3327ab5a9da7959388dab26528073f912af07e
--- /dev/null
+++ b/packages/person-select/.npmrc
@@ -0,0 +1 @@
+//registry.npmjs.org/:_authToken=${NPM_TOKEN}
\ No newline at end of file
diff --git a/packages/qr-code-scanner/.npmrc b/packages/qr-code-scanner/.npmrc
new file mode 100644
index 0000000000000000000000000000000000000000..bd3327ab5a9da7959388dab26528073f912af07e
--- /dev/null
+++ b/packages/qr-code-scanner/.npmrc
@@ -0,0 +1 @@
+//registry.npmjs.org/:_authToken=${NPM_TOKEN}
\ No newline at end of file