diff --git a/.gitattributes b/.gitattributes
index c4da00ac3546765f47afd9fef642ec87f2b1ad66..1e809562fb6808e07a24822e697bccab25f15680 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -17,5 +17,7 @@
 /apps/twofactor_backupcodes/js/*.js.map binary
 /apps/updatenotification/js/updatenotification.js binary
 /apps/updatenotification/js/updatenotification.js.map binary
+/apps/workflowengine/js/*.js binary
+/apps/workflowengine/js/*.js.map binary
 
 /settings/js/vue* binary
diff --git a/apps/workflowengine/.l10nignore b/apps/workflowengine/.l10nignore
new file mode 100644
index 0000000000000000000000000000000000000000..1062abf23d6f983ee95ce8146e8aa9b6ca92541f
--- /dev/null
+++ b/apps/workflowengine/.l10nignore
@@ -0,0 +1 @@
+js/checkPlugins.js
diff --git a/apps/workflowengine/js/templates.js b/apps/workflowengine/js/templates.js
deleted file mode 100644
index 157d396357d426fc1625335553735012205b2052..0000000000000000000000000000000000000000
Binary files a/apps/workflowengine/js/templates.js and /dev/null differ
diff --git a/apps/workflowengine/js/workflowengine.js b/apps/workflowengine/js/workflowengine.js
new file mode 100644
index 0000000000000000000000000000000000000000..139de55f7691daad537da26834998f213d30f45f
Binary files /dev/null and b/apps/workflowengine/js/workflowengine.js differ
diff --git a/apps/workflowengine/js/workflowengine.js.map b/apps/workflowengine/js/workflowengine.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..045713abf7ddbb7ca29793f07a5e5ac78ad2ba57
Binary files /dev/null and b/apps/workflowengine/js/workflowengine.js.map differ
diff --git a/apps/workflowengine/lib/AppInfo/Application.php b/apps/workflowengine/lib/AppInfo/Application.php
index 882ccad56384464159a28af701f83dd0572c5af9..3fee0c3bb8e31fc35efe5974afd107d58af7b0ff 100644
--- a/apps/workflowengine/lib/AppInfo/Application.php
+++ b/apps/workflowengine/lib/AppInfo/Application.php
@@ -60,19 +60,7 @@ class Application extends \OCP\AppFramework\App {
 				]);
 
 				script('workflowengine', [
-					'admin',
-					'templates',
-
-					// Check plugins
-					'filemimetypeplugin',
-					'filenameplugin',
-					'filesizeplugin',
-					'filesystemtagsplugin',
-					'requestremoteaddressplugin',
-					'requesttimeplugin',
-					'requesturlplugin',
-					'requestuseragentplugin',
-					'usergroupmembershipplugin',
+					'workflowengine',
 				]);
 			},
 			-100
diff --git a/apps/workflowengine/js/admin.js b/apps/workflowengine/src/admin.js
similarity index 98%
rename from apps/workflowengine/js/admin.js
rename to apps/workflowengine/src/admin.js
index d986c5a494a657eb489b123710ece13c7dc9efcb..f4635fe5b8c60a075cb91c838a97779d13b6bd6a 100644
Binary files a/apps/workflowengine/js/admin.js and b/apps/workflowengine/src/admin.js differ
diff --git a/apps/workflowengine/js/filemimetypeplugin.js b/apps/workflowengine/src/filemimetypeplugin.js
similarity index 100%
rename from apps/workflowengine/js/filemimetypeplugin.js
rename to apps/workflowengine/src/filemimetypeplugin.js
diff --git a/apps/workflowengine/js/filenameplugin.js b/apps/workflowengine/src/filenameplugin.js
similarity index 100%
rename from apps/workflowengine/js/filenameplugin.js
rename to apps/workflowengine/src/filenameplugin.js
diff --git a/apps/workflowengine/js/filesizeplugin.js b/apps/workflowengine/src/filesizeplugin.js
similarity index 100%
rename from apps/workflowengine/js/filesizeplugin.js
rename to apps/workflowengine/src/filesizeplugin.js
diff --git a/apps/workflowengine/js/filesystemtagsplugin.js b/apps/workflowengine/src/filesystemtagsplugin.js
similarity index 100%
rename from apps/workflowengine/js/filesystemtagsplugin.js
rename to apps/workflowengine/src/filesystemtagsplugin.js
diff --git a/apps/workflowengine/js/requestremoteaddressplugin.js b/apps/workflowengine/src/requestremoteaddressplugin.js
similarity index 100%
rename from apps/workflowengine/js/requestremoteaddressplugin.js
rename to apps/workflowengine/src/requestremoteaddressplugin.js
diff --git a/apps/workflowengine/js/requesttimeplugin.js b/apps/workflowengine/src/requesttimeplugin.js
similarity index 100%
rename from apps/workflowengine/js/requesttimeplugin.js
rename to apps/workflowengine/src/requesttimeplugin.js
diff --git a/apps/workflowengine/js/requesturlplugin.js b/apps/workflowengine/src/requesturlplugin.js
similarity index 100%
rename from apps/workflowengine/js/requesturlplugin.js
rename to apps/workflowengine/src/requesturlplugin.js
diff --git a/apps/workflowengine/js/requestuseragentplugin.js b/apps/workflowengine/src/requestuseragentplugin.js
similarity index 100%
rename from apps/workflowengine/js/requestuseragentplugin.js
rename to apps/workflowengine/src/requestuseragentplugin.js
diff --git a/apps/workflowengine/js/templates/operation.handlebars b/apps/workflowengine/src/templates/operation.handlebars
similarity index 100%
rename from apps/workflowengine/js/templates/operation.handlebars
rename to apps/workflowengine/src/templates/operation.handlebars
diff --git a/apps/workflowengine/js/templates/operations.handlebars b/apps/workflowengine/src/templates/operations.handlebars
similarity index 100%
rename from apps/workflowengine/js/templates/operations.handlebars
rename to apps/workflowengine/src/templates/operations.handlebars
diff --git a/apps/workflowengine/js/usergroupmembershipplugin.js b/apps/workflowengine/src/usergroupmembershipplugin.js
similarity index 100%
rename from apps/workflowengine/js/usergroupmembershipplugin.js
rename to apps/workflowengine/src/usergroupmembershipplugin.js
diff --git a/apps/workflowengine/src/workflowengine.js b/apps/workflowengine/src/workflowengine.js
new file mode 100644
index 0000000000000000000000000000000000000000..207d2311bccb5a9482ecde93ce1ed560ebd9a2df
--- /dev/null
+++ b/apps/workflowengine/src/workflowengine.js
@@ -0,0 +1,12 @@
+import './admin'
+import './filemimetypeplugin'
+import './filenameplugin'
+import './filesizeplugin'
+import './filesystemtagsplugin'
+import './requestremoteaddressplugin'
+import './requesttimeplugin'
+import './requesturlplugin'
+import './requestuseragentplugin'
+import './usergroupmembershipplugin'
+
+window.OCA.WorkflowEngine = OCA.WorkflowEngine
diff --git a/apps/workflowengine/webpack.js b/apps/workflowengine/webpack.js
new file mode 100644
index 0000000000000000000000000000000000000000..c85aef591d8113825d865ec2903b304f7c26a1e1
--- /dev/null
+++ b/apps/workflowengine/webpack.js
@@ -0,0 +1,41 @@
+const path = require('path');
+
+module.exports = {
+	entry: path.join(__dirname, 'src', 'workflowengine.js'),
+	output: {
+		path: path.resolve(__dirname, './js'),
+		publicPath: '/js/',
+		filename: 'workflowengine.js',
+	},
+	module: {
+		rules: [
+			{
+				test: /\.css$/,
+				use: ['style-loader', 'css-loader']
+			},
+			{
+				test: /\.scss$/,
+				use: ['style-loader', 'css-loader', 'sass-loader']
+			},
+			{
+				test: /\.js$/,
+				loader: 'babel-loader',
+				exclude: /node_modules/
+			},
+			{
+				test: /\.(png|jpg|gif|svg)$/,
+				loader: 'file-loader',
+				options: {
+					name: '[name].[ext]?[hash]'
+				}
+			},
+			{
+				test: /\.handlebars$/,
+				loader: "handlebars-loader"
+			}
+		]
+	},
+	resolve: {
+		extensions: ['*', '.js']
+	}
+};
diff --git a/build/compile-handlebars-templates.sh b/build/compile-handlebars-templates.sh
index 6bb6052e51fdf0fe4926a71a20d7c8f55defc4e4..9aecc405a78de77654728e88347a421a6da4091a 100755
--- a/build/compile-handlebars-templates.sh
+++ b/build/compile-handlebars-templates.sh
@@ -16,9 +16,6 @@ handlebars -n OC.Share.Templates core/js/share -f core/js/sharetemplates.js
 # Files app
 handlebars -n OCA.Files.Templates apps/files/js/templates -f apps/files/js/templates.js
 
-# Workflowengine
-handlebars -n OCA.WorkflowEngine.Templates apps/workflowengine/js/templates -f apps/workflowengine/js/templates.js
-
 # Sharing
 handlebars -n OCA.Sharing.Templates apps/files_sharing/js/templates -f apps/files_sharing/js/templates.js
 
diff --git a/webpack.common.js b/webpack.common.js
index 0fb8e72f7f33aa5f38e18a9967ad1892743569be..94398ebc4b8950729a53cee98650976c4f64d8bb 100644
--- a/webpack.common.js
+++ b/webpack.common.js
@@ -10,6 +10,7 @@ const oauth2 = require('./apps/oauth2/webpack')
 const systemtags = require('./apps/systemtags/webpack')
 const twofactor_backupscodes = require('./apps/twofactor_backupcodes/webpack')
 const updatenotifications = require('./apps/updatenotification/webpack')
+const workflowengine = require('./apps/workflowengine/webpack')
 
 module.exports = [].concat(
 	core,
@@ -22,5 +23,6 @@ module.exports = [].concat(
 	oauth2,
 	systemtags,
 	twofactor_backupscodes,
-	updatenotifications
+	updatenotifications,
+	workflowengine
 );