diff --git a/.gitignore b/.gitignore
index dae5fa1fb1b5bc3b24036ed09afed1fa9d56d1db..ee598cee1865a076167d28e6b87786d9f6af2e36 100644
--- a/.gitignore
+++ b/.gitignore
@@ -56,3 +56,4 @@ src-electron/handlebars/out/
 
 # Temporary place for generation
 tmp/
+spa/
diff --git a/Jenkinsfile b/Jenkinsfile
index 240b8bea199e79c4b758a2159676e75eb3c65a1d..981a5bea02093242d851bc0aa318c6043a5850c0 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -98,7 +98,7 @@ pipeline
             {
                 script 
                 {
-                    sh 'npm run electron-build'
+                    sh 'npm run pack'
                 }
             }
         }
@@ -118,14 +118,8 @@ pipeline
             {
                 script 
                 {
-                    sh 'cp -f apack.info.dist ./dist/electron/zap-linux-x64/apack.info'
-                    sh 'cp -f apack.info.dist ./dist/electron/zap-darwin-x64/apack.info'
-                    sh 'cp -f apack.info.dist ./dist/electron/zap-win32-x64/apack.info'
-                    zip archive: true, dir: './dist/electron/zap-linux-x64', glob: '', zipFile: 'zap-linux-x64.zip'
-                    zip archive: true, dir: './dist/electron/zap-darwin-x64', glob: '', zipFile: 'zap-darwin-x64.zip'
-                    zip archive: true, dir: './dist/electron/zap-win32-x64', glob: '', zipFile: 'zap-win32-x64.zip'
-                    //zip archive: true, dir: './dist/electron/zap-linux-ia32', glob: '', zipFile: 'zap-linux-ia32.zip'
-                    //zip archive: true, dir: './dist/electron/zap-win32-ia32', glob: '', zipFile: 'zap-win32-ia32.zip'
+                    sh 'cp -f apack.info.dist ./dist/linux-unpacked/apack.info'
+                    zip archive: true, dir: './dist/linux-unpacked', glob: '', zipFile: 'zap-linux-x64.zip'
                     archiveArtifacts artifacts:'generated-html/**', fingerprint: true
                 }
             }
diff --git a/package.json b/package.json
index ffe4abb800f12f89c2570c879848db237e553e43..22f12930f98d8415aa80f446dfd8edaf2660bab5 100644
--- a/package.json
+++ b/package.json
@@ -38,7 +38,7 @@
     "self-check": "electron src-electron/main-process/electron-main.js selfCheck",
     "gen": "node src-script/zap-generate.js -z ./test/zcl/zcl-test.properties -g ./test/gen-template/gen-templates.json -i ./test/resource/save-file-test-regen.zap -o ./tmp",
     "bin-linux": "./dist/electron/zap-linux-x64/zap --zcl ~/git/zap/test/zcl/zcl-test.properties --genTemplateJson ~/git/zap/test/gen-template/gen-templates.json",
-    "pack": "electron-builder --dir",
+    "pack": "quasar build && electron-builder --dir",
     "dist": "electron-builder",
     "linuxpack-ui": "./dist/linux-unpacked/zap --zclProperties test/zcl/zcl-test.properties --genTemplateJson test/gen-template/gen-templates.json",
     "linuxpack-check": "./dist/linux-unpacked/zap selfCheck --zclProperties test/zcl/zcl-test.properties --genTemplateJson test/gen-template/gen-templates.json",
diff --git a/quasar.conf.js b/quasar.conf.js
index 11bd1cd0cca6a17581c134a8669752b595ac7d87..40a3d8a54c1cf4b0d06857d088c83647a6783808 100644
--- a/quasar.conf.js
+++ b/quasar.conf.js
@@ -65,6 +65,7 @@ module.exports = function (ctx) {
       showProgress: true,
       gzip: false,
       analyze: false,
+      distDir: 'spa',
       // Options below are automatically set depending on the env, set them if you want to override
       // preloadChunks: false,
       // extractCSS: false,
diff --git a/src-electron/server/http-server.js b/src-electron/server/http-server.js
index 9d5930cd6046b4430ef025d0b52f9bad48b5bd63..bd2dbd85d3f3e0756722fdd1f53e68b1ca1378e2 100644
--- a/src-electron/server/http-server.js
+++ b/src-electron/server/http-server.js
@@ -26,8 +26,6 @@ const express = require('express')
 const session = require('express-session')
 const env = require('../util/env.js')
 const querySession = require('../db/query-session.js')
-const queryPackage = require('../db/query-package.js')
-const dbEnum = require('../db/db-enum.js')
 const admin = require('../rest/admin.js')
 const generation = require('../rest/generation.js')
 const staticZcl = require('../rest/static-zcl.js')
diff --git a/src-electron/util/env.js b/src-electron/util/env.js
index fe4afdcdd431b306cdf83f29a9b2768b5fbd1913..b0b09e979cc38ff558506ff39e8bc35f30f54187 100644
--- a/src-electron/util/env.js
+++ b/src-electron/util/env.js
@@ -46,11 +46,11 @@ var pino_logger = pino({
 
 var explicit_logger_set = false
 var dbInstance
-var httpStaticContent = path.join(__dirname, '../../dist/spa')
+var httpStaticContent = path.join(__dirname, '../../spa')
 
 function setDevelopmentEnv() {
   global.__statics = path.join('src', 'statics').replace(/\\/g, '\\\\')
-  httpStaticContent = path.join(__dirname, '../../dist/spa')
+  httpStaticContent = path.join(__dirname, '../../spa')
 }
 
 function setProductionEnv() {
diff --git a/src-script/zap-start.js b/src-script/zap-start.js
index f8db24e4980502168aca7a082442fc34047e209a..e8d17eae0284ba6b246b39127caa019e3430904b 100644
--- a/src-script/zap-start.js
+++ b/src-script/zap-start.js
@@ -18,7 +18,7 @@
 const { spawn } = require('cross-spawn')
 const { hashElement } = require('folder-hash')
 const hashOptions = {}
-const spaDir = 'dist/spa'
+const spaDir = 'spa'
 const fs = require('fs')
 const path = require('path')
 const scriptUtil = require('./script-util.js')