diff --git a/build.sh b/build.sh
index 257f80ddefaa7be49fa9121bfc69f494e9ea76e0..8fbb42eb0a580b0bbe412d9b391fed074e8c6edf 100755
--- a/build.sh
+++ b/build.sh
@@ -11,28 +11,84 @@ BUILD_VIPRA_UI=1
 BUILD_VIPRA_BACKEND=1
 
 # set to 1 to deploy backend after build completed
-DEPLOY_AFTER_BUILD=1
+DEPLOY_BACKEND_AFTER_BUILD=1
 # copy backend to docker
-DEPLOY_TO_DOCKER=1
+DEPLOY_BACKEND_TO_DOCKER=1
 # copy backend to vagrant
-DEPLOY_TO_VAGRANT=0
+DEPLOY_BACKEND_TO_VAGRANT=0
 # copy exploded WAR instead of *.war file
-DEPLOY_EXPLODED_WAR=1
+DEPLOY_BACKEND_EXPLODED_WAR=1
 # copy to ROOT, overwrite context path
-DEPLOY_TO_ROOT=1
+DEPLOY_BACKEND_TO_ROOT=1
+
+# set to 1 to deploy frontend after build completed
+DEPLOY_FRONTEND_AFTER_BUILD=1
+# copy frontend to docker
+DEPLOY_FRONTEND_TO_DOCKER=1
+# copy frontend to vagrant
+DEPLOY_FRONTEND_TO_VAGRANT=0
 
 #######################################################################################
 
-PROJECT="vipra"
-WAR_FILE="$PROJECT.war"
 DIR="$(dirname "$(readlink -f "$0")")"
-DOCKER_PATH="$DIR/docker/webapps"
-VAGRANT_PATH="$DIR/vm/webapps"
+
+WAR_FILE="vipra.war"
+VIPRA_BACKEND="$DIR/vipra-backend"
+VIPRA_CMD="$DIR/vipra-cmd"
+VIPRA_UI="$DIR/vipra-ui"
+VIPRA_UTIL="$DIR/vipra-util"
+DOCKER_WEBAPPS="$DIR/docker/webapps"
+VAGRANT_WEBAPPS="$DIR/vm/webapps"
+DOCKER_WEBROOT="$DIR/docker/webroot"
+VAGRANT_WEBROOT="$DIR/vm/webroot"
 WAR_PATH="$DIR/vipra-backend/target/$WAR_FILE"
 EXPLODED_WAR_PATH="$DIR/vipra-backend/target/vipra"
+UI_PATH="$DIR/vipra-ui/public"
 LOG="$DIR/build.log"
 rm -f $LOG
 
+if [ $# -gt 0 ]; then
+        BUILD_DTM=0
+        BUILD_VIPRA_UTIL=0
+        BUILD_VIPRA_CMD=0
+        BUILD_VIPRA_UI=0
+        BUILD_VIPRA_BACKEND=0
+
+        while test $# -gt 0
+        do
+                case "$1" in
+                        dtm) BUILD_DTM=1
+                        ;;
+                        util) BUILD_VIPRA_UTIL=1
+                        ;;
+                        cmd) BUILD_VIPRA_CMD=1
+                        ;;
+                        ui) BUILD_VIPRA_UI=1
+                        ;;
+                        backend) BUILD_VIPRA_BACKEND=1
+                        ;;
+                        clean) CLEAN=1
+                        ;;
+                esac
+                shift
+        done
+fi
+
+if [ $CLEAN -eq 1 ]; then
+        rm -rf $VIPRA_BACKEND/target
+        rm -rf $VIPRA_CMD/target
+        rm -rf $VIPRA_UI/public
+        rm -rf $VIPRA_UTIL/target
+        rm -rf $DOCKER_WEBAPPS/*
+        rm -rf $DOCKER_WEBROOT/*
+        rm -rf $VAGRANT_WEBAPPS/*
+        rm -rf $VAGRANT_WEBROOT/*
+        touch $DOCKER_WEBAPPS/.gitkeep
+        touch $DOCKER_WEBROOT/.gitkeep
+        touch $VAGRANT_WEBAPPS/.gitkeep
+        touch $VAGRANT_WEBROOT/.gitkeep
+fi
+
 # check commands
 
 if [ $BUILD_DTM -eq 1 ]; then
@@ -51,45 +107,24 @@ if [ $BUILD_VIPRA_UI -eq 1 ]; then
         GULP=$(command -v gulp 2>/dev/null) || { echo >&2 "gulp not found"; exit 1; }
 fi
 
-# functions
-
-function deploy {
-        cd $1
-        rm -rf ROOT ROOT.war $PROJECT $WAR_FILE
-        cp -r $2 $3
-        echo "-------------------------------" >> $LOG
-        echo "deploying vipra-backend ($3)" | tee -a $LOG
-        echo "-------------------------------" >> $LOG
-}
-
 # build dtm
 
-echo "" >> $LOG
-echo "-------------------------------" >> $LOG
-if [ $BUILD_DTM -ne 1 ]; then
-        echo "compiling dtm > skipped" | tee -a $LOG
-else
+if [ $BUILD_DTM -eq 1 ]; then
         echo "compiling dtm" | tee -a $LOG
-        echo "-------------------------------" >> $LOG
-        cd dtm_release/dtm
+        cd $DIR/dtm_release/dtm
         make >> $LOG 2>&1
         if [ $? -ne 0 ]; then
                 echo "error"
                 exit 1
         fi
-        cd ../..
+        cd $DIR
 fi
 
 # build vipra-util
 
-echo "" >> $LOG
-echo "-------------------------------" >> $LOG
-if [ $BUILD_VIPRA_UTIL -ne 1 ]; then
-        echo "compiling vipra-util > skipped" | tee -a $LOG
-else
+if [ $BUILD_VIPRA_UTIL -eq 1 ]; then
         echo "compiling vipra-util" | tee -a $LOG
-        echo "-------------------------------" >> $LOG
-        $MVN -f ./vipra-util/pom.xml install >> $LOG 2>&1
+        $MVN -f $DIR/vipra-util/pom.xml install >> $LOG 2>&1
         if [ $? -ne 0 ]; then
         	echo "error"
         	exit 1
@@ -98,14 +133,9 @@ fi
 
 # build vipra-cmd
 
-echo "" >> $LOG
-echo "-------------------------------" >> $LOG
-if [ $BUILD_VIPRA_CMD -ne 1 ]; then
-        echo "compiling vipra-cmd > skipped" | tee -a $LOG
-else
+if [ $BUILD_VIPRA_CMD -eq 1 ]; then
         echo "compiling vipra-cmd" | tee -a $LOG
-        echo "-------------------------------" >> $LOG
-        $MVN -f ./vipra-cmd/pom.xml package >> $LOG 2>&1
+        $MVN -f $DIR/vipra-cmd/pom.xml package >> $LOG 2>&1
         if [ $? -ne 0 ]; then
                 echo "error"
                 exit 1
@@ -114,33 +144,37 @@ fi
 
 # build vipra-ui
 
-echo "" >> $LOG
-echo "-------------------------------" >> $LOG
-if [ $BUILD_VIPRA_UI -ne 1 ]; then
-        echo "compiling vipra-ui > skipped" | tee -a $LOG
-else
+if [ $BUILD_VIPRA_UI -eq 1 ]; then
         echo "compiling vipra-ui" | tee -a $LOG
-        echo "-------------------------------" >> $LOG
-        cd ./vipra-ui
+        cd $DIR/vipra-ui
         ./build.sh >> $LOG 2>&1
         if [ $? -ne 0 ]; then
                 echo "error"
                 exit 1
         fi
-        cd ..
+        cd $DIR
+
+        SRC=$UI_PATH/*
+
+        if [ $DEPLOY_FRONTEND_TO_DOCKER -eq 1 ]; then
+                rm -rf $DOCKER_WEBROOT/*
+                cp -r $SRC $DOCKER_WEBROOT
+                touch $DOCKER_WEBROOT/.gitkeep
+        fi
+
+        if [ $DEPLOY_FRONTEND_TO_VAGRANT -eq 1 ]; then
+                rm -rf $VAGRANT_WEBROOT/*
+                cp -r $SRC $VAGRANT_WEBROOT
+                touch $VAGRANT_WEBROOT/.gitkeep
+        fi
 fi
 
 # build vipra-backend
 
-echo "" >> $LOG
-echo "-------------------------------" >> $LOG
-if [ $BUILD_VIPRA_BACKEND -ne 1 ]; then
-        echo "compiling vipra-backend > skipped" | tee -a $LOG
-else
+if [ $BUILD_VIPRA_BACKEND -eq 1 ]; then
         echo "compiling vipra-backend" | tee -a $LOG
-        echo "-------------------------------" >> $LOG
-        $MVN -f ./vipra-backend/pom.xml package >> $LOG 2>&1
-        $MVN -f ./vipra-backend/pom.xml compile war:exploded >> $LOG 2>&1
+        $MVN -f $DIR/vipra-backend/pom.xml package >> $LOG 2>&1
+        $MVN -f $DIR/vipra-backend/pom.xml compile war:exploded >> $LOG 2>&1
         if [ $? -ne 0 ]; then
                 echo "error"
                 exit 1
@@ -148,23 +182,29 @@ else
 
         SRC=$WAR_PATH
         TARGET=$WAR_FILE
-        if [ $DEPLOY_TO_ROOT -eq 1 ]; then
+        
+        if [ $DEPLOY_BACKEND_TO_ROOT -eq 1 ]; then
                 TARGET="ROOT.war"
         fi
-        if [ $DEPLOY_EXPLODED_WAR -eq 1 ]; then
+
+        if [ $DEPLOY_BACKEND_EXPLODED_WAR -eq 1 ]; then
                 SRC=$EXPLODED_WAR_PATH
-                TARGET=$PROJECT
-                if [ $DEPLOY_TO_ROOT -eq 1 ]; then
+                TARGET="vipra"
+                if [ $DEPLOY_BACKEND_TO_ROOT -eq 1 ]; then
                         TARGET="ROOT"
                 fi
         fi
 
-        if [ $DEPLOY_TO_DOCKER -eq 1 ]; then
-                deploy $DOCKER_PATH $SRC $TARGET
+        if [ $DEPLOY_BACKEND_TO_DOCKER -eq 1 ]; then
+                rm -rf $DOCKER_WEBAPPS/*
+                cp -r $SRC $DOCKER_WEBAPPS/$TARGET
+                touch $DOCKER_WEBAPPS/.gitkeep
         fi
 
-        if [ $DEPLOY_TO_VAGRANT -eq 1 ]; then
-                deploy $VAGRANT_PATH $SRC $TARGET
+        if [ $DEPLOY_BACKEND_TO_VAGRANT -eq 1 ]; then
+                rm -rf $VAGRANT_WEBAPPS/*
+                cp -r $SRC $VAGRANT_WEBAPPS/$TARGET
+                touch $VAGRANT_WEBAPPS/.gitkeep
         fi
 fi
 
diff --git a/docker/.gitignore b/docker/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..faf8905d2e986260ba67e95b737803c9d97c5524
--- /dev/null
+++ b/docker/.gitignore
@@ -0,0 +1,2 @@
+webapps/*
+webroot/*
\ No newline at end of file
diff --git a/vipra-ui/app/js/config.js b/vipra-ui/app/js/config.js
index e3005dd5c29e24be9890a689abbd6d6d3086339c..48b98bbf5cb5c8cf46f4097b2e55f3ed9490926a 100644
--- a/vipra-ui/app/js/config.js
+++ b/vipra-ui/app/js/config.js
@@ -19,7 +19,7 @@
 	   *                      ^^^^^ 
 	   *                      this is the restUrl
 	   */
-    restUrl: '//' + location.hostname + ':8080/rest'
+    restUrl: '/rest'
   };
 
 })();
\ No newline at end of file
diff --git a/vm/.gitignore b/vm/.gitignore
index adbb97d2d3137fe76f2d8e88a55e1c2b285a6cd6..dba9e7ff8f64e7235cb62cb93d3fdc9598dcf385 100644
--- a/vm/.gitignore
+++ b/vm/.gitignore
@@ -1 +1,3 @@
-data/
\ No newline at end of file
+data/
+webapps/*
+webroot/*
\ No newline at end of file
diff --git a/vm/webroot/.gitkeep b/vm/webroot/.gitkeep
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391