diff --git a/package-lock.json b/package-lock.json
index 0a84121583f2d44583d11aaad4193b476e078a03..de4bbf112c9b239d80af1f26a51f3232eefabe0d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -122,7 +122,8 @@
                 "webpack": "^5.70.0",
                 "webpack-cli": "^4.10.0",
                 "webpack-dev-server": "^4.4.0",
-                "webpack-merge": "5.4.0"
+                "webpack-merge": "5.4.0",
+                "webpack-notifier": "^1.15.0"
             },
             "engines": {
                 "node": ">=12"
@@ -8293,6 +8294,12 @@
             "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==",
             "dev": true
         },
+        "node_modules/growly": {
+            "version": "1.3.0",
+            "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
+            "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==",
+            "dev": true
+        },
         "node_modules/handle-thing": {
             "version": "2.0.1",
             "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz",
@@ -10245,6 +10252,35 @@
                 "node": ">=0.10.0"
             }
         },
+        "node_modules/node-notifier": {
+            "version": "9.0.1",
+            "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-9.0.1.tgz",
+            "integrity": "sha512-fPNFIp2hF/Dq7qLDzSg4vZ0J4e9v60gJR+Qx7RbjbWqzPDdEqeVpEx5CFeDAELIl+A/woaaNn1fQ5nEVerMxJg==",
+            "dev": true,
+            "dependencies": {
+                "growly": "^1.3.0",
+                "is-wsl": "^2.2.0",
+                "semver": "^7.3.2",
+                "shellwords": "^0.1.1",
+                "uuid": "^8.3.0",
+                "which": "^2.0.2"
+            }
+        },
+        "node_modules/node-notifier/node_modules/semver": {
+            "version": "7.3.8",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+            "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+            "dev": true,
+            "dependencies": {
+                "lru-cache": "^6.0.0"
+            },
+            "bin": {
+                "semver": "bin/semver.js"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
         "node_modules/node-releases": {
             "version": "2.0.4",
             "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz",
@@ -13666,6 +13702,12 @@
                 "node": ">= 0.10"
             }
         },
+        "node_modules/shellwords": {
+            "version": "0.1.1",
+            "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
+            "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==",
+            "dev": true
+        },
         "node_modules/side-channel": {
             "version": "1.0.4",
             "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
@@ -15674,6 +15716,24 @@
                 "node": ">=10.0.0"
             }
         },
+        "node_modules/webpack-notifier": {
+            "version": "1.15.0",
+            "resolved": "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.15.0.tgz",
+            "integrity": "sha512-N2V8UMgRB5komdXQRavBsRpw0hPhJq2/SWNOGuhrXpIgRhcMexzkGQysUyGStHLV5hkUlgpRiF7IUXoBqyMmzQ==",
+            "dev": true,
+            "dependencies": {
+                "node-notifier": "^9.0.0",
+                "strip-ansi": "^6.0.0"
+            },
+            "peerDependencies": {
+                "@types/webpack": ">4.41.31"
+            },
+            "peerDependenciesMeta": {
+                "@types/webpack": {
+                    "optional": true
+                }
+            }
+        },
         "node_modules/webpack-sources": {
             "version": "1.4.3",
             "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
@@ -21953,6 +22013,12 @@
             "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==",
             "dev": true
         },
+        "growly": {
+            "version": "1.3.0",
+            "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
+            "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==",
+            "dev": true
+        },
         "handle-thing": {
             "version": "2.0.1",
             "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz",
@@ -23428,6 +23494,31 @@
             "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=",
             "dev": true
         },
+        "node-notifier": {
+            "version": "9.0.1",
+            "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-9.0.1.tgz",
+            "integrity": "sha512-fPNFIp2hF/Dq7qLDzSg4vZ0J4e9v60gJR+Qx7RbjbWqzPDdEqeVpEx5CFeDAELIl+A/woaaNn1fQ5nEVerMxJg==",
+            "dev": true,
+            "requires": {
+                "growly": "^1.3.0",
+                "is-wsl": "^2.2.0",
+                "semver": "^7.3.2",
+                "shellwords": "^0.1.1",
+                "uuid": "^8.3.0",
+                "which": "^2.0.2"
+            },
+            "dependencies": {
+                "semver": {
+                    "version": "7.3.8",
+                    "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+                    "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+                    "dev": true,
+                    "requires": {
+                        "lru-cache": "^6.0.0"
+                    }
+                }
+            }
+        },
         "node-releases": {
             "version": "2.0.4",
             "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz",
@@ -26052,6 +26143,12 @@
                 }
             }
         },
+        "shellwords": {
+            "version": "0.1.1",
+            "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
+            "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==",
+            "dev": true
+        },
         "side-channel": {
             "version": "1.0.4",
             "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
@@ -27624,6 +27721,16 @@
                 "wildcard": "^2.0.0"
             }
         },
+        "webpack-notifier": {
+            "version": "1.15.0",
+            "resolved": "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.15.0.tgz",
+            "integrity": "sha512-N2V8UMgRB5komdXQRavBsRpw0hPhJq2/SWNOGuhrXpIgRhcMexzkGQysUyGStHLV5hkUlgpRiF7IUXoBqyMmzQ==",
+            "dev": true,
+            "requires": {
+                "node-notifier": "^9.0.0",
+                "strip-ansi": "^6.0.0"
+            }
+        },
         "webpack-sources": {
             "version": "1.4.3",
             "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
diff --git a/package.json b/package.json
index d158f63f94f0d2e8f5458c2a2abc6fe5d63f4b46..1209b41f5594dc052ee0511f9421096550fe1a9d 100644
--- a/package.json
+++ b/package.json
@@ -134,7 +134,8 @@
         "webpack": "^5.70.0",
         "webpack-cli": "^4.10.0",
         "webpack-dev-server": "^4.4.0",
-        "webpack-merge": "5.4.0"
+        "webpack-merge": "5.4.0",
+        "webpack-notifier": "^1.15.0"
     },
     "babel": {
         "presets": [
diff --git a/webpack.dev.js b/webpack.dev.js
index a40119262c3aa12a9bafb8f491a49401e04bc26f..c0cee71c597ad4a0339f2a0cf83af1b7c25b5cc0 100644
--- a/webpack.dev.js
+++ b/webpack.dev.js
@@ -1,7 +1,26 @@
-const { merge } = require("webpack-merge");
-const common = require("./webpack.common.js");
+const { merge } = require('webpack-merge');
+const common = require('./webpack.common.js');
+const WebpackNotifierPlugin = require('webpack-notifier');
+const path = require('path');
+
+const statusesPaths = {
+    success: path.join(__dirname, 'public/assets/images/favicon-64x64.png'),
+    error: path.join(__dirname, 'public/assets/images/virtual.png'),
+};
 
 module.exports = merge(common, {
-  mode: "development",
-  devtool: "eval",
+    mode: 'development',
+    devtool: 'eval',
+    plugins: [
+        new WebpackNotifierPlugin({
+            appID: 'Stud.IP Webpack',
+            title: function (params) {
+                return `Build status is ${params.status}`;
+            },
+            timeout: false,
+            hint: process.platform === 'linux' ? 'int:transient:1' : undefined,
+            excludeWarnings: true,
+            contentImage: statusesPaths,
+        }),
+    ],
 });