diff --git a/.dockerignore b/.dockerignore
index dd95ffa6d0c49ec572120cb671576bfd27adac9f..071a70ad35b5bc30a6a77e1710384ac1905159d5 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -1,8 +1,9 @@
 Dockerfile
+.dockerignore
 .gitignore
+.git
+.gitmodules
 .gitlab-ci.yml
 README.md
 
-cc
-
 target
diff --git a/Cargo.lock b/Cargo.lock
index 0362cffa6f9babd52592cbf016fb4ff9defb8029..41b73b66f3387e880048352094e516dc97e52ed3 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -4,9 +4,9 @@ version = 3
 
 [[package]]
 name = "async-trait"
-version = "0.1.58"
+version = "0.1.59"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e805d94e6b5001b651426cf4cd446b1ab5f319d27bab5c644f61de0a804360c"
+checksum = "31e6e93155431f3931513b243d371981bb2770112b370c82745a1d19d2f99364"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -21,9 +21,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
 
 [[package]]
 name = "axum"
-version = "0.6.0"
+version = "0.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "744864363a200a5e724a7e61bc8c11b6628cf2e3ec519c8a1a48e609a8156b40"
+checksum = "08b108ad2665fa3f6e6a517c3d80ec3e77d224c47d605167aefaa5d7ef97fa48"
 dependencies = [
  "async-trait",
  "axum-core",
@@ -367,9 +367,9 @@ dependencies = [
 
 [[package]]
 name = "matchit"
-version = "0.6.0"
+version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3dfc802da7b1cf80aefffa0c7b2f77247c8b32206cc83c270b61264f5b360a80"
+checksum = "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40"
 
 [[package]]
 name = "memchr"
@@ -433,9 +433,9 @@ dependencies = [
 
 [[package]]
 name = "parking_lot_core"
-version = "0.9.4"
+version = "0.9.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0"
+checksum = "7ff9f3fef3968a3ec5945535ed654cb38ff72d7495a25619e2247fb15a2ed9ba"
 dependencies = [
  "cfg-if",
  "libc",
@@ -565,18 +565,18 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
 
 [[package]]
 name = "serde"
-version = "1.0.147"
+version = "1.0.148"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965"
+checksum = "e53f64bb4ba0191d6d0676e1b141ca55047d83b74f5607e6d8eb88126c52c2dc"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.147"
+version = "1.0.148"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852"
+checksum = "a55492425aa53521babf6137309e7d34c20bbfbbfcfe2c7f3a047fd1f6b92c0c"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -585,9 +585,9 @@ dependencies = [
 
 [[package]]
 name = "serde_json"
-version = "1.0.88"
+version = "1.0.89"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e8b3801309262e8184d9687fb697586833e939767aea0dda89f5a8e650e8bd7"
+checksum = "020ff22c755c2ed3f8cf162dbb41a7268d934702f3ed3631656ea597e08fc3db"
 dependencies = [
  "itoa",
  "ryu",
@@ -617,9 +617,9 @@ dependencies = [
 
 [[package]]
 name = "sha-1"
-version = "0.10.0"
+version = "0.10.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f"
+checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c"
 dependencies = [
  "cfg-if",
  "cpufeatures",
@@ -681,9 +681,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "1.0.103"
+version = "1.0.104"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d"
+checksum = "4ae548ec36cf198c0ef7710d3c230987c2d6d7bd98ad6edc0274462724c585ce"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -753,9 +753,9 @@ dependencies = [
 
 [[package]]
 name = "tokio-macros"
-version = "1.8.0"
+version = "1.8.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484"
+checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8"
 dependencies = [
  "proc-macro2",
  "quote",
diff --git a/Dockerfile b/Dockerfile
index 1a2a1d6b1af4026d1d267b3f2f1f776f1abd79ba..2bde94e3d077154f84bdf77a022c9aa49cdadac7 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,14 +1,38 @@
-FROM docker.io/library/rust:alpine as builder
+FROM docker.io/library/rust:alpine as builder-backend
+
 RUN apk add rust
 WORKDIR /usr/src/spoccify
-COPY . .
+COPY Cargo.toml Cargo.lock .
+COPY src src
 RUN cargo build --release
 
+
+FROM docker.io/library/node:alpine as builder-frontend
+WORKDIR /usr/src/spoccify
+COPY svelte-frontend/.npmrc svelte-frontend/package.json svelte-frontend/yarn.lock .
+RUN yarn install
+COPY svelte-frontend/svelte.config.js svelte-frontend/tsconfig.json svelte-frontend/vite.config.ts .
+COPY svelte-frontend/src src
+COPY svelte-frontend/static static 
+RUN yarn build
+
+
 FROM docker.io/library/alpine:latest
+
+ARG SPOCCIFY_HTTP_BIND_HOST 0.0.0.0
+ARG SPOCCIFY_HTTP_BIND_PORT 9000
+
+ARG SPOCCIFY_WEBSOCKET_BIND_HOST 0.0.0.0
+ARG SPOCCIFY_WEBSOCKET_BIND_PORT 9001
+
 RUN apk add ffmpeg yt-dlp
-RUN mkdir -p /usr/local/bin/tmp
-COPY --from=builder /usr/src/spoccify/target/release/spoccify /usr/local/bin/spoccify
+COPY --from=builder-backend /usr/src/spoccify/target/release/spoccify /spoccify/spoccify
+COPY --from=builder-frontend /usr/src/spoccify/build /spoccify/frontend
+RUN rm /spoccify/frontend/vite-manifest.json
+RUN mkdir -p /spoccify/tmp
 
-EXPOSE 80
+WORKDIR /spoccify
+EXPOSE 9000
+EXPOSE 9001
 
-CMD ["spoccify"]
+CMD ["./spoccify"]
diff --git a/svelte-frontend b/svelte-frontend
index b6f0a71eae42caf9a0ac6efbd82c54f06b403e60..9cdd746832ad7f83435d631a8e2ef7e5dd01cf9e 160000
--- a/svelte-frontend
+++ b/svelte-frontend
@@ -1 +1 @@
-Subproject commit b6f0a71eae42caf9a0ac6efbd82c54f06b403e60
+Subproject commit 9cdd746832ad7f83435d631a8e2ef7e5dd01cf9e