Repository: nerfstudio-project/nerfstudio
Pull request: Viewer refactor with state sync
- [x] react code is written functionally w/o component classes
- [x] store state in reactjs with [redux](https://redux.js.org/)
- [x] add ESLint for static code analysis
- [x] removed three.js from Python code and moved it to javascript
- [x] `write`, `read`, and `delete` functions for keeping state synchronized
- [x] notebook with documentation for how to use the viewer (will be cleaned up more and put into a new location)

Problem statement:
Add all visualizer code to github actions (linting)


Report when viewer isn't connected to server
The server should send consistent pings to the client. When the sever gets disconnected, the viewer should transfer to a "disconnected" state.

Remove threejs logic from server
The threejs logic should exist exclusively in the viewer. We should remove the python -> json logic from the server.

Hints from issue discussion:
I'll add this.

Commit message: remove package.json from root

Patch to review:
diff --git a/.github/workflows/viewer_client_app.yml b/.github/workflows/viewer_client_app.yml
index 49d096997d..10b8896763 100644
--- a/.github/workflows/viewer_client_app.yml
+++ b/.github/workflows/viewer_client_app.yml
@@ -18,7 +18,7 @@ jobs:
         uses: actions/checkout@master
 
       - name: Install Node.js
-        uses: actions/setup-node@v1
+        uses: actions/setup-node@v3
         with:
           node-version: 17.8.0
 
@@ -54,4 +54,4 @@ jobs:
         uses: peaceiris/actions-gh-pages@v3
         with:
           github_token: ${{ secrets.GITHUB_TOKEN }}
-          publish_dir: ./nerfactory/viewer/app/build
+          publish_dir: ./nerfactory/viewer/app/build
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 76b54487ce..afd28f97a6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -121,6 +121,7 @@ celerybeat.pid
 
 # Environments
 .env
+.envrc
 .venv
 env/
 venv/
diff --git a/.prettierrc.js b/.prettierrc.js
new file mode 100644
index 0000000000..3b519289bb
--- /dev/null
+++ b/.prettierrc.js
@@ -0,0 +1,6 @@
+module.exports = {
+    trailingComma: 'all',
+    arrowParens: 'always',
+    singleQuote: true,
+    jsxSingleQuote: false,
+  };
\ No newline at end of file
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 9621807317..953a075dfc 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -4,6 +4,13 @@
   // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
   "version": "0.2.0",
   "configurations": [
+    {
+      "name": "Launch Chrome against localhost",
+      "request": "launch",
+      "type": "chrome",
+      "url": "http://localhost:4000",
+      "webRoot": "${workspaceFolder}/nerfactory/viewer/app"
+    },
     {
       "name": "Python: Current File",
       "type": "python",
@@ -25,7 +32,9 @@
       "request": "launch",
       "program": "scripts/run_train.py",
       "console": "integratedTerminal",
-      "args": ["machine.num_gpus=0"]
+      "args": [
+        "machine.num_gpus=0"
+      ]
     },
     {
       "name": "Python: run_train ngp (gpu)",
@@ -33,7 +42,9 @@
       "request": "launch",
       "program": "scripts/run_train.py",
       "console": "integratedTerminal",
-      "args": ["--config-name=graph_instant_ngp.yaml"]
+      "args": [
+        "--config-name=graph_instant_ngp.yaml"
+      ]
     },
     {
       "name": "Python: run_train mipnerf 360 (gpu)",
@@ -41,7 +52,9 @@
       "request": "launch",
       "program": "scripts/run_train.py",
       "console": "integratedTerminal",
-      "args": ["--config-name=graph_mipnerf_360.yaml"]
+      "args": [
+        "--config-name=graph_mipnerf_360.yaml"
+      ]
     },
     {
       "name": "Python: run_train nerfw (gpu)",
@@ -66,4 +79,4 @@
       ]
     }
   ]
-}
+}
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 6a295ac34a..1465561a40 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -8,6 +8,21 @@
     "**/temp*": true
   },
   "editor.defaultFormatter": "esbenp.prettier-vscode",
+  "[javascript]": {
+    "editor.defaultFormatter": "esbenp.prettier-vscode"
+  },
+  "[javascriptreact]": {
+    "editor.defaultFormatter": "esbenp.prettier-vscode"
+  },
+  "[typescript]": {
+    "editor.defaultFormatter": "esbenp.prettier-vscode"
+  },
+  "[typescriptreact]": {
+    "editor.defaultFormatter": "esbenp.prettier-vscode"
+  },
+  "prettier.configPath": ".prettierrc.js",
+  "typescript.suggestionActions.enabled": false,
+  "javascript.suggestionActions.enabled": false,
   "[python]": {
     "editor.defaultFormatter": "ms-python.python",
     "editor.codeActionsOnSave": {
@@ -17,11 +32,15 @@
   "editor.formatOnSave": true,
   "python.envFile": "${workspaceFolder}/.env",
   "python.formatting.provider": "black",
-  "python.formatting.blackArgs": ["--line-length=120"],
+  "python.formatting.blackArgs": [
+    "--line-length=120"
+  ],
   "python.linting.pylintEnabled": true,
   "python.linting.flake8Enabled": false,
   "python.linting.enabled": true,
-  "python.sortImports.args": ["--src=${workspaceFolder}", "--profile", "black"],
+  "python.sortImports.args": [
+    "--src=${workspaceFolder}"
+  ],
   "python.testing.unittestEnabled": false,
   "python.testing.pytestEnabled": true,
   "python.linting.ignorePatterns": [
@@ -29,6 +48,16 @@
     ".vscode/*.py",
     "external/**/*.py"
   ],
+  "esbonio.sphinx.confDir": "",
+  // eslint extension options
+  "javascript.validate.enable": false,
+  "eslint.enable": true,
+  "eslint.validate": [
+    "javascript",
+    "javascriptreact",
+    "typescript",
+    "typescriptreact"
+  ],
   "C_Cpp.errorSquiggles": "Disabled",
   "files.associations": {
     "array": "cpp",
@@ -96,4 +125,4 @@
     "__node_handle": "cpp"
   },
   "python.analysis.typeCheckingMode": "basic"
-}
+}
\ No newline at end of file
diff --git a/nerfactory/cameras/cameras.py b/nerfactory/cameras/cameras.py
index 10e0b9a253..d46e3ba784 100644
--- a/nerfactory/cameras/cameras.py
+++ b/nerfactory/cameras/cameras.py
@@ -17,14 +17,16 @@
 """
 import base64
 from abc import abstractmethod
-from typing import Dict, Optional, Type
+from typing import Dict, Optional, Tuple, Type
 
 import cv2
+import numpy as np
 import torch
 from torch.nn.functional import normalize
 from torchtyping import TensorType
 
 from nerfactory.cameras.rays import RayBundle
+from nerfactory.utils.misc import is_not_none
 
 
 class Camera:
@@ -161,11 +163,15 @@ def get_camera_ray_bundle(self, device=None) -> RayBundle:
         return ray_bundle
 
     @abstractmethod
-    def to_json(self, image: Optional[TensorType["image_height", "image_width", 2]] = None) -> Dict:
+    def to_json(
+        self,
+        image: Optional[TensorType["image_height", "image_width", 2]] = None,
+        resize_shape: Optional[Tuple[int, int]] = None,
+    ) -> Dict:
         """Converts the camera to a json dictionary.
 
         Args:
-            image: An image that is encoded to a base64 string. Defaults to None.
+            image: An image in range [0, 1] that is encoded to a base64 string. Defaults to None.
 
         Returns:
             A JSON representation of the camera
@@ -295,7 +301,11 @@ def generate_rays(
 
         return RayBundle(origins=origins, directions=directions, pixel_area=pixel_area[..., None])
 
-    def to_json(self, image: Optional[TensorType["image_height", "image_width", 2]] = None) -> Dict:
+    def to_json(
+        self,
+        image: Optional[TensorType["image_height", "image_width", 2]] = None,
+        resize_shape: Optional[Tuple[int, int]] = None,
+    ) -> Dict:
         json_ = {
             "type": "PinholeCamera",
             "cx": self.cx,
@@ -305,10 +315,11 @@ def to_json(self, image: Optional[TensorType["image_height", "image_width", 2]]
             "camera_to_world": self.camera_to_world.tolist(),
             "camera_index": self.camera_index,
         }
-        if image:
-            # move image to cpu if not already
-            # TODO: move to numpy
-            data = cv2.imencode(".png", image[:, :, ::-1])[1].tobytes()
+        if is_not_none(image):
+            image_uint8 = (image * 255).detach().cpu().numpy().astype(np.uint8)
+            if resize_shape:
+                image_uint8 = cv2.resize(image_uint8, resize_shape)
+            data = cv2.imencode(".png", image_uint8)[1].tobytes()
             json_["image"] = str("data:image/png;base64," + base64.b64encode(data).decode("ascii"))
         return json_
 
@@ -346,9 +357,6 @@ def fx_index(cls):
     def fy_index(cls):
         return 2
 
-    def to_json(self, image: Optional[TensorType["image_height", "image_width", 2]] = None) -> Dict:
-        raise NotImplementedError
-
     @staticmethod
     def from_json(json_: Dict) -> "SimplePinholeCamera":  # pylint:disable=no-self-use
         raise NotImplementedError
@@ -441,7 +449,11 @@ def generate_rays(
         pixel_area = dx * dy
         return RayBundle(origins=origins, directions=directions, pixel_area=pixel_area[..., None])
 
-    def to_json(self, image: Optional[TensorType["image_height", "image_width", 2]] = None) -> Dict:
+    def to_json(
+        self,
+        image: Optional[TensorType["image_height", "image_width", 2]] = None,
+        resize_shape: Optional[Tuple[int, int]] = None,
+    ) -> Dict:
         raise NotImplementedError
 
     @staticmethod
diff --git a/nerfactory/data/image_dataset.py b/nerfactory/data/image_dataset.py
index da27922298..deb511fb71 100644
--- a/nerfactory/data/image_dataset.py
+++ b/nerfactory/data/image_dataset.py
@@ -87,7 +87,7 @@ def get_numpy_image(self, image_idx: int) -> npt.NDArray[np.uint8]:
         assert image.shape[2] in [3, 4], f"Image shape of {image.shape} is in correct."
         return image
 
-    def get_image(self, image_idx: int):
+    def get_image(self, image_idx: int) -> TensorType["image_height", "image_width", "num_channels"]:
         """Returns a 3 channel image."""
         image = torch.from_numpy(self.get_numpy_image(image_idx).astype("float32") / 255.0)
         if self.alpha_color is not None and image.shape[-1] == 4:
diff --git a/nerfactory/graphs/base.py b/nerfactory/graphs/base.py
index 955fd8e3fa..afa73f46bc 100644
--- a/nerfactory/graphs/base.py
+++ b/nerfactory/graphs/base.py
@@ -106,9 +106,6 @@ def __init__(
         self.populate_fields()
         self.populate_misc_modules()  # populate the modules
         self.callbacks = None
-        # variable for visualizer to fetch TODO(figure out if there is cleaner way to do this)
-        self.vis_outputs = None
-        self.default_output_name = None
 
     def get_training_callbacks(self) -> List[Callback]:  # pylint:disable=no-self-use
         """Returns a list of callbacks that run functions at the specified training iterations."""
diff --git a/nerfactory/viewer/app/.env.development b/nerfactory/viewer/app/.env.development
index fd2617ea92..358cb9e29d 100644
--- a/nerfactory/viewer/app/.env.development
+++ b/nerfactory/viewer/app/.env.development
@@ -1,4 +1,5 @@
 BROWSER=none
 FAST_REFRESH=false
 HOST=localhost
-PORT=4000
\ No newline at end of file
+PORT=4000
+ESLINT_NO_DEV_ERRORS=true
\ No newline at end of file
diff --git a/nerfactory/viewer/app/.eslintrc.json b/nerfactory/viewer/app/.eslintrc.json
new file mode 100644
index 0000000000..8c21d1348c
--- /dev/null
+++ b/nerfactory/viewer/app/.eslintrc.json
@@ -0,0 +1,33 @@
+{
+    "env": {
+        "browser": true,
+        "es2021": true
+    },
+    "extends": [
+        "eslint:recommended",
+        "plugin:react/recommended",
+        "airbnb",
+        "prettier"
+    ],
+    "parser": "@typescript-eslint/parser",
+    "parserOptions": {
+        "ecmaFeatures": {
+            "jsx": true
+        },
+        "ecmaVersion": "latest",
+        "sourceType": "module"
+    },
+    "plugins": [
+        "react",
+        "@typescript-eslint"
+    ],
+    "rules": {
+        "arrow-body-style": "off",
+        "camelcase": "off",
+        "import/prefer-default-export": "off",
+        "no-alert": "off",
+        "no-console": "off",
+        "prefer-destructuring": "off",
+        "react/destructuring-assignment": "off"
+    }
+}
\ No newline at end of file
diff --git a/nerfactory/viewer/app/package.json b/nerfactory/viewer/app/package.json
index ad5827f0a1..8b8a0c6453 100644
--- a/nerfactory/viewer/app/package.json
+++ b/nerfactory/viewer/app/package.json
@@ -4,28 +4,37 @@
   "version": "0.0.0",
   "private": true,
   "dependencies": {
+    "@reduxjs/toolkit": "^1.8.3",
     "@testing-library/jest-dom": "^5.16.4",
     "@testing-library/react": "^13.3.0",
     "@testing-library/user-event": "^14.2.0",
     "ccapture.js": "github:aceslowman/ccapture.js#npm-fix",
+    "classnames": "^2.3.1",
     "dat.gui": "^0.7.9",
+    "eslint-config-prettier": "^8.5.0",
     "leva": "^0.9.29",
     "msgpack-lite": "^0.1.26",
+    "prop-types": "^15.8.1",
     "react": "^18.1.0",
     "react-dom": "^18.1.0",
-    "react-scripts": "^5.0.1",
+    "react-redux": "^8.0.2",
+    "redux": "^4.2.0",
     "socket.io-client": "^4.5.1",
     "three": "^0.142.0",
     "three-wtm": "^1.0",
     "websocket": "^1.0.34",
-    "wwobjloader2": "^4.0"
+    "wwobjloader2": "^4.0",
+    "electron": "^19.0.4",
+    "electron-is-dev": "^2.0.0"
   },
   "scripts": {
     "start": "react-scripts start",
     "build": "react-scripts build",
     "test": "react-scripts test",
     "eject": "react-scripts eject",
-    "electron": "electron ."
+    "electron": "electron .",
+    "lint": "eslint --ext .js,.jsx .",
+    "lint:fix": "eslint --fix --ext .js,.jsx ."
   },
   "eslintConfig": {
     "extends": "react-app"
@@ -47,10 +56,19 @@
   "license": "ISC",
   "description": "",
   "devDependencies": {
+    "@svgr/webpack": "^6.2.1",
     "concurrently": "^7.2.1",
-    "electron": "^19.0.4",
-    "electron-is-dev": "^2.0.0",
+    "eslint": "^8.2.0",
+    "eslint-config-airbnb": "19.0.4",
+    "eslint-plugin-import": "^2.25.3",
+    "eslint-plugin-jsx-a11y": "^6.5.1",
+    "eslint-plugin-react": "^7.28.0",
+    "eslint-plugin-react-hooks": "^4.3.0",
+    "react-scripts": "^5.0.1",
     "typescript": "^4.7.3",
     "wait-on": "^6.0.1"
+  },
+  "resolutions": {
+    "@svgr/webpack": "$@svgr/webpack"
   }
 }
diff --git a/nerfactory/viewer/app/public/favicon.ico b/nerfactory/viewer/app/public/favicon.ico
deleted file mode 100644
index bcd5dfd67c..0000000000
Binary files a/nerfactory/viewer/app/public/favicon.ico and /dev/null differ
diff --git a/nerfactory/viewer/app/public/favicon.png b/nerfactory/viewer/app/public/favicon.png
new file mode 100644
index 0000000000..9b8ec361af
Binary files /dev/null and b/nerfactory/viewer/app/public/favicon.png differ
diff --git a/nerfactory/viewer/app/public/index.html b/nerfactory/viewer/app/public/index.html
index 9c12b199a4..7210430e6c 100644
--- a/nerfactory/viewer/app/public/index.html
+++ b/nerfactory/viewer/app/public/index.html
@@ -2,7 +2,7 @@
 <html lang="en">
   <head>
     <meta charset="utf-8" />
-    <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
+    <link rel="icon" href="%PUBLIC_URL%/favicon.png" />
     <meta name="viewport" content="width=device-width, initial-scale=1" />
     <meta name="theme-color" content="#000000" />
     <meta
@@ -24,7 +24,7 @@
       work correctly both with client-side routing and a non-root public URL.
       Learn how to configure a non-root public URL by running `npm run build`.
     -->
-    <title>nerfactory Viewer</title>
+    <title>Nerfactory Viewer</title>
   </head>
 
   <body>
diff --git a/nerfactory/viewer/app/src/App.css b/nerfactory/viewer/app/src/App.css
new file mode 100644
index 0000000000..ec2585e8c0
--- /dev/null
+++ b/nerfactory/viewer/app/src/App.css
@@ -0,0 +1,13 @@
+body {
+  margin: 0;
+  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
+    'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
+    sans-serif;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+code {
+  font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
+    monospace;
+}
diff --git a/nerfactory/viewer/app/src/App.jsx b/nerfactory/viewer/app/src/App.jsx
new file mode 100644
index 0000000000..7547830a65
--- /dev/null
+++ b/nerfactory/viewer/app/src/App.jsx
@@ -0,0 +1,20 @@
+import './App.css';
+
+import React from 'react';
+import {
+  RenderControls
+} from './modules/ConfigPanel/ConfigPanel';
+
+import SetupScene from './modules/Scene/Scene';
+import ViewerWindow from './modules/ViewerWindow/ViewerWindow';
+
+export default function App() {
+  const scene = SetupScene();
+
+  return (
+    <div className="App">
+      <RenderControls />
+      <ViewerWindow scene={scene} />
+    </div>
+  );
+}
diff --git a/nerfactory/viewer/app/src/ExtensibleObjectLoader.js b/nerfactory/viewer/app/src/ExtensibleObjectLoader.js
deleted file mode 100644
index 01346a4522..0000000000
--- a/nerfactory/viewer/app/src/ExtensibleObjectLoader.js
+++ /dev/null
@@ -1,282 +0,0 @@
-import * as THREE from "three";
-import { OBJLoader } from "three/examples/jsm/loaders/OBJLoader.js";
-import { ColladaLoader } from "three/examples/jsm/loaders/ColladaLoader.js";
-import { MTLLoader } from "three/examples/jsm/loaders/MTLLoader.js";
-import { MtlObjBridge } from "wwobjloader2";
-import { STLLoader } from "three/examples/jsm/loaders/STLLoader.js";
-import { PLYLoader } from "three/examples/jsm/loaders/PLYLoader.js";
-import * as BufferGeometryUtils from "three/examples/jsm/utils/BufferGeometryUtils.js";
-
-// Merges a hierarchy of collada mesh geometries into a single
-// `BufferGeometry` object:
-//   * A new merged `BufferGeometry` if the input contains meshes
-//   * empty `BufferGeometry` otherwise
-function merge_geometries(object, preserve_materials = false) {
-  let materials = [];
-  let geometries = [];
-  let root_transform = object.matrix.clone();
-
-  function collectGeometries(node, parent_transform) {
-    let transform = parent_transform.clone().multiply(node.matrix);
-    if (node.type === "Mesh") {
-      node.geometry.applyMatrix(transform);
-      geometries.push(node.geometry);
-      materials.push(node.material);
-    }
-    for (let child of node.children) {
-      collectGeometries(child, transform);
-    }
-  }
-
-  collectGeometries(object, root_transform);
-  let result = null;
-  if (geometries.length === 1) {
-    result = geometries[0];
-    if (preserve_materials) {
-      result.material = materials[0];
-    }
-  } else if (geometries.length > 1) {
-    result = BufferGeometryUtils.mergeBufferGeometries(geometries, true);
-    if (preserve_materials) {
-      result.material = materials;
-    }
-  } else {
-    result = new THREE.BufferGeometry();
-  }
-  return result;
-}
-
-// Handler for special texture types that we want to support
-// in addition to whatever three.js supports. This function
-// takes a json object representing a single texture, and should
-// return either:
-//   * A new `THREE.Texture` if that json represents a special texture
-//   * `null` otherwise
-function handle_special_texture(json) {
-  if (json.type === "_text") {
-    let canvas = document.createElement("canvas");
-    // canvas width and height should be in the power of 2; otherwise although
-    // the page usually loads successfully, WebGL does complain/warn
-    canvas.width = 256;
-    canvas.height = 256;
-    let ctx = canvas.getContext("2d");
-    ctx.textAlign = "center";
-    let font_size = json.font_size;
-    // auto-resing the font_size to fit in the canvas
-    ctx.font = font_size + "px " + json.font_face;
-    while (ctx.measureText(json.text).width > canvas.width) {
-      font_size--;
-      ctx.font = font_size + "px " + json.font_face;
-    }
-    ctx.fillText(json.text, canvas.width / 2, canvas.height / 2);
-    let canvas_texture = new THREE.CanvasTexture(canvas);
-    canvas_texture.uuid = json.uuid;
-    return canvas_texture;
-  } else {
-    return null;
-  }
-}
-
-// Handler for special geometry types that we want to support
-// in addition to whatever three.js supports. This function
-// takes a json object representing a single geometry, and should
-// return either:
-//   * A new `THREE.Mesh` if that json represents a special geometry
-//   * `null` otherwise
-function handle_special_geometry(geom) {
-  if (geom.type === "_meshfile") {
-    console.warn(
-      "_meshfile is deprecated. Please use _meshfile_geometry for geometries and _meshfile_object for objects with geometry and material"
-    );
-    geom.type = "_meshfile_geometry";
-  }
-  if (geom.type === "_meshfile_geometry") {
-    if (geom.format === "obj") {
-      let loader = new OBJLoader();
-      let obj = loader.parse(geom.data + "\n");
-      let loaded_geom = merge_geometries(obj);
-      loaded_geom.uuid = geom.uuid;
-      return loaded_geom;
-    } else if (geom.format === "dae") {
-      let loader = new ColladaLoader();
-      let obj = loader.parse(geom.data);
-      let result = merge_geometries(obj.scene);
-      result.uuid = geom.uuid;
-      return result;
-    } else if (geom.format === "stl") {
-      let loader = new STLLoader();
-      let loaded_geom = loader.parse(geom.data.buffer);
-      loaded_geom.uuid = geom.uuid;
-      return loaded_geom;
-    } else if (geom.format === "ply") {
-      let loader = new PLYLoader();
-      let loaded_geom = loader.parse(geom.data.buffer);
-      loaded_geom.uuid = geom.uuid;
-      return loaded_geom;
-    } else {
-      console.error("Unsupported mesh type:", geom);
-      return null;
-    }
-  }
-  return null;
-}
-
-// The ExtensibleObjectLoader extends the THREE.ObjectLoader
-// interface, while providing some hooks for us to perform some
-// custom loading for things other than three.js native JSON.
-//
-// We currently use this class to support some extensions to
-// three.js JSON for objects which are easy to construct in
-// javascript but hard to construct in Python and/or Julia.
-// For example, we perform the following transformations:
-//
-//   * Converting "_meshfile" geometries into actual meshes
-//     using the THREE.js native mesh loaders
-//   * Converting "_text" textures into text by drawing the
-//     requested text onto a canvas.
-export class ExtensibleObjectLoader extends THREE.ObjectLoader {
-  delegate(special_handler, base_handler, json, additional_objects) {
-    let result = {};
-    if (json === undefined) {
-      return result;
-    }
-    let remaining_json = [];
-    for (let data of json) {
-      let x = special_handler(data);
-      if (x !== null) {
-        result[x.uuid] = x;
-      } else {
-        remaining_json.push(data);
-      }
-    }
-    return Object.assign(
-      result,
-      base_handler(remaining_json, additional_objects)
-    );
-  }
-
-  parseTextures(json, images) {
-    return this.delegate(
-      handle_special_texture,
-      super.parseTextures,
-      json,
-      images
-    );
-  }
-
-  parseGeometries(json, shapes) {
-    return this.delegate(
-      handle_special_geometry,
-      super.parseGeometries,
-      json,
-      shapes
-    );
-  }
-
-  parseObject(json, geometries, materials) {
-    if (json.type === "_meshfile_object") {
-      let geometry;
-      let material;
-      let manager = new THREE.LoadingManager();
-      let path =
-        json.url === undefined
-          ? undefined
-          : THREE.LoaderUtils.extractUrlBase(json.url);
-      manager.setURLModifier((url) => {
-        if (json.resources[url] !== undefined) {
-          return json.resources[url];
-        }
-        return url;
-      });
-      if (json.format === "obj") {
-        let loader = new OBJLoader(manager);
-        if (json.mtl_library) {
-          let mtl_loader = new MTLLoader(manager);
-          let mtl_parse_result = mtl_loader.parse(json.mtl_library + "\n", "");
-          let materials =
-            MtlObjBridge.addMaterialsFromMtlLoader(mtl_parse_result);
-          loader.setMaterials(materials);
-          this.onTextureLoad();
-        }
-        let obj = loader.parse(json.data + "\n", path);
-        geometry = merge_geometries(obj, true);
-        geometry.uuid = json.uuid;
-        material = geometry.material;
-      } else if (json.format === "dae") {
-        let loader = new ColladaLoader(manager);
-        loader.onTextureLoad = this.onTextureLoad;
-        let obj = loader.parse(json.data, path);
-        geometry = merge_geometries(obj.scene, true);
-        geometry.uuid = json.uuid;
-        material = geometry.material;
-      } else if (json.format === "stl") {
-        let loader = new STLLoader();
-        geometry = loader.parse(json.data.buffer, path);
-        geometry.uuid = json.uuid;
-        material = geometry.material;
-      } else {
-        console.error("Unsupported mesh type:", json);
-        return null;
-      }
-      let object = new THREE.Mesh(geometry, material);
-
-      // Copied from ObjectLoader
-      object.uuid = json.uuid;
-
-      if (json.name !== undefined) object.name = json.name;
-
-      if (json.matrix !== undefined) {
-        object.matrix.fromArray(json.matrix);
-
-        if (json.matrixAutoUpdate !== undefined)
-          object.matrixAutoUpdate = json.matrixAutoUpdate;
-        if (object.matrixAutoUpdate)
-          object.matrix.decompose(
-            object.position,
-            object.quaternion,
-            object.scale
-          );
-      } else {
-        if (json.position !== undefined)
-          object.position.fromArray(json.position);
-        if (json.rotation !== undefined)
-          object.rotation.fromArray(json.rotation);
-        if (json.quaternion !== undefined)
-          object.quaternion.fromArray(json.quaternion);
-        if (json.scale !== undefined) object.scale.fromArray(json.scale);
-      }
-
-      if (json.castShadow !== undefined) object.castShadow = json.castShadow;
-      if (json.receiveShadow !== undefined)
-        object.receiveShadow = json.receiveShadow;
-
-      if (json.shadow) {
-        if (json.shadow.bias !== undefined)
-          object.shadow.bias = json.shadow.bias;
-        if (json.shadow.radius !== undefined)
-          object.shadow.radius = json.shadow.radius;
-        if (json.shadow.mapSize !== undefined)
-          object.shadow.mapSize.fromArray(json.shadow.mapSize);
-        if (json.shadow.camera !== undefined)
-          object.shadow.camera = this.parseObject(json.shadow.camera);
-      }
-
-      if (json.visible !== undefined) object.visible = json.visible;
-      if (json.frustumCulled !== undefined)
-        object.frustumCulled = json.frustumCulled;
-      if (json.renderOrder !== undefined) object.renderOrder = json.renderOrder;
-      if (json.userjson !== undefined) object.userjson = json.userData;
-      if (json.layers !== undefined) object.layers.mask = json.layers;
-
-      return object;
-    } else if (json.type === "CameraHelper") {
-      console.log("processing CameraHelper");
-      console.log(json);
-      console.log(geometries);
-      console.log(materials);
-      return super.parseObject(json, geometries, materials);
-    } else {
-      return super.parseObject(json, geometries, materials);
-    }
-  }
-}
diff --git a/nerfactory/viewer/app/src/SceneNode.js b/nerfactory/viewer/app/src/SceneNode.js
index 293def860d..edfa23d587 100644
--- a/nerfactory/viewer/app/src/SceneNode.js
+++ b/nerfactory/viewer/app/src/SceneNode.js
@@ -1,12 +1,14 @@
-import * as THREE from "three";
+/* eslint-disable no-underscore-dangle */
+/* eslint-disable no-restricted-syntax */
+import * as THREE from 'three';
 
-const dat = require("dat.gui");
+const dat = require('dat.gui');
 
 function remove_folders(gui) {
-  for (let name of Object.keys(gui.__folders)) {
-    let folder = gui.__folders[name];
+  for (const name of Object.keys(gui.__folders)) {
+    const folder = gui.__folders[name];
     remove_folders(folder);
-    dat.dom.dom.unbind(window, "resize", folder.__resizeHandler);
+    dat.dom.dom.unbind(window, 'resize', folder.__resizeHandler);
     gui.removeFolder(folder);
   }
 }
@@ -20,7 +22,7 @@ function dispose(object) {
   }
   if (object.material) {
     if (Array.isArray(object.material)) {
-      for (let material of object.material) {
+      for (const material of object.material) {
         if (material.map) {
           material.map.dispose();
         }
@@ -35,42 +37,41 @@ function dispose(object) {
   }
 }
 
-export class SceneNode {
+export default class SceneNode {
   constructor(object, folder) {
     this.object = object;
     this.folder = folder;
     this.children = {};
     this.create_controls();
-    for (let c of this.object.children) {
+    for (const c of this.object.children) {
       this.add_child(c);
     }
   }
 
   add_child(object) {
-    let f = this.folder.addFolder(object.name);
-    let node = new SceneNode(object, f);
+    const f = this.folder.addFolder(object.name);
+    const node = new SceneNode(object, f);
     this.children[object.name] = node;
     return node;
   }
 
   create_child(name) {
-    let obj = new THREE.Group();
+    const obj = new THREE.Group();
     obj.name = name;
     this.object.add(obj);
     return this.add_child(obj);
   }
 
   find(path) {
-    if (path.length == 0) {
+    if (path.length === 0) {
       return this;
-    } else {
-      let name = path[0];
-      let child = this.children[name];
-      if (child === undefined) {
-        child = this.create_child(name);
-      }
-      return child.find(path.slice(1));
     }
+    const name = path[0];
+    let child = this.children[name];
+    if (child === undefined) {
+      child = this.create_child(name);
+    }
+    return child.find(path.slice(1));
   }
 
   create_controls() {
@@ -79,19 +80,19 @@ export class SceneNode {
     }
     this.vis_controller = new dat.controllers.BooleanController(
       this.object,
-      "visible"
+      'visible',
     );
     this.folder.domElement.prepend(this.vis_controller.domElement);
-    this.vis_controller.domElement.style.height = "0";
-    this.vis_controller.domElement.style.float = "right";
+    this.vis_controller.domElement.style.height = '0';
+    this.vis_controller.domElement.style.float = 'right';
   }
 
   set_property(property, value) {
-    if (property === "position") {
+    if (property === 'position') {
       this.object.position.set(value[0], value[1], value[2]);
-    } else if (property === "quaternion") {
+    } else if (property === 'quaternion') {
       this.object.quaternion.set(value[0], value[1], value[2], value[3]);
-    } else if (property === "scale") {
+    } else if (property === 'scale') {
       this.object.scale.set(value[0], value[1], value[2]);
     } else {
       this.object[property] = value;
@@ -100,17 +101,17 @@ export class SceneNode {
   }
 
   set_transform(matrix) {
-    let mat = new THREE.Matrix4();
+    const mat = new THREE.Matrix4();
     mat.fromArray(matrix);
     mat.decompose(
       this.object.position,
       this.object.quaternion,
-      this.object.scale
+      this.object.scale,
     );
   }
 
   set_object(object) {
-    let parent = this.object.parent;
+    const parent = this.object.parent;
     this.dispose_recursive();
     this.object.parent.remove(this.object);
     this.object = object;
@@ -119,19 +120,19 @@ export class SceneNode {
   }
 
   dispose_recursive() {
-    for (let name of Object.keys(this.children)) {
+    for (const name of Object.keys(this.children)) {
       this.children[name].dispose_recursive();
     }
     dispose(this.object);
   }
 
   delete(path) {
-    if (path.length == 0) {
+    if (path.length === 0) {
       console.error("Can't delete an empty path");
     } else {
-      let parent = this.find(path.slice(0, path.length - 1));
-      let name = path[path.length - 1];
-      let child = parent.children[name];
+      const parent = this.find(path.slice(0, path.length - 1));
+      const name = path[path.length - 1];
+      const child = parent.children[name];
       if (child !== undefined) {
         child.dispose_recursive();
         parent.object.remove(child.object);
diff --git a/nerfactory/viewer/app/src/Viewer.jsx b/nerfactory/viewer/app/src/Viewer.jsx
deleted file mode 100644
index 0e25cfbeed..0000000000
--- a/nerfactory/viewer/app/src/Viewer.jsx
+++ /dev/null
@@ -1,461 +0,0 @@
-import React, { Component } from "react";
-import * as THREE from "three";
-import { OrbitControls } from "three/examples/jsm/controls/OrbitControls";
-import Stats from "three/examples/jsm/libs/stats.module.js";
-import { GUI } from "dat.gui";
-import { split_path } from "./utils";
-import { SceneNode } from "./SceneNode";
-import { ExtensibleObjectLoader } from "./ExtensibleObjectLoader";
-
-function websocket_endpoint_from_url(url) {
-  let endpoint = url.split("?").pop();
-  if (endpoint == "") {
-    let message =
-      "Please set the websocket endpoint. E.g., a correct URL may be: http://localhost:4000?localhost:8051";
-    window.alert(message);
-    return null;
-  }
-  return endpoint;
-}
-
-function findCameraObjectUnderObject3D(object) {
-  // seach the tree for the camera
-  if (object instanceof THREE.Camera) {
-    return object;
-  }
-  for (let name of Object.keys(object.children)) {
-    return findCameraObjectUnderObject3D(object.children[name]);
-  }
-  return null;
-}
-
-var msgpack = require("msgpack-lite");
-
-export class ViewerState extends Component {
-  constructor(props) {
-    super(props);
-    this.state = {
-      scene: null,
-      controls: null,
-      renderer: null,
-      gui: null,
-      scene_tree: null,
-      viewport_width: null,
-      viewport_height: null,
-    };
-    this.update = this.update.bind(this);
-    this.set_object = this.set_object.bind(this);
-    this.handle_command = this.handle_command.bind(this);
-    this.threejs_ref = React.createRef();
-    this.props = props;
-  }
-
-  handleResize() {
-    this.state.viewport_width = this.getViewportWidth();
-    this.state.viewport_height = this.getViewportHeight();
-    this.state.camera_main.aspect =
-      this.state.viewport_width / this.state.viewport_height;
-    this.state.camera_main.updateProjectionMatrix();
-    this.state.renderer_main.setSize(
-      this.state.viewport_width,
-      this.state.viewport_height
-    );
-  }
-
-  update() {
-    requestAnimationFrame(this.update);
-    this.handleResize();
-    let camera_main = findCameraObjectUnderObject3D(
-      this.state.scene_tree.find(["Cameras", "Main Camera"]).object
-    );
-    camera_main.updateProjectionMatrix();
-    if (this.state.controls_main != null) {
-      this.state.controls_main.update();
-    }
-    this.state.renderer_main.render(this.state.scene, camera_main);
-    this.send_camera_over_websocket();
-  }
-
-  send_camera_over_websocket() {
-    /* update the camera information in the python server
-                            if the websocket is connected */
-    // console.log("send_camera_over_websocket");
-    if (this.state.websocket.readyState === WebSocket.OPEN) {
-      // update the camera information in the python server
-      let camera_main = findCameraObjectUnderObject3D(
-        this.state.scene_tree.find(["Cameras", "Main Camera"]).object
-      );
-      // console.log(camera_main.toJSON());
-      let cmd = "set_object";
-      let path = "Cameras/Main Camera";
-      let data = {
-        type: cmd,
-        path: path,
-        object: camera_main.toJSON(),
-      };
-      let message = msgpack.encode(data);
-      this.state.websocket.send(message);
-    }
-  }
-
-  send_training_state_over_websocket(value) {
-    if (this.state.websocket.readyState === WebSocket.OPEN) {
-      let cmd = "set_training_state";
-      let path = "Training State";
-      let data = {
-        type: cmd,
-        path: path,
-        training_state: value,
-      };
-      let message = msgpack.encode(data);
-      this.state.websocket.send(message);
-    }
-  }
-
-  send_output_type_over_websocket(value) {
-    /* update the output option in the python server
-                            if the user changes selection */
-    if (this.state.websocket.readyState === WebSocket.OPEN) {
-      let cmd = "set_output_type";
-      let path = "Output Type";
-      let data = {
-        type: cmd,
-        path: path,
-        output_type: value,
-      };
-      let message = msgpack.encode(data);
-      this.state.websocket.send(message);
-    }
-  }
-
-  send_min_resolution_over_websocket(value) {
-    if (this.state.websocket.readyState === WebSocket.OPEN) {
-      let cmd = "set_min_resolution";
-      let path = "Min Resolution";
-      let data = {
-        type: cmd,
-        path: path,
-        min_resolution: value,
-      };
-      let message = msgpack.encode(data);
-      this.state.websocket.send(message);
-    }
-  }
-
-  send_max_resolution_over_websocket(value) {
-    if (this.state.websocket.readyState === WebSocket.OPEN) {
-      let cmd = "set_max_resolution";
-      let path = "Max Resolution";
-      let data = {
-        type: cmd,
-        path: path,
-        max_resolution: value,
-      };
-      let message = msgpack.encode(data);
-      this.state.websocket.send(message);
-    }
-  }
-
-  set_object(path, object) {
-    if (!(object instanceof THREE.Camera)) {
-      this.state.scene_tree.find(path.concat(["<object>"])).set_object(object);
-    }
-  }
-
-  set_object_from_json(path, object_json) {
-    let loader = new ExtensibleObjectLoader();
-    loader.parse(object_json, (obj) => {
-      if (
-        obj.geometry !== undefined &&
-        obj.geometry.type === "BufferGeometry"
-      ) {
-        if (
-          obj.geometry.attributes.normal === undefined ||
-          obj.geometry.attributes.normal.count === 0
-        ) {
-          obj.geometry.computeVertexNormals();
-        }
-      }
-      obj.castShadow = true;
-      obj.receiveShadow = true;
-      this.set_object(path, obj);
-    });
-  }
-
-  set_transform(path, matrix) {
-    this.state.scene_tree.find(path).set_transform(matrix);
-  }
-
-  delete_path(path) {
-    if (path.length === 0) {
-      console.error("Deleting the entire scene is not implemented.");
-    } else {
-      this.state.scene_tree.delete(path);
-    }
-  }
-
-  set_property(path, property, value) {
-    this.state.scene_tree.find(path).set_property(property, value);
-    // TODO(ethan): handle this issue
-    if (path[0] === "Background") {
-      // The background is not an Object3d, so needs a little help.
-      this.state.scene_tree.find(path).on_update();
-    }
-  }
-
-  handle_command(cmd) {
-    // convert binary serialization format back to JSON
-    cmd = msgpack.decode(new Uint8Array(cmd));
-    // console.log(cmd);
-
-    // three js scene commands
-    if (cmd.type === "set_object") {
-      let path = split_path(cmd.path);
-      this.set_object_from_json(path, cmd.object);
-    } else if (cmd.type === "set_transform") {
-      let path = split_path(cmd.path);
-      this.set_transform(path, cmd.matrix);
-    } else if (cmd.type === "delete") {
-      let path = split_path(cmd.path);
-      this.delete_path(path);
-    } else if (cmd.type === "set_property") {
-      let path = split_path(cmd.path);
-      this.set_property(path, cmd.property, cmd.value);
-    } else if (cmd.type == "set_output_options") {
-      this.props.setOutputOptions(cmd.output_options);
-      this.props.setControls({ output_options: 1 });
-    }
-    // web rtc commands
-    else if (cmd.type === "answer") {
-      let answer = cmd.data;
-      this.state.pc.setRemoteDescription(answer);
-    }
-
-    // possibly update the camera information in the python server
-    // this.send_camera_over_websocket();
-  }
-
-  getViewportWidth() {
-    return window.innerWidth - (window.innerWidth % 2);
-  }
-
-  getViewportHeight() {
-    return window.innerHeight;
-  }
-
-  setupWebRTC() {
-    console.log("setting up WebRTC");
-    // The iceServers config comes from the following URL:
-    // https://www.metered.ca/tools/openrelay/
-    this.state.pc = new RTCPeerConnection({
-      iceServers: [
-        {
-          urls: "stun:openrelay.metered.ca:80",
-        },
-        {
-          urls: "turn:openrelay.metered.ca:80",
-          username: "openrelayproject",
-          credential: "openrelayproject",
-        },
-        {
-          urls: "turn:openrelay.metered.ca:443",
-          username: "openrelayproject",
-          credential: "openrelayproject",
-        },
-        {
-          urls: "turn:openrelay.metered.ca:443?transport=tcp",
-          username: "openrelayproject",
-          credential: "openrelayproject",
-        },
-      ],
-    });
-
-    // connect video
-    this.state.pc.addEventListener("track", function (evt) {
-      if (evt.track.kind == "video") {
-        console.log("setting event stream");
-        document.getElementById("WebRTCVideo-video").srcObject = evt.streams[0];
-      }
-    });
-    this.state.pc.addTransceiver("video", { direction: "recvonly" });
-
-    this.state.pc
-      .createOffer()
-      .then((offer) => {
-        return this.state.pc.setLocalDescription(offer);
-      })
-      .then(() => {
-        // wait for ICE gathering to complete
-        return new Promise((resolve) => {
-          if (this.state.pc.iceGatheringState === "complete") {
-            resolve();
-          } else {
-            var checkState = () => {
-              if (this.state.pc.iceGatheringState === "complete") {
-                this.state.pc.removeEventListener(
-                  "icegatheringstatechange",
-                  checkState
-                );
-                resolve();
-              }
-            };
-            this.state.pc.addEventListener(
-              "icegatheringstatechange",
-              checkState
-            );
-          }
-        });
-      })
-      .then(() => {
-        var offer = this.state.pc.localDescription;
-        console.log("sending the offer");
-        let cmd = "offer";
-        let path = "";
-        let data = {
-          type: cmd,
-          path: path,
-          data: {
-            sdp: offer.sdp,
-            type: offer.type,
-          },
-        };
-        let message = msgpack.encode(data);
-        this.state.websocket.send(message);
-      });
-  }
-
-  componentDidMount() {
-    // Open the websocket
-    let endpoint = websocket_endpoint_from_url(window.location.href);
-    this.state.websocket = new WebSocket("ws://" + endpoint + "/");
-    this.state.websocket.onopen = () => {
-      console.log("websocket connected");
-      this.setupWebRTC();
-    };
-    this.state.websocket.binaryType = "arraybuffer";
-    // 'command' for updates to Viewer
-    this.state.websocket.onmessage = (cmd) => this.handle_command(cmd.data);
-    this.state.websocket.onclose = function (evt) {
-      console.log("onclose:", evt);
-    };
-
-    // Get size of screen
-    this.state.viewport_width = this.getViewportWidth();
-    this.state.viewport_height = this.getViewportHeight();
-
-    // Scene
-    this.state.scene = new THREE.Scene();
-
-    // GUI
-    this.state.gui = new GUI();
-    let scene_folder = this.state.gui.addFolder("Scene");
-    scene_folder.open();
-    this.state.scene_tree = new SceneNode(this.state.scene, scene_folder);
-
-    // Renderer main
-    this.state.renderer_main = new THREE.WebGLRenderer({
-      antialias: true,
-      alpha: true,
-    });
-    this.state.renderer_main.setPixelRatio(window.devicePixelRatio);
-    this.state.renderer_main.setSize(
-      this.state.viewport_width,
-      this.state.viewport_height
-    );
-    this.state.renderer_main.domElement.style.border = "1px solid black";
-
-    let domElement = document.getElementById("canvas-container-main");
-    domElement.append(this.state.renderer_main.domElement);
-
-    // Camera main
-    this.state.camera_main = new THREE.PerspectiveCamera(
-      120,
-      this.state.viewport_width / this.state.viewport_height,
-      0.01,
-      100
-    );
-    this.state.camera_main.position.x = 5;
-    this.state.camera_main.position.y = -5;
-    this.state.camera_main.position.z = 5;
-    this.state.camera_main.up = new THREE.Vector3(0, 0, 1);
-
-    this.state.controls_main = new OrbitControls(
-      this.state.camera_main,
-      this.state.renderer_main.domElement
-    );
-    this.state.controls_main.rotateSpeed = 2.0;
-    this.state.controls_main.zoomSpeed = 0.3;
-    this.state.controls_main.panSpeed = 0.2;
-    this.state.controls_main.target.set(0, 0, 0); // focus point of the controls
-    this.state.controls_main.autoRotate = false;
-    this.state.controls_main.enableDamping = true;
-    this.state.controls_main.dampingFactor = 1.0;
-    this.state.controls_main.update();
-
-    let path = ["Cameras", "Main Camera"];
-    this.state.scene_tree
-      .find(path.concat(["<object>"]))
-      .set_object(this.state.camera_main);
-
-    // Axes display
-    let axes = new THREE.AxesHelper(5);
-    this.set_object(["Axes"], axes);
-
-    // Grid
-    let grid = new THREE.GridHelper(20, 20);
-    grid.rotateX(Math.PI / 2); // now on xy plane
-    this.set_object(["Grid"], grid);
-
-    // Lights
-    let color = 0xffffff;
-    let intensity = 1;
-    let light = new THREE.AmbientLight(color, intensity);
-    this.set_object(["Light"], light);
-
-    // Stats
-    var stats = new Stats();
-    let domElement_stats = document.getElementById("canvas-container-main");
-    domElement_stats.append(stats.dom);
-
-    this.update();
-  }
-
-  componentDidUpdate(prevProps, prevState) {
-    // Pause training
-    if (prevProps.paused !== this.props.paused) {
-      this.send_training_state_over_websocket(this.props.paused);
-    }
-
-    // Choose render type
-    if (prevProps.output_options !== this.props.output_options) {
-      console.log(this.props.output_options);
-      this.send_output_type_over_websocket(this.props.output_options);
-    }
-
-    // Set minimum render resolution
-    if (prevProps.min_resolution !== this.props.min_resolution) {
-      this.send_min_resolution_over_websocket(
-        this.props.min_resolution.slice(0, -2)
-      );
-    }
-
-    // Set maximum render resolution
-    if (prevProps.max_resolution !== this.props.max_resolution) {
-      this.send_max_resolution_over_websocket(
-        this.props.max_resolution.slice(0, -2)
-      );
-    }
-  }
-
-  render() {
-    return (
-      <div>
-        <div className="WebRTCVideo">
-          <video id="WebRTCVideo-video" autoPlay playsInline muted></video>
-        </div>
-        <div id="canvas-container-main"> </div>
-        <div id="stats-container"> </div>
-      </div>
-    );
-  }
-}
diff --git a/nerfactory/viewer/app/src/controlPanel.js b/nerfactory/viewer/app/src/controlPanel.js
deleted file mode 100644
index b6f33a2141..0000000000
--- a/nerfactory/viewer/app/src/controlPanel.js
+++ /dev/null
@@ -1,68 +0,0 @@
-import React from "react";
-import { Leva, button, buttonGroup, useControls } from "leva";
-
-export function PanelConfig() {
-  let params = { titleBar: false };
-  let panel = (
-    <div style={{ position: "relative", width: 250, top: 60 }}>
-      <Leva fill oneLineLabels {...params} />
-    </div>
-  );
-  return panel;
-}
-
-export function RenderControls() {
-  const [outputOptions, setOutputOptions] = React.useState([]);
-  const [paused, setPaused] = React.useState(false);
-
-  const toggle = () => {
-    setPaused((current) => !current);
-  };
-
-  const [controls, setControls] = useControls(
-    "Render Options",
-    () => ({
-      "Resume Training": button(toggle, {
-        disabled: !paused,
-      }),
-      "Pause Training": button(toggle, {
-        disabled: paused,
-      }),
-      output_options: {
-        label: "Output Render",
-        options: outputOptions,
-      },
-      min_resolution: {
-        label: "Min Res.",
-        value: 50,
-        min: 10,
-        max: 100,
-        step: 1,
-        suffix: "px",
-      },
-      " ": buttonGroup({
-        "25px": () => setControls({ min_resolution: 25 }),
-        "50px": () => setControls({ min_resolution: 50 }),
-        "75px": () => setControls({ min_resolution: 75 }),
-        "100px": () => setControls({ min_resolution: 100 }),
-      }),
-      max_resolution: {
-        label: "Max Res.",
-        min: 10,
-        max: 2048,
-        step: 1,
-        value: 512,
-        suffix: "px",
-      },
-      "  ": buttonGroup({
-        "128px": () => setControls({ max_resolution: 128 }),
-        "256px": () => setControls({ max_resolution: 256 }),
-        "512px": () => setControls({ max_resolution: 512 }),
-        "1024px": () => setControls({ max_resolution: 1024 }),
-      }),
-    }),
-    [outputOptions, paused]
-  );
-
-  return [controls, paused, setControls, setOutputOptions];
-}
diff --git a/nerfactory/viewer/app/src/index.css b/nerfactory/viewer/app/src/index.css
deleted file mode 100644
index 80277e1f3c..0000000000
--- a/nerfactory/viewer/app/src/index.css
+++ /dev/null
@@ -1,43 +0,0 @@
-body {
-  margin: 0;
-  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen",
-    "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
-    sans-serif;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-}
-
-code {
-  font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
-    monospace;
-}
-
-.BackgroundDiv,
-.WebRTCVideo {
-  position: absolute;
-  top: 0px;
-  right: 0px;
-  bottom: 0px;
-  left: 0px;
-}
-
-#BackgroundDiv-video,
-#WebRTCVideo-video {
-  width: 100%;
-  height: 100%;
-  object-fit: fill;
-}
-
-#canvas-container-main {
-  position: absolute;
-  top: 0px;
-  right: 0px;
-  bottom: 0px;
-  left: 0px;
-}
-
-#canvas-container-main canvas {
-  position: relative;
-  height: 100%;
-  width: 100%;
-}
diff --git a/nerfactory/viewer/app/src/index.js b/nerfactory/viewer/app/src/index.js
deleted file mode 100644
index 760af9fc2d..0000000000
--- a/nerfactory/viewer/app/src/index.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import React from "react";
-import ReactDOM from "react-dom/client";
-import "./index.css";
-import * as serviceWorker from "./serviceWorker";
-import { ViewerState } from "./Viewer";
-import { PanelConfig, RenderControls } from "./controlPanel";
-
-function App() {
-  let [controls, paused, setControls, setOutputOptions] = RenderControls();
-
-  console.log(controls);
-  return (
-    <div>
-      <ViewerState
-        {...controls}
-        paused={paused}
-        setControls={setControls}
-        setOutputOptions={setOutputOptions}
-      />
-      <button id="demo">Button 1</button>
-      <PanelConfig />
-    </div>
-  );
-}
-
-const root = ReactDOM.createRoot(document.getElementById("root"));
-root.render(<App />);
-
-// If you want your app to work offline and load faster, you can change
-// unregister() to register() below. Note this comes with some pitfalls.
-// Learn more about service workers: https://bit.ly/CRA-PWA
-serviceWorker.unregister();
diff --git a/nerfactory/viewer/app/src/index.jsx b/nerfactory/viewer/app/src/index.jsx
new file mode 100644
index 0000000000..924676521a
--- /dev/null
+++ b/nerfactory/viewer/app/src/index.jsx
@@ -0,0 +1,15 @@
+import React from 'react';
+import ReactDOM from 'react-dom/client';
+import { Provider } from 'react-redux';
+import App from './App';
+import WebSocketProvider from './modules/WebSocket/WebSocket';
+import store from './store';
+
+const root = ReactDOM.createRoot(document.getElementById('root'));
+root.render(
+  <Provider store={store}>
+    <WebSocketProvider>
+      <App />
+    </WebSocketProvider>
+  </Provider>,
+);
\ No newline at end of file
diff --git a/nerfactory/viewer/app/src/logo.svg b/nerfactory/viewer/app/src/logo.svg
deleted file mode 100644
index 6b60c1042f..0000000000
--- a/nerfactory/viewer/app/src/logo.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 841.9 595.3">
-    <g fill="#61DAFB">
-        <path d="M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z"/>
-        <circle cx="420.9" cy="296.5" r="45.7"/>
-        <path d="M520.5 78.1z"/>
-    </g>
-</svg>
diff --git a/nerfactory/viewer/app/src/modules/ConfigPanel/ConfigPanel.css b/nerfactory/viewer/app/src/modules/ConfigPanel/ConfigPanel.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/nerfactory/viewer/app/src/modules/ConfigPanel/ConfigPanel.jsx b/nerfactory/viewer/app/src/modules/ConfigPanel/ConfigPanel.jsx
new file mode 100644
index 0000000000..3a6bad4d05
--- /dev/null
+++ b/nerfactory/viewer/app/src/modules/ConfigPanel/ConfigPanel.jsx
@@ -0,0 +1,113 @@
+import { button, buttonGroup, useControls } from 'leva';
+import React, { useContext } from 'react';
+import { ReactReduxContext, useSelector } from 'react-redux';
+
+export function RenderControls() {
+  // connection status indicators
+  const isWebsocketConnected = useSelector(
+    (state) => state.websocketState.isConnected,
+  );
+  const isWebrtcConnected = useSelector(
+    (state) => state.webrtcState.isConnected,
+  );
+
+  const renderingState = useSelector((state) => state.renderingState);
+  const [isTraining, setIsTraining] = React.useState(renderingState.isTraining);
+  // const [outputOptions, setOutputOptions] = React.useState(
+  //   renderingState.output_options,
+  // );
+  const outputOptions = useSelector(
+    (state) => state.renderingState.output_options,
+  );
+  const outputChoice = useSelector(
+    (state) => state.renderingState.output_choice,
+  );
+
+  const toggleIsTraining = () => {
+    setIsTraining((current) => !current);
+  };
+
+  const { controls, setControls } = useControls(
+    'Rendering State',
+    () => ({
+      // WebSocket isConnected
+      // button does nothing except be an indicator
+      'WebSocket Connected': button(() => {}, {
+        disabled: !isWebsocketConnected,
+      }),
+      // webRTC isConnected
+      // button does nothing except be an indicator
+      'WebRTC Connected': button(() => {}, {
+        disabled: !isWebrtcConnected,
+      }),
+      // isTraining
+      'Resume Training': button(toggleIsTraining, {
+        disabled: !isTraining,
+      }),
+      'Pause Training': button(toggleIsTraining, {
+        disabled: isTraining,
+      }),
+      // output_options
+      output_options: {
+        label: 'Output Render',
+        options: outputOptions,
+        value: outputChoice,
+      },
+      // resolution
+      min_resolution: {
+        label: 'Min Res.',
+        value: 50,
+        min: 10,
+        max: 100,
+        step: 1,
+        suffix: 'px',
+      },
+      ' ': buttonGroup({
+        '25px': () => setControls({ min_resolution: 25 }),
+        '50px': () => setControls({ min_resolution: 50 }),
+        '75px': () => setControls({ min_resolution: 75 }),
+        '100px': () => setControls({ min_resolution: 100 }),
+      }),
+      max_resolution: {
+        label: 'Max Res.',
+        min: 10,
+        max: 2048,
+        step: 1,
+        value: 512,
+        suffix: 'px',
+      },
+      '  ': buttonGroup({
+        '128px': () => setControls({ max_resolution: 128 }),
+        '256px': () => setControls({ max_resolution: 256 }),
+        '512px': () => setControls({ max_resolution: 512 }),
+        '1024px': () => setControls({ max_resolution: 1024 }),
+      }),
+    }),
+    [
+      isWebsocketConnected,
+      isWebrtcConnected,
+      isTraining,
+      outputOptions,
+      outputChoice,
+    ],
+  );
+
+  // some listeners to update the state
+  const { store } = useContext(ReactReduxContext);
+  const selectOutputChoice = (state) => {
+    return state.renderingState.output_choice;
+  };
+  let outputChoiceCurrent;
+  const handleOutputOptions = () => {
+    const outputChoicePrevious = outputChoiceCurrent;
+    outputChoiceCurrent = selectOutputChoice(store.getState());
+    if (outputChoicePrevious !== outputChoiceCurrent) {
+      if (outputChoiceCurrent !== null) {
+        console.log(outputChoiceCurrent);
+      }
+    }
+  };
+  store.subscribe(handleOutputOptions);
+
+  return controls;
+}
diff --git a/nerfactory/viewer/app/src/modules/ConfigPanel/ConfigPanelSlice.js b/nerfactory/viewer/app/src/modules/ConfigPanel/ConfigPanelSlice.js
new file mode 100644
index 0000000000..30db097df6
--- /dev/null
+++ b/nerfactory/viewer/app/src/modules/ConfigPanel/ConfigPanelSlice.js
@@ -0,0 +1,6 @@
+// The function below is called a selector and allows us to select a value from
+// the state. Selectors can also be defined inline where they're used instead of
+// in the slice file. For example: `useSelector((state) => state.counter.value)`
+export const selectTrainingState = (state) =>
+  state.shared.rendering.training_state;
+export const selectOutputOptions = (state) => state.shared.output_options;
diff --git a/nerfactory/viewer/app/src/modules/Scene/InititialSceneState.json b/nerfactory/viewer/app/src/modules/Scene/InititialSceneState.json
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/nerfactory/viewer/app/src/modules/Scene/Scene.css b/nerfactory/viewer/app/src/modules/Scene/Scene.css
new file mode 100644
index 0000000000..43ff9bf1a5
--- /dev/null
+++ b/nerfactory/viewer/app/src/modules/Scene/Scene.css
@@ -0,0 +1,5 @@
+#datgui {
+  position: absolute;
+  top: 2px;
+  left: 2px;
+}
diff --git a/nerfactory/viewer/app/src/modules/Scene/Scene.jsx b/nerfactory/viewer/app/src/modules/Scene/Scene.jsx
new file mode 100644
index 0000000000..d8597d06b4
--- /dev/null
+++ b/nerfactory/viewer/app/src/modules/Scene/Scene.jsx
@@ -0,0 +1,121 @@
+/* eslint-disable no-restricted-syntax */
+import * as THREE from 'three';
+
+import { GUI } from 'dat.gui';
+import { useContext, useEffect } from 'react';
+import { ReactReduxContext, useDispatch } from 'react-redux';
+import { drawCameras, drawSceneBounds } from './drawing';
+
+import SceneNode from '../../SceneNode';
+import { WebSocketContext } from '../WebSocket/WebSocket';
+
+import './Scene.css';
+
+const msgpack = require('msgpack-lite');
+
+// manages setting up the scene and other logic for keeping state in sync with the server
+export default function SetupScene() {
+  let scene = null;
+  let gui = null;
+  let sceneTree = null;
+
+  // the websocket context
+  const socket = useContext(WebSocketContext).socket;
+  const dispatch = useDispatch();
+
+  // Scene
+  scene = new THREE.Scene();
+
+  // GUI
+  gui = new GUI();
+  gui.domElement.id = 'datgui';
+  const sceneFolder = gui.addFolder('Scene');
+  sceneFolder.open();
+  sceneTree = new SceneNode(scene, sceneFolder);
+
+  // add objects to the the scene tree
+  const setObject = (path, object) => {
+    sceneTree.find(path.concat(['<object>'])).set_object(object);
+  };
+  const deleteObject = (path) => {
+    sceneTree.delete(path);
+  };
+
+  // Axes
+  const axes = new THREE.AxesHelper(5);
+  setObject(['Axes'], axes);
+
+  // Grid
+  const grid = new THREE.GridHelper(20, 20);
+  grid.rotateX(Math.PI / 2); // rotated to xy plane
+  setObject(['Grid'], grid);
+
+  // Lights
+  const color = 0xffffff;
+  const intensity = 1;
+  const light = new THREE.AmbientLight(color, intensity);
+  setObject(['Light'], light);
+
+  const { store } = useContext(ReactReduxContext);
+
+  // handle the box drawing...
+  const select_box = (state) => {
+    return state.sceneState.sceneBounds;
+  };
+  let currentSceneStateBoxValue;
+  const handle_change_box = () => {
+    console.log('handle_change_box');
+    const previousSceneStateBoxValue = currentSceneStateBoxValue;
+    currentSceneStateBoxValue = select_box(store.getState());
+    if (previousSceneStateBoxValue !== currentSceneStateBoxValue) {
+      if (currentSceneStateBoxValue !== null) {
+        const sceneBounds = currentSceneStateBoxValue;
+        const line = drawSceneBounds(sceneBounds);
+        setObject(['Scene Bounds'], line);
+      } else {
+        console.log('deleting object');
+        deleteObject(['Scene Bounds']);
+      }
+    }
+  };
+  store.subscribe(handle_change_box);
+
+  // handle the camera drawing...
+  const select_cameras = (state) => {
+    return state.sceneState.cameras;
+  };
+  let currentCamerasValue;
+  const handle_change_cameras = () => {
+    const previousCamerasValue = currentCamerasValue;
+    currentCamerasValue = select_cameras(store.getState());
+    if (previousCamerasValue !== currentCamerasValue) {
+      if (currentCamerasValue !== null) {
+        const cameras = currentCamerasValue;
+        const cameraObjects = drawCameras(cameras);
+        for (const [key, camera] of Object.entries(cameraObjects)) {
+          setObject(['Cameras', key], camera);
+        }
+      } else {
+        deleteObject(['Cameras']);
+      }
+    }
+  };
+  store.subscribe(handle_change_cameras);
+
+  useEffect(() => {
+    socket.addEventListener('message', (originalCmd) => {
+      // set the remote description when the offer is received
+      const cmd = msgpack.decode(new Uint8Array(originalCmd.data));
+      if (cmd.type === 'write') {
+        // write to the store
+        dispatch({
+          type: 'write',
+          path: cmd.path,
+          data: cmd.data,
+        });
+      }
+    });
+  }, []); // empty dependency array means only run once
+
+  return scene;
+}
diff --git a/nerfactory/viewer/app/src/modules/Scene/drawing.js b/nerfactory/viewer/app/src/modules/Scene/drawing.js
new file mode 100644
index 0000000000..b468fbbdd6
--- /dev/null
+++ b/nerfactory/viewer/app/src/modules/Scene/drawing.js
@@ -0,0 +1,165 @@
+/* eslint-disable no-restricted-syntax */
+// ---- code for drawing with three.js ----
+import * as THREE from 'three';
+
+export function drawSceneBounds(sceneBounds): THREE.Object3D {
+  console.assert(
+    sceneBounds.type === 'aabb',
+    'The scene bounds must be an AABB',
+  );
+
+  const box = sceneBounds;
+
+  const w = 1.0;
+  const aaa = new THREE.Vector3(w, w, w);
+  const aab = new THREE.Vector3(w, w, -w);
+  const aba = new THREE.Vector3(w, -w, w);
+  const baa = new THREE.Vector3(-w, w, w);
+  const abb = new THREE.Vector3(w, -w, -w);
+  const bba = new THREE.Vector3(-w, -w, w);
+  const bab = new THREE.Vector3(-w, w, -w);
+  const bbb = new THREE.Vector3(-w, -w, -w);
+  let points = [aaa, aab, aaa, aba, aab, abb, aba, abb];
+  points = points.concat([baa, bab, baa, bba, bab, bbb, bba, bbb]);
+  points = points.concat([aaa, baa, aab, bab, aba, bba, abb, bbb]);
+
+  const maxPoint = new THREE.Vector3(...box.max_point);
+  const minPoint = new THREE.Vector3(...box.min_point);
+
+  const lengths = maxPoint.clone();
+  lengths.sub(minPoint);
+
+  const scalar = lengths.clone();
+  scalar.divide(new THREE.Vector3(2.0, 2.0, 2.0));
+
+  const offset = minPoint.clone();
+  offset.add(scalar);
+  for (let i = 0; i < points.length; i += 1) {
+    points[i] = points[i].clone();
+    points[i].multiply(scalar).add(offset);
+  }
+
+  const geometry = new THREE.BufferGeometry().setFromPoints(points);
+  const material = new THREE.LineBasicMaterial({
+    color: 0x000000,
+    linewidth: 1,
+  });
+  const lines = new THREE.LineSegments(geometry, material);
+  return lines;
+}
+
+export function getCameraWireframe(
+  scale = 0.3,
+  focalLength = 4,
+  w = 1.5,
+  h = 2,
+) {
+  // Returns a wireframe of a 3D line-plot of a camera symbol.
+  // A wireframe is a frustum.
+  // https://github.com/hangg7/mvs_visual/blob/275d382a824733a3187a8e3147be184dd6f14795/mvs_visual.py#L54.
+  // scale: scale of rendering
+  // focalLength: this is the focal length
+  // w: width
+  // h: height
+  const f = focalLength;
+
+  const ul = new THREE.Vector3(-w, h, -f);
+  const ur = new THREE.Vector3(w, h, -f);
+  const ll = new THREE.Vector3(-w, -h, -f);
+  const lr = new THREE.Vector3(w, -h, -f);
+  const C = new THREE.Vector3(0, 0, 0);
+  const points = [
+    C,
+    ul,
+    C,
+    ur,
+    C,
+    ll,
+    C,
+    lr,
+    C,
+    ul,
+    ur,
+    ul,
+    lr,
+    ur,
+    lr,
+    ll,
+    ll,
+    ul,
+  ];
+
+  const scalar = new THREE.Vector3(scale, scale, scale);
+  for (let i = 0; i < points.length; i += 1) {
+    points[i].multiply(scalar);
+  }
+
+  const geometry = new THREE.BufferGeometry().setFromPoints(points);
+  const material = new THREE.LineBasicMaterial({
+    color: 0x000000,
+    linewidth: 1,
+  });
+  const lines = new THREE.LineSegments(geometry, material);
+  return lines;
+}
+
+export function drawCameraImagePlane(width, height, imageString) {
+  // imageString is the texture as a base64 string
+  const geometry = new THREE.PlaneGeometry(width, height);
+  const material = new THREE.MeshBasicMaterial({
+    side: THREE.DoubleSide,
+  });
+  const texture = new THREE.TextureLoader().load(imageString);
+  material.map = texture;
+  const plane = new THREE.Mesh(geometry, material);
+  return plane;
+}
+
+function transpose(matrix) {
+  return matrix[0].map((col, i) => matrix.map((row) => row[i]));
+}
+
+export function drawCamera(camera): THREE.Object3D {
+  const group = new THREE.Group();
+
+  // console.log(camera);
+  console.assert(
+    camera.type === 'PinholeCamera',
+    'The camera should be a PinholeCamera',
+  );
+
+  const height = 0.25;
+  const f = camera.fx;
+  const displayedFocalLength = height / (2.0 * (camera.cy / f));
+  const width = 2.0 * (camera.cx / f) * displayedFocalLength;
+  const cameraWireframeObject = getCameraWireframe(1.0, displayedFocalLength, width, height);
+  cameraWireframeObject.translateZ(displayedFocalLength); // move the wireframe frustum back
+  group.add(cameraWireframeObject);
+  const cameraImagePlaneObject = drawCameraImagePlane(
+    width*2,
+    height*2,
+    camera.image,
+  );
+  group.add(cameraImagePlaneObject);
+
+  // make homogeneous coordinates and then
+  // transpose and flatten the matrix into an array
+  let c2w = JSON.parse(JSON.stringify(camera.camera_to_world));
+  c2w.push([0, 0, 0, 1]);
+  c2w = transpose(c2w).flat();
+
+  const mat = new THREE.Matrix4();
+  mat.fromArray(c2w);
+  mat.decompose(group.position, group.quaternion, group.scale);
+
+  return group;
+}
+
+export function drawCameras(cameras): Record<number, THREE.Object3D> {
+  // console.log('drawCameras');
+  const cameraObjects = {};
+  for (const [key, camera] of Object.entries(cameras)) {
+    cameraObjects[key] = drawCamera(camera);
+  }
+  return cameraObjects;
+}
diff --git a/nerfactory/viewer/app/src/modules/ViewerWindow/ViewerWindow.css b/nerfactory/viewer/app/src/modules/ViewerWindow/ViewerWindow.css
new file mode 100644
index 0000000000..2390151aae
--- /dev/null
+++ b/nerfactory/viewer/app/src/modules/ViewerWindow/ViewerWindow.css
@@ -0,0 +1,27 @@
+.WebRTCVideo {
+  position: absolute;
+  top: 0px;
+  right: 0px;
+  bottom: 0px;
+  left: 0px;
+}
+
+.WebRTCVideo-video {
+  width: 100%;
+  height: 100%;
+  object-fit: fill;
+}
+
+.canvas-container-main {
+  position: absolute;
+  top: 0px;
+  right: 0px;
+  bottom: 0px;
+  left: 0px;
+}
+
+.canvas-container-main canvas {
+  position: relative;
+  height: 100%;
+  width: 100%;
+}
diff --git a/nerfactory/viewer/app/src/modules/ViewerWindow/ViewerWindow.jsx b/nerfactory/viewer/app/src/modules/ViewerWindow/ViewerWindow.jsx
new file mode 100644
index 0000000000..2f43dc6c81
--- /dev/null
+++ b/nerfactory/viewer/app/src/modules/ViewerWindow/ViewerWindow.jsx
@@ -0,0 +1,106 @@
+import './ViewerWindow.css';
+
+import * as THREE from 'three';
+
+import React, { useContext, useEffect, useRef } from 'react';
+
+import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';
+import WebRtcWindow from '../WebRtcWindow/WebRtcWindow';
+import { WebSocketContext } from '../WebSocket/WebSocket';
+
+const msgpack = require('msgpack-lite');
+
+// manages a camera and the web rtc stream...
+export default function ViewerWindow(props) {
+  // eslint-disable-next-line react/prop-types
+  const scene = props.scene;
+  let cameraControls = null;
+  const myRef = useRef(null);
+  const websocket = useContext(WebSocketContext).socket;
+
+  const getViewportWidth = () => {
+    return window.innerWidth - (window.innerWidth % 2);
+  };
+
+  const getViewportHeight = () => {
+    return window.innerHeight;
+  };
+
+  let viewportWidth = getViewportWidth();
+  let viewportHeight = getViewportHeight();
+
+  const camera = new THREE.PerspectiveCamera(
+    120,
+    viewportWidth / viewportHeight,
+    0.01,
+    100,
+  );
+  camera.position.x = 5;
+  camera.position.y = -5;
+  camera.position.z = 5;
+  camera.up = new THREE.Vector3(0, 0, 1);
+
+  const renderer = new THREE.WebGLRenderer({
+    antialias: true,
+    alpha: true,
+  });
+  renderer.setPixelRatio(window.devicePixelRatio);
+  renderer.setSize(viewportWidth, viewportHeight);
+  renderer.domElement.style.border = '1px solid black';
+
+  const handleResize = () => {
+    viewportWidth = getViewportWidth();
+    viewportHeight = getViewportHeight();
+    camera.aspect = viewportWidth / viewportHeight;
+    camera.updateProjectionMatrix();
+    renderer.setSize(viewportWidth, viewportHeight);
+  };
+
+  const sendCamera = () => {
+    // update the camera information in the python server
+    if (websocket.readyState === WebSocket.OPEN) {
+      const cmd = 'write';
+      const path = 'renderingState/camera';
+      const data = {
+        type: cmd,
+        path,
+        data: camera.toJSON(),
+      };
+      const message = msgpack.encode(data);
+      websocket.send(message);
+    }
+  };
+
+  const update = () => {
+    handleResize();
+    camera.updateProjectionMatrix();
+    cameraControls.update();
+    requestAnimationFrame(update);
+    renderer.render(scene, camera);
+    sendCamera();
+  };
+
+  // similar to componentDidMount
+  useEffect(() => {
+    myRef.current.append(renderer.domElement);
+    // add camera controls
+    cameraControls = new OrbitControls(camera, renderer.domElement);
+    cameraControls.rotateSpeed = 2.0;
+    cameraControls.zoomSpeed = 0.3;
+    cameraControls.panSpeed = 0.2;
+    cameraControls.target.set(0, 0, 0); // focus point of the controls
+    cameraControls.autoRotate = false;
+    cameraControls.enableDamping = true;
+    cameraControls.dampingFactor = 1.0;
+    cameraControls.update();
+    update();
+  }, []);
+
+  return (
+    <div>
+      {/* the webrtc viewer needs to know the camera pose */}
+      <WebRtcWindow />
+      <div className="canvas-container-main" ref={myRef} />
+    </div>
+  );
+}
\ No newline at end of file
diff --git a/nerfactory/viewer/app/src/modules/ViewerWindow/ViewerWindowSlice.js b/nerfactory/viewer/app/src/modules/ViewerWindow/ViewerWindowSlice.js
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/nerfactory/viewer/app/src/modules/WebRtcWindow/WebRtcWindow.jsx b/nerfactory/viewer/app/src/modules/WebRtcWindow/WebRtcWindow.jsx
new file mode 100644
index 0000000000..78bab30b7d
--- /dev/null
+++ b/nerfactory/viewer/app/src/modules/WebRtcWindow/WebRtcWindow.jsx
@@ -0,0 +1,147 @@
+import React, { createContext, useContext, useEffect, useRef } from 'react';
+import { useDispatch } from 'react-redux';
+
+import { WebSocketContext } from '../WebSocket/WebSocket';
+
+const WebRtcContext = createContext(null);
+const msgpack = require('msgpack-lite');
+
+export { WebRtcContext };
+
+export default function WebRtcWindow() {
+  const websocket = useContext(WebSocketContext).socket;
+  const pcRef = useRef(null);
+  const localVideoRef = useRef(null);
+
+  const dispatch = useDispatch();
+
+  const getRTCPeerConnection = () => {
+    const pc = new RTCPeerConnection({
+      iceServers: [
+        {
+          urls: 'stun:openrelay.metered.ca:80',
+        },
+        {
+          urls: 'turn:openrelay.metered.ca:80',
+          username: 'openrelayproject',
+          credential: 'openrelayproject',
+        },
+        {
+          urls: 'turn:openrelay.metered.ca:443',
+          username: 'openrelayproject',
+          credential: 'openrelayproject',
+        },
+        {
+          urls: 'turn:openrelay.metered.ca:443?transport=tcp',
+          username: 'openrelayproject',
+          credential: 'openrelayproject',
+        },
+      ],
+    });
+    // connect video
+    pc.addEventListener('track', (evt) => {
+      dispatch({
+        type: "write",
+        path: 'webrtcState/isConnected',
+        data: true,
+      });
+      if (evt.track.kind === 'video') {
+        [localVideoRef.current.srcObject] = evt.streams; // uses array destructuring
+      }
+    });
+    pc.addTransceiver('video', { direction: 'recvonly' });
+
+    // for updating the status of the peer connection
+    pc.oniceconnectionstatechange = () => {
+      if (pc.iceConnectionState === 'connected') {
+        dispatch({
+          type: "write",
+          path: 'webrtcState/isConnected',
+          data: true,
+        });
+      } else if (pc.iceConnectionState === 'disconnected') {
+        dispatch({
+          type: "write",
+          path: 'webrtcState/isConnected',
+          data: false,
+        });
+      }
+    };
+    return pc;
+  };
+
+  const sendOffer = () => {
+    pcRef.current
+      .createOffer()
+      .then((offer) => {
+        return pcRef.current.setLocalDescription(offer);
+      })
+      .then(() => {
+        // wait for ICE gathering to complete
+        return new Promise((resolve) => {
+          if (pcRef.current.iceGatheringState === 'complete') {
+            resolve();
+          } else {
+            const checkState = () => {
+              if (pcRef.current.iceGatheringState === 'complete') {
+                pcRef.current.removeEventListener(
+                  'icegatheringstatechange',
+                  checkState,
+                );
+                resolve();
+              }
+            };
+            pcRef.current.addEventListener(
+              'icegatheringstatechange',
+              checkState,
+            );
+          }
+        });
+      })
+      .then(() => {
+        // send the offer
+        const offer = pcRef.current.localDescription;
+        const cmd = 'offer';
+        const path = '';
+        const data = {
+          type: cmd,
+          path,
+          data: {
+            sdp: offer.sdp,
+            type: offer.type,
+          },
+        };
+        const message = msgpack.encode(data);
+        websocket.send(message);
+      });
+  };
+
+  useEffect(() => {
+    websocket.addEventListener('message', (originalCmd) => {
+      // set the remote description when the offer is received
+      const cmd = msgpack.decode(new Uint8Array(originalCmd.data));
+      if (cmd.type === 'answer') {
+        const answer = cmd.data;
+        pcRef.current.setRemoteDescription(answer);
+      }
+    });
+
+    websocket.addEventListener('open', () => {
+      // connect webrtc when the websocket is connected
+      pcRef.current = getRTCPeerConnection();
+      sendOffer();
+    });
+  }, []); // empty dependency array means only run once
+
+  return (
+    <div className="WebRTCVideo">
+      <video
+        className="WebRTCVideo-video"
+        autoPlay
+        playsInline
+        muted
+        ref={localVideoRef}
+      />
+    </div>
+  );
+}
diff --git a/nerfactory/viewer/app/src/modules/WebSocket/WebSocket.jsx b/nerfactory/viewer/app/src/modules/WebSocket/WebSocket.jsx
new file mode 100644
index 0000000000..22b0b8cc1d
--- /dev/null
+++ b/nerfactory/viewer/app/src/modules/WebSocket/WebSocket.jsx
@@ -0,0 +1,87 @@
+// Much of this code comes from or is inspired by:
+// https://www.pluralsight.com/guides/using-web-sockets-in-your-reactredux-app
+
+import React, { createContext } from 'react';
+
+import PropTypes from 'prop-types';
+import { useDispatch } from 'react-redux';
+
+const WebSocketContext = createContext(null);
+
+export { WebSocketContext };
+
+function getWebsocketEndpointFromUrl(url: string) {
+  const splitUrl = url.split('?');
+  if (splitUrl.length !== 2) {
+    window.alert("There should be exactly one '?' in the url.");
+    return '';
+  }
+  const endpoint = splitUrl.pop();
+  if (endpoint === '') {
+    const message =
+      'Please set the websocket endpoint. E.g., a correct URL may be: http://localhost:4000?localhost:8051';
+    window.alert(message);
+    return '';
+  }
+  return endpoint;
+}
+
+export default function WebSocketContextFunction({ children }) {
+  console.log('calling websocket context function');
+
+  const dispatch = useDispatch();
+
+  let socket;
+  let ws;
+
+  // should look like ws://localhost:8051
+  const websocketEndpoint = getWebsocketEndpointFromUrl(window.location.href);
+
+  const connect = () => {
+    socket = new WebSocket(`ws://${websocketEndpoint}/`);
+    socket.binaryType = 'arraybuffer';
+    socket.onopen = () => {
+      dispatch({
+        type: 'write',
+        path: 'websocketState/isConnected',
+        data: true,
+      });
+    };
+
+    socket.onclose = () => {
+      // when closed, the websocket will try to reconnect every second
+      dispatch({
+        type: 'write',
+        path: 'websocketState/isConnected',
+        data: false,
+      });
+      setTimeout(() => {
+        connect();
+      }, 1000);
+    };
+
+    socket.onerror = (err) => {
+      console.error(
+        'Socket encountered error: ',
+        err.message,
+        'Closing socket',
+      );
+      socket.close();
+    };
+  };
+
+  if (!socket) {
+    connect();
+    ws = {
+      socket,
+    };
+  }
+
+  return (
+    <WebSocketContext.Provider value={ws}>{children}</WebSocketContext.Provider>
+  );
+}
+
+WebSocketContextFunction.propTypes = {
+  children: PropTypes.node.isRequired,
+};
diff --git a/nerfactory/viewer/app/src/reducer.js b/nerfactory/viewer/app/src/reducer.js
new file mode 100644
index 0000000000..389253c3fd
--- /dev/null
+++ b/nerfactory/viewer/app/src/reducer.js
@@ -0,0 +1,58 @@
+import { split_path } from './utils';
+
+const initialState = {
+  // the websocket connection state
+  websocketState: {
+    isConnected: false,
+  },
+  // the webrtc connection state
+  webrtcState: {
+    isConnected: false,
+  },
+  // the rendering state
+  renderingState: {
+    camera: null, // the camera object used to render the three.js scene
+    isTraining: false,
+    output_options: ['rgb'], // populated by the possible Graph outputs
+    output_choice: 'rgb', // the selected output
+    minResolution: 100,
+    maxResolution: 500,
+  },
+  // the scene state
+  sceneState: {
+    sceneBounds: null,
+    cameras: null,
+  },
+  // ------------------------------------------------------------------------
+  // which of the state keys to synchronize with the bridge server
+  sync_keys: ['renderingState', 'sceneState'],
+};
+
+function setData(newState, state, path, data) {
+  if (path.length === 1) {
+    newState[path[0]] = data; // eslint-disable-line no-param-reassign
+  } else {
+    newState[path[0]] = { ...state[path[0]] }; // eslint-disable-line no-param-reassign
+    setData(newState[path[0]], state[path[0]], path.slice(1), data);
+  }
+}
+
+// Use the initialState as a default value
+// eslint-disable-next-line default-param-last
+export default function rootReducer(state = initialState, action) {
+  // The reducer normally looks at the action type field to decide what happens
+
+  switch (action.type) {
+    case 'write': {
+      const path = split_path(action.path); // convert string with "/"s to a list
+      const data = action.data;
+      const newState = { ...state };
+      setData(newState, state, path, data);
+      return newState;
+    }
+    default:
+      // If this reducer doesn't recognize the action type, or doesn't
+      // care about this specific action, return the existing state unchanged
+      return state;
+  }
+}
diff --git a/nerfactory/viewer/app/src/serviceWorker.js b/nerfactory/viewer/app/src/serviceWorker.js
deleted file mode 100644
index c7cd6663d0..0000000000
--- a/nerfactory/viewer/app/src/serviceWorker.js
+++ /dev/null
@@ -1,141 +0,0 @@
-// This optional code is used to register a service worker.
-// register() is not called by default.
-
-// This lets the app load faster on subsequent visits in production, and gives
-// it offline capabilities. However, it also means that developers (and users)
-// will only see deployed updates on subsequent visits to a page, after all the
-// existing tabs open on the page have been closed, since previously cached
-// resources are updated in the background.
-
-// To learn more about the benefits of this model and instructions on how to
-// opt-in, read https://bit.ly/CRA-PWA
-
-const isLocalhost = Boolean(
-  window.location.hostname === "localhost" ||
-    // [::1] is the IPv6 localhost address.
-    window.location.hostname === "[::1]" ||
-    // 127.0.0.0/8 are considered localhost for IPv4.
-    window.location.hostname.match(
-      /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/
-    )
-);
-
-export function register(config) {
-  if (process.env.NODE_ENV === "production" && "serviceWorker" in navigator) {
-    // The URL constructor is available in all browsers that support SW.
-    const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);
-    if (publicUrl.origin !== window.location.origin) {
-      // Our service worker won't work if PUBLIC_URL is on a different origin
-      // from what our page is served on. This might happen if a CDN is used to
-      // serve assets; see https://github.com/facebook/create-react-app/issues/2374
-      return;
-    }
-
-    window.addEventListener("load", () => {
-      const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;
-
-      if (isLocalhost) {
-        // This is running on localhost. Let's check if a service worker still exists or not.
-        checkValidServiceWorker(swUrl, config);
-
-        // Add some additional logging to localhost, pointing developers to the
-        // service worker/PWA documentation.
-        navigator.serviceWorker.ready.then(() => {
-          console.log(
-            "This web app is being served cache-first by a service " +
-              "worker. To learn more, visit https://bit.ly/CRA-PWA"
-          );
-        });
-      } else {
-        // Is not localhost. Just register service worker
-        registerValidSW(swUrl, config);
-      }
-    });
-  }
-}
-
-function registerValidSW(swUrl, config) {
-  navigator.serviceWorker
-    .register(swUrl)
-    .then((registration) => {
-      registration.onupdatefound = () => {
-        const installingWorker = registration.installing;
-        if (installingWorker == null) {
-          return;
-        }
-        installingWorker.onstatechange = () => {
-          if (installingWorker.state === "installed") {
-            if (navigator.serviceWorker.controller) {
-              // At this point, the updated precached content has been fetched,
-              // but the previous service worker will still serve the older
-              // content until all client tabs are closed.
-              console.log(
-                "New content is available and will be used when all " +
-                  "tabs for this page are closed. See https://bit.ly/CRA-PWA."
-              );
-
-              // Execute callback
-              if (config && config.onUpdate) {
-                config.onUpdate(registration);
-              }
-            } else {
-              // At this point, everything has been precached.
-              // It's the perfect time to display a
-              // "Content is cached for offline use." message.
-              console.log("Content is cached for offline use.");
-
-              // Execute callback
-              if (config && config.onSuccess) {
-                config.onSuccess(registration);
-              }
-            }
-          }
-        };
-      };
-    })
-    .catch((error) => {
-      console.error("Error during service worker registration:", error);
-    });
-}
-
-function checkValidServiceWorker(swUrl, config) {
-  // Check if the service worker can be found. If it can't reload the page.
-  fetch(swUrl, {
-    headers: { "Service-Worker": "script" },
-  })
-    .then((response) => {
-      // Ensure service worker exists, and that we really are getting a JS file.
-      const contentType = response.headers.get("content-type");
-      if (
-        response.status === 404 ||
-        (contentType != null && contentType.indexOf("javascript") === -1)
-      ) {
-        // No service worker found. Probably a different app. Reload the page.
-        navigator.serviceWorker.ready.then((registration) => {
-          registration.unregister().then(() => {
-            window.location.reload();
-          });
-        });
-      } else {
-        // Service worker found. Proceed as normal.
-        registerValidSW(swUrl, config);
-      }
-    })
-    .catch(() => {
-      console.log(
-        "No internet connection found. App is running in offline mode."
-      );
-    });
-}
-
-export function unregister() {
-  if ("serviceWorker" in navigator) {
-    navigator.serviceWorker.ready
-      .then((registration) => {
-        registration.unregister();
-      })
-      .catch((error) => {
-        console.error(error.message);
-      });
-  }
-}
diff --git a/nerfactory/viewer/app/src/store.js b/nerfactory/viewer/app/src/store.js
new file mode 100644
index 0000000000..9021d23a19
--- /dev/null
+++ b/nerfactory/viewer/app/src/store.js
@@ -0,0 +1,4 @@
+import { configureStore } from '@reduxjs/toolkit';
+import rootReducer from './reducer';
+
+export default configureStore({ reducer: rootReducer });
diff --git a/nerfactory/viewer/app/yarn.lock b/nerfactory/viewer/app/yarn.lock
index 29a7a064bc..e67752f528 100644
--- a/nerfactory/viewer/app/yarn.lock
+++ b/nerfactory/viewer/app/yarn.lock
@@ -26,12 +26,12 @@
   dependencies:
     "@babel/highlight" "^7.18.6"
 
-"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.18.8":
+"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8":
   version "7.18.8"
   resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d"
   integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==
 
-"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0":
+"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.18.5", "@babel/core@^7.7.2", "@babel/core@^7.8.0":
   version "7.18.9"
   resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.9.tgz#805461f967c77ff46c74ca0460ccf4fe933ddd59"
   integrity sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==
@@ -85,7 +85,7 @@
     "@babel/helper-explode-assignable-expression" "^7.18.6"
     "@babel/types" "^7.18.9"
 
-"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.18.9":
+"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9":
   version "7.18.9"
   resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf"
   integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==
@@ -116,15 +116,13 @@
     "@babel/helper-annotate-as-pure" "^7.18.6"
     regexpu-core "^5.1.0"
 
-"@babel/helper-define-polyfill-provider@^0.3.1":
-  version "0.3.1"
-  resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665"
-  integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==
+"@babel/helper-define-polyfill-provider@^0.3.1", "@babel/helper-define-polyfill-provider@^0.3.2":
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz#bd10d0aca18e8ce012755395b05a79f45eca5073"
+  integrity sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==
   dependencies:
-    "@babel/helper-compilation-targets" "^7.13.0"
-    "@babel/helper-module-imports" "^7.12.13"
-    "@babel/helper-plugin-utils" "^7.13.0"
-    "@babel/traverse" "^7.13.0"
+    "@babel/helper-compilation-targets" "^7.17.7"
+    "@babel/helper-plugin-utils" "^7.16.7"
     debug "^4.1.1"
     lodash.debounce "^4.0.8"
     resolve "^1.14.2"
@@ -164,7 +162,7 @@
   dependencies:
     "@babel/types" "^7.18.9"
 
-"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.18.6":
+"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.18.6":
   version "7.18.6"
   resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e"
   integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==
@@ -192,7 +190,7 @@
   dependencies:
     "@babel/types" "^7.18.6"
 
-"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
   version "7.18.9"
   resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f"
   integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==
@@ -779,7 +777,7 @@
   dependencies:
     "@babel/helper-plugin-utils" "^7.18.6"
 
-"@babel/plugin-transform-react-constant-elements@^7.12.1":
+"@babel/plugin-transform-react-constant-elements@^7.12.1", "@babel/plugin-transform-react-constant-elements@^7.17.12":
   version "7.18.9"
   resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.18.9.tgz#ff6aeedd38f57ba6b41dcf824fcc8bcedb3e783f"
   integrity sha512-IrTYh1I3YCEL1trjknnlLKTp5JggjzhKl/d3ibzPc97JhpFcDTr38Jdek/oX4cFbS6By0bXJcOkpRvJ5ZHK2wQ==
@@ -906,7 +904,7 @@
     "@babel/helper-create-regexp-features-plugin" "^7.18.6"
     "@babel/helper-plugin-utils" "^7.18.6"
 
-"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4":
+"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4", "@babel/preset-env@^7.18.2":
   version "7.18.9"
   resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.9.tgz#9b3425140d724fbe590322017466580844c7eaff"
   integrity sha512-75pt/q95cMIHWssYtyfjVlvI+QEZQThQbKvR9xH+F/Agtw/s4Wfc2V9Bwd/P39VtixB7oWxGdH4GteTTwYJWMg==
@@ -998,7 +996,7 @@
     "@babel/types" "^7.4.4"
     esutils "^2.0.2"
 
-"@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0":
+"@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0", "@babel/preset-react@^7.17.12":
   version "7.18.6"
   resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d"
   integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==
@@ -1010,7 +1008,7 @@
     "@babel/plugin-transform-react-jsx-development" "^7.18.6"
     "@babel/plugin-transform-react-pure-annotations" "^7.18.6"
 
-"@babel/preset-typescript@^7.16.0":
+"@babel/preset-typescript@^7.16.0", "@babel/preset-typescript@^7.17.12":
   version "7.18.6"
   resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399"
   integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==
@@ -1027,7 +1025,7 @@
     core-js-pure "^3.20.2"
     regenerator-runtime "^0.13.4"
 
-"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
+"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
   version "7.18.9"
   resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a"
   integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==
@@ -1043,7 +1041,7 @@
     "@babel/parser" "^7.18.6"
     "@babel/types" "^7.18.6"
 
-"@babel/traverse@^7.13.0", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2":
+"@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2":
   version "7.18.9"
   resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.9.tgz#deeff3e8f1bad9786874cb2feda7a2d77a904f98"
   integrity sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==
@@ -1059,7 +1057,7 @@
     debug "^4.1.0"
     globals "^11.1.0"
 
-"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
+"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.18.4", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
   version "7.18.9"
   resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.9.tgz#7148d64ba133d8d73a41b3172ac4b83a1452205f"
   integrity sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==
@@ -1212,15 +1210,20 @@
   dependencies:
     "@hapi/hoek" "^9.0.0"
 
-"@humanwhocodes/config-array@^0.9.2":
-  version "0.9.5"
-  resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7"
-  integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==
+"@humanwhocodes/config-array@^0.10.4":
+  version "0.10.4"
+  resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.4.tgz#01e7366e57d2ad104feea63e72248f22015c520c"
+  integrity sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==
   dependencies:
     "@humanwhocodes/object-schema" "^1.2.1"
     debug "^4.1.1"
     minimatch "^3.0.4"
 
+"@humanwhocodes/gitignore-to-minimatch@^1.0.2":
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d"
+  integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==
+
 "@humanwhocodes/object-schema@^1.2.1":
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
@@ -1740,6 +1743,16 @@
   dependencies:
     "@babel/runtime" "^7.13.10"
 
+"@reduxjs/toolkit@^1.8.3":
+  version "1.8.3"
+  resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.8.3.tgz#9c6a9c497bde43a67618d37a4175a00ae12efeb2"
+  integrity sha512-lU/LDIfORmjBbyDLaqFN2JB9YmAT1BElET9y0ZszwhSBa5Ef3t6o5CrHupw5J1iOXwd+o92QfQZ8OJpwXvsssg==
+  dependencies:
+    immer "^9.0.7"
+    redux "^4.1.2"
+    redux-thunk "^2.4.1"
+    reselect "^4.1.5"
+
 "@rollup/plugin-babel@^5.2.0":
   version "5.3.1"
   resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283"
@@ -1800,9 +1813,9 @@
   integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==
 
 "@sinclair/typebox@^0.24.1":
-  version "0.24.20"
-  resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.20.tgz#11a657875de6008622d53f56e063a6347c51a6dd"
-  integrity sha512-kVaO5aEFZb33nPMTZBxiPEkY+slxiPtqC7QX8f9B3eGOMBvEfuMfxp9DSTTCsRJPumPKjrge4yagyssO4q6qzQ==
+  version "0.24.24"
+  resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.24.tgz#1c201951882b0954b0689b0047584776e0053c1f"
+  integrity sha512-YaQ015FMwcveHbmI7w7X19f979CUCut2sf1gryWVV5nkAFr598jUhSpByKaC2BSBtJLT9lrDBfEo0Y2IFNipMQ==
 
 "@sindresorhus/is@^0.14.0":
   version "0.14.0"
@@ -1848,41 +1861,81 @@
   resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906"
   integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==
 
+"@svgr/babel-plugin-add-jsx-attribute@^6.3.1":
+  version "6.3.1"
+  resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.3.1.tgz#b9a5d84902be75a05ede92e70b338d28ab63fa74"
+  integrity sha512-jDBKArXYO1u0B1dmd2Nf8Oy6aTF5vLDfLoO9Oon/GLkqZ/NiggYWZA+a2HpUMH4ITwNqS3z43k8LWApB8S583w==
+
 "@svgr/babel-plugin-remove-jsx-attribute@^5.4.0":
   version "5.4.0"
   resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef"
   integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==
 
+"@svgr/babel-plugin-remove-jsx-attribute@^6.3.1":
+  version "6.3.1"
+  resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.3.1.tgz#4877995452efc997b36777abe1fde9705ef78e8b"
+  integrity sha512-dQzyJ4prwjcFd929T43Z8vSYiTlTu8eafV40Z2gO7zy/SV5GT+ogxRJRBIKWomPBOiaVXFg3jY4S5hyEN3IBjQ==
+
 "@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1":
   version "5.0.1"
   resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd"
   integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==
 
+"@svgr/babel-plugin-remove-jsx-empty-expression@^6.3.1":
+  version "6.3.1"
+  resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.3.1.tgz#2d67a0e92904c9be149a5b22d3a3797ce4d7b514"
+  integrity sha512-HBOUc1XwSU67fU26V5Sfb8MQsT0HvUyxru7d0oBJ4rA2s4HW3PhyAPC7fV/mdsSGpAvOdd8Wpvkjsr0fWPUO7A==
+
 "@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1":
   version "5.0.1"
   resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897"
   integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==
 
+"@svgr/babel-plugin-replace-jsx-attribute-value@^6.3.1":
+  version "6.3.1"
+  resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.3.1.tgz#306f5247139c53af70d1778f2719647c747998ee"
+  integrity sha512-C12e6aN4BXAolRrI601gPn5MDFCRHO7C4TM8Kks+rDtl8eEq+NN1sak0eAzJu363x3TmHXdZn7+Efd2nr9I5dA==
+
 "@svgr/babel-plugin-svg-dynamic-title@^5.4.0":
   version "5.4.0"
   resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7"
   integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==
 
+"@svgr/babel-plugin-svg-dynamic-title@^6.3.1":
+  version "6.3.1"
+  resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.3.1.tgz#6ce26d34cbc93eb81737ef528528907c292e7aa2"
+  integrity sha512-6NU55Mmh3M5u2CfCCt6TX29/pPneutrkJnnDCHbKZnjukZmmgUAZLtZ2g6ZoSPdarowaQmAiBRgAHqHmG0vuqA==
+
 "@svgr/babel-plugin-svg-em-dimensions@^5.4.0":
   version "5.4.0"
   resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0"
   integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==
 
+"@svgr/babel-plugin-svg-em-dimensions@^6.3.1":
+  version "6.3.1"
+  resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.3.1.tgz#5ade2a724b290873c30529d1d8cd23523856287a"
+  integrity sha512-HV1NGHYTTe1vCNKlBgq/gKuCSfaRlKcHIADn7P8w8U3Zvujdw1rmusutghJ1pZJV7pDt3Gt8ws+SVrqHnBO/Qw==
+
 "@svgr/babel-plugin-transform-react-native-svg@^5.4.0":
   version "5.4.0"
   resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80"
   integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==
 
+"@svgr/babel-plugin-transform-react-native-svg@^6.3.1":
+  version "6.3.1"
+  resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.3.1.tgz#d654f509d692c3a09dfb475757a44bd9f6ad7ddf"
+  integrity sha512-2wZhSHvTolFNeKDAN/ZmIeSz2O9JSw72XD+o2bNp2QAaWqa8KGpn5Yk5WHso6xqfSAiRzAE+GXlsrBO4UP9LLw==
+
 "@svgr/babel-plugin-transform-svg-component@^5.5.0":
   version "5.5.0"
   resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a"
   integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==
 
+"@svgr/babel-plugin-transform-svg-component@^6.3.1":
+  version "6.3.1"
+  resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.3.1.tgz#21a285dbffdce9567c437ebf0d081bf9210807e6"
+  integrity sha512-cZ8Tr6ZAWNUFfDeCKn/pGi976iWSkS8ijmEYKosP+6ktdZ7lW9HVLHojyusPw3w0j8PI4VBeWAXAmi/2G7owxw==
+
 "@svgr/babel-preset@^5.5.0":
   version "5.5.0"
   resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327"
@@ -1897,6 +1950,20 @@
     "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0"
     "@svgr/babel-plugin-transform-svg-component" "^5.5.0"
 
+"@svgr/babel-preset@^6.3.1":
+  version "6.3.1"
+  resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-6.3.1.tgz#8bd1ead79637d395e9362b01dd37cfd59702e152"
+  integrity sha512-tQtWtzuMMQ3opH7je+MpwfuRA1Hf3cKdSgTtAYwOBDfmhabP7rcTfBi3E7V3MuwJNy/Y02/7/RutvwS1W4Qv9g==
+  dependencies:
+    "@svgr/babel-plugin-add-jsx-attribute" "^6.3.1"
+    "@svgr/babel-plugin-remove-jsx-attribute" "^6.3.1"
+    "@svgr/babel-plugin-remove-jsx-empty-expression" "^6.3.1"
+    "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.3.1"
+    "@svgr/babel-plugin-svg-dynamic-title" "^6.3.1"
+    "@svgr/babel-plugin-svg-em-dimensions" "^6.3.1"
+    "@svgr/babel-plugin-transform-react-native-svg" "^6.3.1"
+    "@svgr/babel-plugin-transform-svg-component" "^6.3.1"
+
 "@svgr/core@^5.5.0":
   version "5.5.0"
   resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579"
@@ -1906,6 +1973,15 @@
     camelcase "^6.2.0"
     cosmiconfig "^7.0.0"
 
+"@svgr/core@^6.3.1":
+  version "6.3.1"
+  resolved "https://registry.yarnpkg.com/@svgr/core/-/core-6.3.1.tgz#752adf49d8d5473b15d76ca741961de093f715bd"
+  integrity sha512-Sm3/7OdXbQreemf9aO25keerZSbnKMpGEfmH90EyYpj1e8wMD4TuwJIb3THDSgRMWk1kYJfSRulELBy4gVgZUA==
+  dependencies:
+    "@svgr/plugin-jsx" "^6.3.1"
+    camelcase "^6.2.0"
+    cosmiconfig "^7.0.1"
+
 "@svgr/hast-util-to-babel-ast@^5.5.0":
   version "5.5.0"
   resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461"
@@ -1913,6 +1989,14 @@
   dependencies:
     "@babel/types" "^7.12.6"
 
+"@svgr/hast-util-to-babel-ast@^6.3.1":
+  version "6.3.1"
+  resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.3.1.tgz#59614e24d2a4a28010e02089213b3448d905769d"
+  integrity sha512-NgyCbiTQIwe3wHe/VWOUjyxmpUmsrBjdoIxKpXt3Nqc3TN30BpJG22OxBvVzsAh9jqep0w0/h8Ywvdk3D9niNQ==
+  dependencies:
+    "@babel/types" "^7.18.4"
+    entities "^4.3.0"
+
 "@svgr/plugin-jsx@^5.5.0":
   version "5.5.0"
   resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000"
@@ -1923,6 +2007,16 @@
     "@svgr/hast-util-to-babel-ast" "^5.5.0"
     svg-parser "^2.0.2"
 
+"@svgr/plugin-jsx@^6.3.1":
+  version "6.3.1"
+  resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-6.3.1.tgz#de7b2de824296b836d6b874d498377896e367f50"
+  integrity sha512-r9+0mYG3hD4nNtUgsTXWGYJomv/bNd7kC16zvsM70I/bGeoCi/3lhTmYqeN6ChWX317OtQCSZZbH4wq9WwoXbw==
+  dependencies:
+    "@babel/core" "^7.18.5"
+    "@svgr/babel-preset" "^6.3.1"
+    "@svgr/hast-util-to-babel-ast" "^6.3.1"
+    svg-parser "^2.0.4"
+
 "@svgr/plugin-svgo@^5.5.0":
   version "5.5.0"
   resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246"
@@ -1932,6 +2026,15 @@
     deepmerge "^4.2.2"
     svgo "^1.2.2"
 
+"@svgr/plugin-svgo@^6.3.1":
+  version "6.3.1"
+  resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-6.3.1.tgz#3c1ff2efaed10e5c5d35a6cae7bacaedc18b5d4a"
+  integrity sha512-yJIjTDKPYqzFVjmsbH5EdIwEsmKxjxdXSGJVLeUgwZOZPAkNQmD1v7LDbOdOKbR44FG8465Du+zWPdbYGnbMbw==
+  dependencies:
+    cosmiconfig "^7.0.1"
+    deepmerge "^4.2.2"
+    svgo "^2.8.0"
+
 "@svgr/webpack@^5.5.0":
   version "5.5.0"
   resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640"
@@ -1946,6 +2049,20 @@
     "@svgr/plugin-svgo" "^5.5.0"
     loader-utils "^2.0.0"
 
+"@svgr/webpack@^6.2.1":
+  version "6.3.1"
+  resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-6.3.1.tgz#001d03236ebb03bf47c0a4b92d5423e05095ebe6"
+  integrity sha512-eODxwIUShLxSMaRjzJtrj9wg89D75JLczvWg9SaB5W+OtVTkiC1vdGd8+t+pf5fTlBOy4RRXAq7x1E3DUl3D0A==
+  dependencies:
+    "@babel/core" "^7.18.5"
+    "@babel/plugin-transform-react-constant-elements" "^7.17.12"
+    "@babel/preset-env" "^7.18.2"
+    "@babel/preset-react" "^7.17.12"
+    "@babel/preset-typescript" "^7.17.12"
+    "@svgr/core" "^6.3.1"
+    "@svgr/plugin-jsx" "^6.3.1"
+    "@svgr/plugin-svgo" "^6.3.1"
+
 "@szmarczak/http-timer@^1.1.2":
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421"
@@ -2106,9 +2223,9 @@
   integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==
 
 "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18":
-  version "4.17.29"
-  resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz#2a1795ea8e9e9c91b4a4bbe475034b20c1ec711c"
-  integrity sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==
+  version "4.17.30"
+  resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz#0f2f99617fa8f9696170c46152ccf7500b34ac04"
+  integrity sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==
   dependencies:
     "@types/node" "*"
     "@types/qs" "*"
@@ -2131,6 +2248,14 @@
   dependencies:
     "@types/node" "*"
 
+"@types/hoist-non-react-statics@^3.3.1":
+  version "3.3.1"
+  resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f"
+  integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==
+  dependencies:
+    "@types/react" "*"
+    hoist-non-react-statics "^3.3.0"
+
 "@types/html-minifier-terser@^6.0.0":
   version "6.1.0"
   resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35"
@@ -2180,20 +2305,20 @@
   resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
   integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==
 
-"@types/mime@^1":
-  version "1.3.2"
-  resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a"
-  integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==
+"@types/mime@*":
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.0.tgz#e9a9903894405c6a6551f1774df4e64d9804d69c"
+  integrity sha512-fccbsHKqFDXClBZTDLA43zl0+TbxyIwyzIzwwhvoJvhNjOErCdeX2xJbURimv2EbSVUGav001PaCJg4mZxMl4w==
 
 "@types/node@*":
-  version "18.0.6"
-  resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.6.tgz#0ba49ac517ad69abe7a1508bc9b3a5483df9d5d7"
-  integrity sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw==
+  version "18.6.3"
+  resolved "https://registry.yarnpkg.com/@types/node/-/node-18.6.3.tgz#4e4a95b6fe44014563ceb514b2598b3e623d1c98"
+  integrity sha512-6qKpDtoaYLM+5+AFChLhHermMQxc3TOEFIDzrZLPRGHPrLEwqFkkT5Kx3ju05g6X7uDPazz3jHbKPX0KzCjntg==
 
 "@types/node@^16.11.26":
-  version "16.11.45"
-  resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.45.tgz#155b13a33c665ef2b136f7f245fa525da419e810"
-  integrity sha512-3rKg/L5x0rofKuuUt5zlXzOnKyIHXmIu5R8A0TuNDMF2062/AOIDBciFIjToLEJ/9F9DzkHNot+BpNsMI1OLdQ==
+  version "16.11.47"
+  resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.47.tgz#efa9e3e0f72e7aa6a138055dace7437a83d9f91c"
+  integrity sha512-fpP+jk2zJ4VW66+wAMFoBJlx1bxmBKx4DUFf68UHgdGCOuyUTDlLWqsaNPJh7xhNDykyJ9eIzAygilP/4WoN8g==
 
 "@types/parse-json@^4.0.0":
   version "4.0.0"
@@ -2201,9 +2326,9 @@
   integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
 
 "@types/prettier@^2.1.5":
-  version "2.6.3"
-  resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.3.tgz#68ada76827b0010d0db071f739314fa429943d0a"
-  integrity sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg==
+  version "2.6.4"
+  resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.4.tgz#ad899dad022bab6b5a9f0a0fe67c2f7a4a8950ed"
+  integrity sha512-fOwvpvQYStpb/zHMx0Cauwywu9yLDmzWiiQBC7gJyq5tYLUXFZvDG7VK1B7WBxxjBJNKFOZ0zLoOQn8vmATbhw==
 
 "@types/prop-types@*":
   version "15.7.5"
@@ -2266,11 +2391,11 @@
     "@types/express" "*"
 
 "@types/serve-static@*", "@types/serve-static@^1.13.10":
-  version "1.13.10"
-  resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9"
-  integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==
+  version "1.15.0"
+  resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155"
+  integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==
   dependencies:
-    "@types/mime" "^1"
+    "@types/mime" "*"
     "@types/node" "*"
 
 "@types/sockjs@^0.3.33":
@@ -2297,6 +2422,11 @@
   resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756"
   integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==
 
+"@types/use-sync-external-store@^0.0.3":
+  version "0.0.3"
+  resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz#b6725d5f4af24ace33b36fafd295136e75509f43"
+  integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==
+
 "@types/ws@^8.5.1":
   version "8.5.3"
   resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d"
@@ -2324,13 +2454,13 @@
     "@types/yargs-parser" "*"
 
 "@typescript-eslint/eslint-plugin@^5.5.0":
-  version "5.30.7"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.7.tgz#1621dabc1ae4084310e19e9efc80dfdbb97e7493"
-  integrity sha512-l4L6Do+tfeM2OK0GJsU7TUcM/1oN/N25xHm3Jb4z3OiDU4Lj8dIuxX9LpVMS9riSXQs42D1ieX7b85/r16H9Fw==
+  version "5.31.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.31.0.tgz#cae1967b1e569e6171bbc6bec2afa4e0c8efccfe"
+  integrity sha512-VKW4JPHzG5yhYQrQ1AzXgVgX8ZAJEvCz0QI6mLRX4tf7rnFfh5D8SKm0Pq6w5PyNfAWJk6sv313+nEt3ohWMBQ==
   dependencies:
-    "@typescript-eslint/scope-manager" "5.30.7"
-    "@typescript-eslint/type-utils" "5.30.7"
-    "@typescript-eslint/utils" "5.30.7"
+    "@typescript-eslint/scope-manager" "5.31.0"
+    "@typescript-eslint/type-utils" "5.31.0"
+    "@typescript-eslint/utils" "5.31.0"
     debug "^4.3.4"
     functional-red-black-tree "^1.0.1"
     ignore "^5.2.0"
@@ -2339,75 +2469,75 @@
     tsutils "^3.21.0"
 
 "@typescript-eslint/experimental-utils@^5.0.0":
-  version "5.30.7"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.30.7.tgz#a815318385b7c81e57ddb5f640895cc08879035f"
-  integrity sha512-r218ZVL0zFBYzEq8/9K2ZhRgsmKUhm8xd3sWChgvTbmP98kHGuY83IUl64SS9fx9OSBM9vMLdzBfox4eDdm/ZQ==
+  version "5.31.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.31.0.tgz#f2b23ebeebd31358ce44cf5be7c3411127627b84"
+  integrity sha512-Yiar0ggNPyOsvrslJBdOo3jc3wjI6NnmWOQBA8WhR54YPbVqTNLuuHC6zxEt8FIgMozerxRlAncwznEjK+cJVA==
   dependencies:
-    "@typescript-eslint/utils" "5.30.7"
+    "@typescript-eslint/utils" "5.31.0"
 
 "@typescript-eslint/parser@^5.5.0":
-  version "5.30.7"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.30.7.tgz#99d09729392aec9e64b1de45cd63cb81a4ddd980"
-  integrity sha512-Rg5xwznHWWSy7v2o0cdho6n+xLhK2gntImp0rJroVVFkcYFYQ8C8UJTSuTw/3CnExBmPjycjmUJkxVmjXsld6A==
+  version "5.31.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.31.0.tgz#7f42d7dcc68a0a6d80a0f3d9a65063aee7bb8d2c"
+  integrity sha512-UStjQiZ9OFTFReTrN+iGrC6O/ko9LVDhreEK5S3edmXgR396JGq7CoX2TWIptqt/ESzU2iRKXAHfSF2WJFcWHw==
   dependencies:
-    "@typescript-eslint/scope-manager" "5.30.7"
-    "@typescript-eslint/types" "5.30.7"
-    "@typescript-eslint/typescript-estree" "5.30.7"
+    "@typescript-eslint/scope-manager" "5.31.0"
+    "@typescript-eslint/types" "5.31.0"
+    "@typescript-eslint/typescript-estree" "5.31.0"
     debug "^4.3.4"
 
-"@typescript-eslint/scope-manager@5.30.7":
-  version "5.30.7"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.30.7.tgz#8269a931ef1e5ae68b5eb80743cc515c4ffe3dd7"
-  integrity sha512-7BM1bwvdF1UUvt+b9smhqdc/eniOnCKxQT/kj3oXtj3LqnTWCAM0qHRHfyzCzhEfWX0zrW7KqXXeE4DlchZBKw==
+"@typescript-eslint/scope-manager@5.31.0":
+  version "5.31.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.31.0.tgz#f47a794ba84d9b818ab7f8f44fff55a61016c606"
+  integrity sha512-8jfEzBYDBG88rcXFxajdVavGxb5/XKXyvWgvD8Qix3EEJLCFIdVloJw+r9ww0wbyNLOTYyBsR+4ALNGdlalLLg==
   dependencies:
-    "@typescript-eslint/types" "5.30.7"
-    "@typescript-eslint/visitor-keys" "5.30.7"
+    "@typescript-eslint/types" "5.31.0"
+    "@typescript-eslint/visitor-keys" "5.31.0"
 
-"@typescript-eslint/type-utils@5.30.7":
-  version "5.30.7"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.30.7.tgz#5693dc3db6f313f302764282d614cfdbc8a9fcfd"
-  integrity sha512-nD5qAE2aJX/YLyKMvOU5jvJyku4QN5XBVsoTynFrjQZaDgDV6i7QHFiYCx10wvn7hFvfuqIRNBtsgaLe0DbWhw==
+"@typescript-eslint/type-utils@5.31.0":
+  version "5.31.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.31.0.tgz#70a0b7201360b5adbddb0c36080495aa08f6f3d9"
+  integrity sha512-7ZYqFbvEvYXFn9ax02GsPcEOmuWNg+14HIf4q+oUuLnMbpJ6eHAivCg7tZMVwzrIuzX3QCeAOqKoyMZCv5xe+w==
   dependencies:
-    "@typescript-eslint/utils" "5.30.7"
+    "@typescript-eslint/utils" "5.31.0"
     debug "^4.3.4"
     tsutils "^3.21.0"
 
-"@typescript-eslint/types@5.30.7":
-  version "5.30.7"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.30.7.tgz#18331487cc92d0f1fb1a6f580c8ec832528079d0"
-  integrity sha512-ocVkETUs82+U+HowkovV6uxf1AnVRKCmDRNUBUUo46/5SQv1owC/EBFkiu4MOHeZqhKz2ktZ3kvJJ1uFqQ8QPg==
+"@typescript-eslint/types@5.31.0":
+  version "5.31.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.31.0.tgz#7aa389122b64b18e473c1672fb3b8310e5f07a9a"
+  integrity sha512-/f/rMaEseux+I4wmR6mfpM2wvtNZb1p9hAV77hWfuKc3pmaANp5dLAZSiE3/8oXTYTt3uV9KW5yZKJsMievp6g==
 
-"@typescript-eslint/typescript-estree@5.30.7":
-  version "5.30.7"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.7.tgz#05da9f1b281985bfedcf62349847f8d168eecc07"
-  integrity sha512-tNslqXI1ZdmXXrHER83TJ8OTYl4epUzJC0aj2i4DMDT4iU+UqLT3EJeGQvJ17BMbm31x5scSwo3hPM0nqQ1AEA==
+"@typescript-eslint/typescript-estree@5.31.0":
+  version "5.31.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.31.0.tgz#eb92970c9d6e3946690d50c346fb9b1d745ee882"
+  integrity sha512-3S625TMcARX71wBc2qubHaoUwMEn+l9TCsaIzYI/ET31Xm2c9YQ+zhGgpydjorwQO9pLfR/6peTzS/0G3J/hDw==
   dependencies:
-    "@typescript-eslint/types" "5.30.7"
-    "@typescript-eslint/visitor-keys" "5.30.7"
+    "@typescript-eslint/types" "5.31.0"
+    "@typescript-eslint/visitor-keys" "5.31.0"
     debug "^4.3.4"
     globby "^11.1.0"
     is-glob "^4.0.3"
     semver "^7.3.7"
     tsutils "^3.21.0"
 
-"@typescript-eslint/utils@5.30.7", "@typescript-eslint/utils@^5.13.0":
-  version "5.30.7"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.30.7.tgz#7135be070349e9f7caa262b0ca59dc96123351bb"
-  integrity sha512-Z3pHdbFw+ftZiGUnm1GZhkJgVqsDL5CYW2yj+TB2mfXDFOMqtbzQi2dNJIyPqPbx9mv2kUxS1gU+r2gKlKi1rQ==
+"@typescript-eslint/utils@5.31.0", "@typescript-eslint/utils@^5.13.0":
+  version "5.31.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.31.0.tgz#e146fa00dca948bfe547d665b2138a2dc1b79acd"
+  integrity sha512-kcVPdQS6VIpVTQ7QnGNKMFtdJdvnStkqS5LeALr4rcwx11G6OWb2HB17NMPnlRHvaZP38hL9iK8DdE9Fne7NYg==
   dependencies:
     "@types/json-schema" "^7.0.9"
-    "@typescript-eslint/scope-manager" "5.30.7"
-    "@typescript-eslint/types" "5.30.7"
-    "@typescript-eslint/typescript-estree" "5.30.7"
+    "@typescript-eslint/scope-manager" "5.31.0"
+    "@typescript-eslint/types" "5.31.0"
+    "@typescript-eslint/typescript-estree" "5.31.0"
     eslint-scope "^5.1.1"
     eslint-utils "^3.0.0"
 
-"@typescript-eslint/visitor-keys@5.30.7":
-  version "5.30.7"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.7.tgz#c093abae75b4fd822bfbad9fc337f38a7a14909a"
-  integrity sha512-KrRXf8nnjvcpxDFOKej4xkD7657+PClJs5cJVSG7NNoCNnjEdc46juNAQt7AyuWctuCgs6mVRc1xGctEqrjxWw==
+"@typescript-eslint/visitor-keys@5.31.0":
+  version "5.31.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.31.0.tgz#b0eca264df01ce85dceb76aebff3784629258f54"
+  integrity sha512-ZK0jVxSjS4gnPirpVjXHz7mgdOsZUHzNYSfTw2yPa3agfbt9YfqaBiBZFSSxeBWnpWkzCxTfUpnzA3Vily/CSg==
   dependencies:
-    "@typescript-eslint/types" "5.30.7"
+    "@typescript-eslint/types" "5.31.0"
     eslint-visitor-keys "^3.3.0"
 
 "@use-gesture/core@10.2.17":
@@ -2610,7 +2740,7 @@ acorn@^7.0.0, acorn@^7.1.1:
   resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
   integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
 
-acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1:
+acorn@^8.2.4, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0:
   version "8.8.0"
   resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8"
   integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==
@@ -2851,12 +2981,12 @@ attr-accept@^2.2.2:
   integrity sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==
 
 autoprefixer@^10.4.7:
-  version "10.4.7"
-  resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.7.tgz#1db8d195f41a52ca5069b7593be167618edbbedf"
-  integrity sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==
+  version "10.4.8"
+  resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.8.tgz#92c7a0199e1cfb2ad5d9427bd585a3d75895b9e5"
+  integrity sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw==
   dependencies:
-    browserslist "^4.20.3"
-    caniuse-lite "^1.0.30001335"
+    browserslist "^4.21.3"
+    caniuse-lite "^1.0.30001373"
     fraction.js "^4.2.0"
     normalize-range "^0.1.2"
     picocolors "^1.0.0"
@@ -2946,20 +3076,20 @@ babel-plugin-named-asset-import@^0.3.8:
   integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==
 
 babel-plugin-polyfill-corejs2@^0.3.1:
-  version "0.3.1"
-  resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5"
-  integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz#e4c31d4c89b56f3cf85b92558954c66b54bd972d"
+  integrity sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==
   dependencies:
-    "@babel/compat-data" "^7.13.11"
-    "@babel/helper-define-polyfill-provider" "^0.3.1"
+    "@babel/compat-data" "^7.17.7"
+    "@babel/helper-define-polyfill-provider" "^0.3.2"
     semver "^6.1.1"
 
 babel-plugin-polyfill-corejs3@^0.5.2:
-  version "0.5.2"
-  resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72"
-  integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==
+  version "0.5.3"
+  resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7"
+  integrity sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==
   dependencies:
-    "@babel/helper-define-polyfill-provider" "^0.3.1"
+    "@babel/helper-define-polyfill-provider" "^0.3.2"
     core-js-compat "^3.21.0"
 
 babel-plugin-polyfill-regenerator@^0.3.1:
@@ -3122,15 +3252,15 @@ browser-process-hrtime@^1.0.0:
   resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626"
   integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
 
-browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.18.1, browserslist@^4.20.2, browserslist@^4.20.3, browserslist@^4.21.0, browserslist@^4.21.2:
-  version "4.21.2"
-  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.2.tgz#59a400757465535954946a400b841ed37e2b4ecf"
-  integrity sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==
+browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.18.1, browserslist@^4.20.2, browserslist@^4.20.3, browserslist@^4.21.0, browserslist@^4.21.3:
+  version "4.21.3"
+  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.3.tgz#5df277694eb3c48bc5c4b05af3e8b7e09c5a6d1a"
+  integrity sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==
   dependencies:
-    caniuse-lite "^1.0.30001366"
-    electron-to-chromium "^1.4.188"
+    caniuse-lite "^1.0.30001370"
+    electron-to-chromium "^1.4.202"
     node-releases "^2.0.6"
-    update-browserslist-db "^1.0.4"
+    update-browserslist-db "^1.0.5"
 
 bser@2.1.1:
   version "2.1.1"
@@ -3230,10 +3360,10 @@ caniuse-api@^3.0.0:
     lodash.memoize "^4.1.2"
     lodash.uniq "^4.5.0"
 
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001335, caniuse-lite@^1.0.30001366:
-  version "1.0.30001368"
-  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001368.tgz#c5c06381c6051cd863c45021475434e81936f713"
-  integrity sha512-wgfRYa9DenEomLG/SdWgQxpIyvdtH3NW8Vq+tB6AwR9e56iOIcu1im5F/wNdDf04XlKHXqIx4N8Jo0PemeBenQ==
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001370, caniuse-lite@^1.0.30001373:
+  version "1.0.30001373"
+  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001373.tgz#2dc3bc3bfcb5d5a929bec11300883040d7b4b4be"
+  integrity sha512-pJYArGHrPp3TUqQzFYRmP/lwJlj8RCbVe3Gd3eJQkAV8SAC6b19XS9BjMvRdvaS8RMkaTN8ZhoHP6S1y8zzwEQ==
 
 case-sensitive-paths-webpack-plugin@^2.4.0:
   version "2.4.0"
@@ -3314,6 +3444,11 @@ cjs-module-lexer@^1.0.0:
   resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40"
   integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==
 
+classnames@^2.3.1:
+  version "2.3.1"
+  resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e"
+  integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==
+
 clean-css@^5.2.2:
   version "5.3.1"
   resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.1.tgz#d0610b0b90d125196a2894d35366f734e5d7aa32"
@@ -3485,7 +3620,7 @@ config-chain@^1.1.11:
     ini "^1.3.4"
     proto-list "~1.2.1"
 
-confusing-browser-globals@^1.0.11:
+confusing-browser-globals@^1.0.10, confusing-browser-globals@^1.0.11:
   version "1.0.11"
   resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81"
   integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==
@@ -3525,22 +3660,22 @@ cookie@0.5.0:
   integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
 
 core-js-compat@^3.21.0, core-js-compat@^3.22.1:
-  version "3.23.5"
-  resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.23.5.tgz#11edce2f1c4f69a96d30ce77c805ce118909cd5b"
-  integrity sha512-fHYozIFIxd+91IIbXJgWd/igXIc8Mf9is0fusswjnGIWVG96y2cwyUdlCkGOw6rMLHKAxg7xtCIVaHsyOUnJIg==
+  version "3.24.1"
+  resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.24.1.tgz#d1af84a17e18dfdd401ee39da9996f9a7ba887de"
+  integrity sha512-XhdNAGeRnTpp8xbD+sR/HFDK9CbeeeqXT6TuofXh3urqEevzkWmLRgrVoykodsw8okqo2pu1BOmuCKrHx63zdw==
   dependencies:
-    browserslist "^4.21.2"
+    browserslist "^4.21.3"
     semver "7.0.0"
 
 core-js-pure@^3.20.2, core-js-pure@^3.8.1:
-  version "3.23.5"
-  resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.23.5.tgz#23daaa9af9230e50f10b0fa4b8e6b87402be4c33"
-  integrity sha512-8t78LdpKSuCq4pJYCYk8hl7XEkAX+BP16yRIwL3AanTksxuEf7CM83vRyctmiEL8NDZ3jpUcv56fk9/zG3aIuw==
+  version "3.24.1"
+  resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.24.1.tgz#8839dde5da545521bf282feb7dc6d0b425f39fd3"
+  integrity sha512-r1nJk41QLLPyozHUUPmILCEMtMw24NG4oWK6RbsDdjzQgg9ZvrUsPBj1MnG0wXXp1DCDU6j+wUvEmBSrtRbLXg==
 
 core-js@^3.19.2:
-  version "3.23.5"
-  resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.23.5.tgz#1f82b0de5eece800827a2f59d597509c67650475"
-  integrity sha512-7Vh11tujtAZy82da4duVreQysIoO2EvVrur7y6IzZkH1IHPSekuDi8Vuw1+YKjkbfWLRD7Nc9ICQ/sIUDutcyg==
+  version "3.24.1"
+  resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.24.1.tgz#cf7724d41724154010a6576b7b57d94c5d66e64f"
+  integrity sha512-0QTBSYSUZ6Gq21utGzkfITDylE8jWC9Ne1D2MrhvlsZBI1x39OdDIVbzSqtgMndIy6BlHxBXpMGqzZmnztg2rg==
 
 core-util-is@~1.0.0:
   version "1.0.3"
@@ -3558,7 +3693,7 @@ cosmiconfig@^6.0.0:
     path-type "^4.0.0"
     yaml "^1.7.2"
 
-cosmiconfig@^7.0.0:
+cosmiconfig@^7.0.0, cosmiconfig@^7.0.1:
   version "7.0.1"
   resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d"
   integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==
@@ -3815,9 +3950,9 @@ data-urls@^2.0.0:
     whatwg-url "^8.0.0"
 
 date-fns@^2.16.1:
-  version "2.28.0"
-  resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2"
-  integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==
+  version "2.29.1"
+  resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.1.tgz#9667c2615525e552b5135a3116b95b1961456e60"
+  integrity sha512-dlLD5rKaKxpFdnjrs+5azHDFOPEu4ANy/LTh04A1DTzMM7qoajmKCBc8pkKRFT41CNzw+4gQh79X5C+Jq27HAw==
 
 debug@2.6.9, debug@^2.2.0, debug@^2.6.0, debug@^2.6.9:
   version "2.6.9"
@@ -4122,15 +4257,15 @@ electron-is-dev@^2.0.0:
   resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-2.0.0.tgz#833487a069b8dad21425c67a19847d9064ab19bd"
   integrity sha512-3X99K852Yoqu9AcW50qz3ibYBWY79/pBhlMCab8ToEWS48R0T9tyxRiQhwylE7zQdXrMnx2JKqUJyMPmt5FBqA==
 
-electron-to-chromium@^1.4.188:
-  version "1.4.197"
-  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.197.tgz#172054244cca16320ebc19459bd03d8a9018ff73"
-  integrity sha512-7EZCIDDraA2NUaHewLaAh6T63cZzgBmgDx/iiaeZ/pjSs36bOFEJ3hLIrn1TKCFhV0PEZZKu6qFPrxa/LGAzLg==
+electron-to-chromium@^1.4.202:
+  version "1.4.206"
+  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.206.tgz#580ff85b54d7ec0c05f20b1e37ea0becdd7b0ee4"
+  integrity sha512-h+Fadt1gIaQ06JaIiyqPsBjJ08fV5Q7md+V8bUvQW/9OvXfL2LRICTz2EcnnCP7QzrFTS6/27MRV6Bl9Yn97zA==
 
 electron@^19.0.4:
-  version "19.0.9"
-  resolved "https://registry.yarnpkg.com/electron/-/electron-19.0.9.tgz#e95bc18e14aac0af1290fcc7045001ef5ad96a64"
-  integrity sha512-ooEwrv8Y7NSzdhKcl6kPCYecnzcg5nFWuS5ryG+VFH3MMBR8zXh9nW2wLsZrBz6OGUxXrcc5BKBC7dA8C6RhGQ==
+  version "19.0.10"
+  resolved "https://registry.yarnpkg.com/electron/-/electron-19.0.10.tgz#4d2f03f307fbb70a295ff419112130b75661eda9"
+  integrity sha512-EiWtPWdD7CzkRkp1cw7t0N9W2qhI5XZOudHX7daOh5wI076nsdV2dtlAf/XyTHhPNoKR5qhTWrSnYL9PY6D1vg==
   dependencies:
     "@electron/get" "^1.14.1"
     "@types/node" "^16.11.26"
@@ -4189,7 +4324,7 @@ engine.io-parser@~5.0.3:
   resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.4.tgz#0b13f704fa9271b3ec4f33112410d8f3f41d0fc0"
   integrity sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==
 
-enhanced-resolve@^5.9.3:
+enhanced-resolve@^5.10.0:
   version "5.10.0"
   resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6"
   integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==
@@ -4202,6 +4337,11 @@ entities@^2.0.0:
   resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
   integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
 
+entities@^4.3.0:
+  version "4.3.1"
+  resolved "https://registry.yarnpkg.com/entities/-/entities-4.3.1.tgz#c34062a94c865c322f9d67b4384e4169bcede6a4"
+  integrity sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==
+
 env-paths@^2.2.0:
   version "2.2.1"
   resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
@@ -4344,6 +4484,30 @@ escodegen@^2.0.0:
   optionalDependencies:
     source-map "~0.6.1"
 
+eslint-config-airbnb-base@^15.0.0:
+  version "15.0.0"
+  resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz#6b09add90ac79c2f8d723a2580e07f3925afd236"
+  integrity sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==
+  dependencies:
+    confusing-browser-globals "^1.0.10"
+    object.assign "^4.1.2"
+    object.entries "^1.1.5"
+    semver "^6.3.0"
+
+eslint-config-airbnb@19.0.4:
+  version "19.0.4"
+  resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz#84d4c3490ad70a0ffa571138ebcdea6ab085fdc3"
+  integrity sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==
+  dependencies:
+    eslint-config-airbnb-base "^15.0.0"
+    object.assign "^4.1.2"
+    object.entries "^1.1.5"
+
+eslint-config-prettier@^8.5.0:
+  version "8.5.0"
+  resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1"
+  integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==
+
 eslint-config-react-app@^7.0.1:
   version "7.0.1"
   resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz#73ba3929978001c5c86274c017ea57eb5fa644b4"
@@ -4438,7 +4602,7 @@ eslint-plugin-react-hooks@^4.3.0:
   resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3"
   integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==
 
-eslint-plugin-react@^7.27.1:
+eslint-plugin-react@^7.27.1, eslint-plugin-react@^7.28.0:
   version "7.30.1"
   resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz#2be4ab23ce09b5949c6631413ba64b2810fd3e22"
   integrity sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==
@@ -4459,9 +4623,9 @@ eslint-plugin-react@^7.27.1:
     string.prototype.matchall "^4.0.7"
 
 eslint-plugin-testing-library@^5.0.1:
-  version "5.5.1"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.5.1.tgz#6fe602f9082a421b471bbae8aed692e26fe981b3"
-  integrity sha512-plLEkkbAKBjPxsLj7x4jNapcHAg2ernkQlKKrN2I8NrQwPISZHyCUNvg5Hv3EDqOQReToQb5bnqXYbkijJPE/g==
+  version "5.6.0"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.6.0.tgz#91e810ecb838f86decc9b5202876c87e42d73ea7"
+  integrity sha512-y63TRzPhGCMNsnUwMGJU1MFWc/3GvYw+nzobp9QiyNTTKsgAt5RKAOT1I34+XqVBpX1lC8bScoOjCkP7iRv0Mw==
   dependencies:
     "@typescript-eslint/utils" "^5.13.0"
 
@@ -4509,13 +4673,14 @@ eslint-webpack-plugin@^3.1.1:
     normalize-path "^3.0.0"
     schema-utils "^4.0.0"
 
-eslint@^8.3.0:
-  version "8.20.0"
-  resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.20.0.tgz#048ac56aa18529967da8354a478be4ec0a2bc81b"
-  integrity sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==
+eslint@^8.2.0, eslint@^8.3.0:
+  version "8.21.0"
+  resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.21.0.tgz#1940a68d7e0573cef6f50037addee295ff9be9ef"
+  integrity sha512-/XJ1+Qurf1T9G2M5IHrsjp+xrGT73RZf23xA1z5wB1ZzzEAWSZKvRwhWxTFp1rvkvCfwcvAUNAP31bhKTTGfDA==
   dependencies:
     "@eslint/eslintrc" "^1.3.0"
-    "@humanwhocodes/config-array" "^0.9.2"
+    "@humanwhocodes/config-array" "^0.10.4"
+    "@humanwhocodes/gitignore-to-minimatch" "^1.0.2"
     ajv "^6.10.0"
     chalk "^4.0.0"
     cross-spawn "^7.0.2"
@@ -4525,14 +4690,17 @@ eslint@^8.3.0:
     eslint-scope "^7.1.1"
     eslint-utils "^3.0.0"
     eslint-visitor-keys "^3.3.0"
-    espree "^9.3.2"
+    espree "^9.3.3"
     esquery "^1.4.0"
     esutils "^2.0.2"
     fast-deep-equal "^3.1.3"
     file-entry-cache "^6.0.1"
+    find-up "^5.0.0"
     functional-red-black-tree "^1.0.1"
     glob-parent "^6.0.1"
     globals "^13.15.0"
+    globby "^11.1.0"
+    grapheme-splitter "^1.0.4"
     ignore "^5.2.0"
     import-fresh "^3.0.0"
     imurmurhash "^0.1.4"
@@ -4550,12 +4718,12 @@ eslint@^8.3.0:
     text-table "^0.2.0"
     v8-compile-cache "^2.0.3"
 
-espree@^9.3.2:
-  version "9.3.2"
-  resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596"
-  integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==
+espree@^9.3.2, espree@^9.3.3:
+  version "9.3.3"
+  resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.3.tgz#2dd37c4162bb05f433ad3c1a52ddf8a49dc08e9d"
+  integrity sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==
   dependencies:
-    acorn "^8.7.1"
+    acorn "^8.8.0"
     acorn-jsx "^5.3.2"
     eslint-visitor-keys "^3.3.0"
 
@@ -5181,6 +5349,11 @@ graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4,
   resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
   integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
 
+grapheme-splitter@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e"
+  integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
+
 gzip-size@^6.0.0:
   version "6.0.0"
   resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462"
@@ -5244,6 +5417,13 @@ he@^1.2.0:
   resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
   integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
 
+hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2:
+  version "3.3.2"
+  resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
+  integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
+  dependencies:
+    react-is "^16.7.0"
+
 hoopy@^0.1.4:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d"
@@ -5407,10 +5587,10 @@ icss-utils@^5.0.0, icss-utils@^5.1.0:
   resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae"
   integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==
 
-idb@^6.1.4:
-  version "6.1.5"
-  resolved "https://registry.yarnpkg.com/idb/-/idb-6.1.5.tgz#dbc53e7adf1ac7c59f9b2bf56e00b4ea4fce8c7b"
-  integrity sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw==
+idb@^7.0.1:
+  version "7.0.2"
+  resolved "https://registry.yarnpkg.com/idb/-/idb-7.0.2.tgz#7a067e20dd16539938e456814b7d714ba8db3892"
+  integrity sha512-jjKrT1EnyZewQ/gCBb/eyiYrhGzws2FeY92Yx8qT9S9GeQAmo4JFVIiWRIfKW/6Ob9A+UDAOW9j9jn58fy2HIg==
 
 identity-obj-proxy@^3.0.0:
   version "3.0.0"
@@ -6496,7 +6676,7 @@ levn@~0.3.0:
     prelude-ls "~1.1.2"
     type-check "~0.3.2"
 
-lilconfig@^2.0.3, lilconfig@^2.0.5:
+lilconfig@^2.0.3, lilconfig@^2.0.5, lilconfig@^2.0.6:
   version "2.0.6"
   resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.6.tgz#32a384558bd58af3d4c6e077dd1ad1d397bc69d4"
   integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==
@@ -8059,7 +8239,7 @@ react-error-overlay@^6.0.11:
   resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb"
   integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==
 
-react-is@^16.13.1:
+react-is@^16.13.1, react-is@^16.7.0:
   version "16.13.1"
   resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
   integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
@@ -8074,6 +8254,18 @@ react-is@^18.0.0:
   resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
   integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
 
+react-redux@^8.0.2:
+  version "8.0.2"
+  resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-8.0.2.tgz#bc2a304bb21e79c6808e3e47c50fe1caf62f7aad"
+  integrity sha512-nBwiscMw3NoP59NFCXFf02f8xdo+vSHT/uZ1ldDwF7XaTpzm+Phk97VT4urYBl5TYAPNVaFm12UHAEyzkpNzRA==
+  dependencies:
+    "@babel/runtime" "^7.12.1"
+    "@types/hoist-non-react-statics" "^3.3.1"
+    "@types/use-sync-external-store" "^0.0.3"
+    hoist-non-react-statics "^3.3.2"
+    react-is "^18.0.0"
+    use-sync-external-store "^1.0.0"
+
 react-refresh@^0.11.0:
   version "0.11.0"
   resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046"
@@ -8192,6 +8384,18 @@ redent@^3.0.0:
     indent-string "^4.0.0"
     strip-indent "^3.0.0"
 
+redux-thunk@^2.4.1:
+  version "2.4.1"
+  resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.4.1.tgz#0dd8042cf47868f4b29699941de03c9301a75714"
+  integrity sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q==
+
+redux@^4.1.2, redux@^4.2.0:
+  version "4.2.0"
+  resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.0.tgz#46f10d6e29b6666df758780437651eeb2b969f13"
+  integrity sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==
+  dependencies:
+    "@babel/runtime" "^7.9.2"
+
 regenerate-unicode-properties@^10.0.1:
   version "10.0.1"
   resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56"
@@ -8290,6 +8494,11 @@ requires-port@^1.0.0:
   resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
   integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
 
+reselect@^4.1.5:
+  version "4.1.6"
+  resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.6.tgz#19ca2d3d0b35373a74dc1c98692cdaffb6602656"
+  integrity sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ==
+
 resolve-cwd@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
@@ -8388,9 +8597,9 @@ rollup-plugin-terser@^7.0.0:
     terser "^5.0.0"
 
 rollup@^2.43.1:
-  version "2.77.0"
-  resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.77.0.tgz#749eaa5ac09b6baa52acc076bc46613eddfd53f4"
-  integrity sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g==
+  version "2.77.2"
+  resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.77.2.tgz#6b6075c55f9cc2040a5912e6e062151e42e2c4e3"
+  integrity sha512-m/4YzYgLcpMQbxX3NmAqDvwLATZzxt8bIegO78FZLl+lAgKJBd1DRAOeEiZcKOIOPjxE6ewHWHNgGEalFXuz1g==
   optionalDependencies:
     fsevents "~2.3.2"
 
@@ -8996,7 +9205,7 @@ supports-preserve-symlinks-flag@^1.0.0:
   resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
   integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
 
-svg-parser@^2.0.2:
+svg-parser@^2.0.2, svg-parser@^2.0.4:
   version "2.0.4"
   resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5"
   integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==
@@ -9020,7 +9229,7 @@ svgo@^1.2.2:
     unquote "~1.1.1"
     util.promisify "~1.0.0"
 
-svgo@^2.7.0:
+svgo@^2.7.0, svgo@^2.8.0:
   version "2.8.0"
   resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24"
   integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==
@@ -9039,9 +9248,9 @@ symbol-tree@^3.2.4:
   integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
 
 tailwindcss@^3.0.2:
-  version "3.1.6"
-  resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.1.6.tgz#bcb719357776c39e6376a8d84e9834b2b19a49f1"
-  integrity sha512-7skAOY56erZAFQssT1xkpk+kWt2NrO45kORlxFPXUt3CiGsVPhH1smuH5XoDH6sGPXLyBv+zgCKA2HWBsgCytg==
+  version "3.1.7"
+  resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.1.7.tgz#ce99425f30a74e01457a2e6a724463b0df3159ac"
+  integrity sha512-r7mgumZ3k0InfVPpGWcX8X/Ut4xBfv+1O/+C73ar/m01LxGVzWvPxF/w6xIUPEztrCoz7axfx0SMdh8FH8ZvRQ==
   dependencies:
     arg "^5.0.2"
     chokidar "^3.5.3"
@@ -9052,7 +9261,7 @@ tailwindcss@^3.0.2:
     fast-glob "^3.2.11"
     glob-parent "^6.0.2"
     is-glob "^4.0.3"
-    lilconfig "^2.0.5"
+    lilconfig "^2.0.6"
     normalize-path "^3.0.0"
     object-hash "^3.0.0"
     picocolors "^1.0.0"
@@ -9306,9 +9515,9 @@ type@^1.0.1:
   integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==
 
 type@^2.5.0:
-  version "2.6.0"
-  resolved "https://registry.yarnpkg.com/type/-/type-2.6.0.tgz#3ca6099af5981d36ca86b78442973694278a219f"
-  integrity sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==
+  version "2.6.1"
+  resolved "https://registry.yarnpkg.com/type/-/type-2.6.1.tgz#808f389ec777205cc3cd97c1c88ec1a913105aae"
+  integrity sha512-OvgH5rB0XM+iDZGQ1Eg/o7IZn0XYJFVrN/9FQ4OWIYILyJJgVP2s1hLTOFn6UOZoDUI/HctGa0PFlE2n2HW3NQ==
 
 typedarray-to-buffer@^3.1.5:
   version "3.1.5"
@@ -9392,7 +9601,7 @@ upath@^1.2.0:
   resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
   integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
 
-update-browserslist-db@^1.0.4:
+update-browserslist-db@^1.0.5:
   version "1.0.5"
   resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz#be06a5eedd62f107b7c19eb5bcefb194411abf38"
   integrity sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==
@@ -9414,6 +9623,11 @@ url-parse-lax@^3.0.0:
   dependencies:
     prepend-http "^2.0.0"
 
+use-sync-external-store@^1.0.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a"
+  integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==
+
 utf-8-validate@^5.0.2:
   version "5.0.9"
   resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.9.tgz#ba16a822fbeedff1a58918f2a6a6b36387493ea3"
@@ -9507,7 +9721,7 @@ walker@^1.0.7:
   dependencies:
     makeerror "1.0.12"
 
-watchpack@^2.3.1:
+watchpack@^2.4.0:
   version "2.4.0"
   resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d"
   integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==
@@ -9613,20 +9827,20 @@ webpack-sources@^3.2.3:
   integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
 
 webpack@^5.64.4:
-  version "5.73.0"
-  resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.73.0.tgz#bbd17738f8a53ee5760ea2f59dce7f3431d35d38"
-  integrity sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==
+  version "5.74.0"
+  resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980"
+  integrity sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==
   dependencies:
     "@types/eslint-scope" "^3.7.3"
     "@types/estree" "^0.0.51"
     "@webassemblyjs/ast" "1.11.1"
     "@webassemblyjs/wasm-edit" "1.11.1"
     "@webassemblyjs/wasm-parser" "1.11.1"
-    acorn "^8.4.1"
+    acorn "^8.7.1"
     acorn-import-assertions "^1.7.6"
     browserslist "^4.14.5"
     chrome-trace-event "^1.0.2"
-    enhanced-resolve "^5.9.3"
+    enhanced-resolve "^5.10.0"
     es-module-lexer "^0.9.0"
     eslint-scope "5.1.1"
     events "^3.2.0"
@@ -9639,7 +9853,7 @@ webpack@^5.64.4:
     schema-utils "^3.1.0"
     tapable "^2.1.1"
     terser-webpack-plugin "^5.1.3"
-    watchpack "^2.3.1"
+    watchpack "^2.4.0"
     webpack-sources "^3.2.3"
 
 websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
@@ -9733,25 +9947,25 @@ word-wrap@^1.2.3, word-wrap@~1.2.3:
   resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
   integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
 
-workbox-background-sync@6.5.3:
-  version "6.5.3"
-  resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.5.3.tgz#7c66c1836aeca6f3762dc48d17a1852a33b3168c"
-  integrity sha512-0DD/V05FAcek6tWv9XYj2w5T/plxhDSpclIcAGjA/b7t/6PdaRkQ7ZgtAX6Q/L7kV7wZ8uYRJUoH11VjNipMZw==
+workbox-background-sync@6.5.4:
+  version "6.5.4"
+  resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz#3141afba3cc8aa2ae14c24d0f6811374ba8ff6a9"
+  integrity sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==
   dependencies:
-    idb "^6.1.4"
-    workbox-core "6.5.3"
+    idb "^7.0.1"
+    workbox-core "6.5.4"
 
-workbox-broadcast-update@6.5.3:
-  version "6.5.3"
-  resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.5.3.tgz#fc2ad79cf507e22950cda9baf1e9a0ccc43f31bc"
-  integrity sha512-4AwCIA5DiDrYhlN+Miv/fp5T3/whNmSL+KqhTwRBTZIL6pvTgE4lVuRzAt1JltmqyMcQ3SEfCdfxczuI4kwFQg==
+workbox-broadcast-update@6.5.4:
+  version "6.5.4"
+  resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz#8441cff5417cd41f384ba7633ca960a7ffe40f66"
+  integrity sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==
   dependencies:
-    workbox-core "6.5.3"
+    workbox-core "6.5.4"
 
-workbox-build@6.5.3:
-  version "6.5.3"
-  resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.5.3.tgz#38e3f286d63d2745bff4d1478bb3a6ab5c8b1170"
-  integrity sha512-8JNHHS7u13nhwIYCDea9MNXBNPHXCs5KDZPKI/ZNTr3f4sMGoD7hgFGecbyjX1gw4z6e9bMpMsOEJNyH5htA/w==
+workbox-build@6.5.4:
+  version "6.5.4"
+  resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.5.4.tgz#7d06d31eb28a878817e1c991c05c5b93409f0389"
+  integrity sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==
   dependencies:
     "@apideck/better-ajv-errors" "^0.3.1"
     "@babel/core" "^7.11.1"
@@ -9775,132 +9989,132 @@ workbox-build@6.5.3:
     strip-comments "^2.0.1"
     tempy "^0.6.0"
     upath "^1.2.0"
-    workbox-background-sync "6.5.3"
-    workbox-broadcast-update "6.5.3"
-    workbox-cacheable-response "6.5.3"
-    workbox-core "6.5.3"
-    workbox-expiration "6.5.3"
-    workbox-google-analytics "6.5.3"
-    workbox-navigation-preload "6.5.3"
-    workbox-precaching "6.5.3"
-    workbox-range-requests "6.5.3"
-    workbox-recipes "6.5.3"
-    workbox-routing "6.5.3"
-    workbox-strategies "6.5.3"
-    workbox-streams "6.5.3"
-    workbox-sw "6.5.3"
-    workbox-window "6.5.3"
-
-workbox-cacheable-response@6.5.3:
-  version "6.5.3"
-  resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.5.3.tgz#b1f8c2bc599a7be8f7e3c262535629c558738e47"
-  integrity sha512-6JE/Zm05hNasHzzAGKDkqqgYtZZL2H06ic2GxuRLStA4S/rHUfm2mnLFFXuHAaGR1XuuYyVCEey1M6H3PdZ7SQ==
-  dependencies:
-    workbox-core "6.5.3"
-
-workbox-core@6.5.3:
-  version "6.5.3"
-  resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.3.tgz#bca038a9ef0d7a634a6db2a60f45313ed22ac249"
-  integrity sha512-Bb9ey5n/M9x+l3fBTlLpHt9ASTzgSGj6vxni7pY72ilB/Pb3XtN+cZ9yueboVhD5+9cNQrC9n/E1fSrqWsUz7Q==
-
-workbox-expiration@6.5.3:
-  version "6.5.3"
-  resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.5.3.tgz#efc0811f371a2ede1052b9de1c4f072b71d50503"
-  integrity sha512-jzYopYR1zD04ZMdlbn/R2Ik6ixiXbi15c9iX5H8CTi6RPDz7uhvMLZPKEndZTpfgmUk8mdmT9Vx/AhbuCl5Sqw==
-  dependencies:
-    idb "^6.1.4"
-    workbox-core "6.5.3"
-
-workbox-google-analytics@6.5.3:
-  version "6.5.3"
-  resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.5.3.tgz#cc8c3a61f449131660a4ed2f5362d9a3599b18fe"
-  integrity sha512-3GLCHotz5umoRSb4aNQeTbILETcrTVEozSfLhHSBaegHs1PnqCmN0zbIy2TjTpph2AGXiNwDrWGF0AN+UgDNTw==
-  dependencies:
-    workbox-background-sync "6.5.3"
-    workbox-core "6.5.3"
-    workbox-routing "6.5.3"
-    workbox-strategies "6.5.3"
-
-workbox-navigation-preload@6.5.3:
-  version "6.5.3"
-  resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.5.3.tgz#81b74f598b11aa07e2cf1c21af7a826a4f0f70b3"
-  integrity sha512-bK1gDFTc5iu6lH3UQ07QVo+0ovErhRNGvJJO/1ngknT0UQ702nmOUhoN9qE5mhuQSrnK+cqu7O7xeaJ+Rd9Tmg==
-  dependencies:
-    workbox-core "6.5.3"
-
-workbox-precaching@6.5.3:
-  version "6.5.3"
-  resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.5.3.tgz#c870312b2ef901d790ab9e48da084e776c62af47"
-  integrity sha512-sjNfgNLSsRX5zcc63H/ar/hCf+T19fRtTqvWh795gdpghWb5xsfEkecXEvZ8biEi1QD7X/ljtHphdaPvXDygMQ==
-  dependencies:
-    workbox-core "6.5.3"
-    workbox-routing "6.5.3"
-    workbox-strategies "6.5.3"
-
-workbox-range-requests@6.5.3:
-  version "6.5.3"
-  resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.5.3.tgz#e624ac82ff266a5e4f236d055797def07949d941"
-  integrity sha512-pGCP80Bpn/0Q0MQsfETSfmtXsQcu3M2QCJwSFuJ6cDp8s2XmbUXkzbuQhCUzKR86ZH2Vex/VUjb2UaZBGamijA==
-  dependencies:
-    workbox-core "6.5.3"
-
-workbox-recipes@6.5.3:
-  version "6.5.3"
-  resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.5.3.tgz#15beac9d8ae7a3a1c100218094a824b4dd3fd59a"
-  integrity sha512-IcgiKYmbGiDvvf3PMSEtmwqxwfQ5zwI7OZPio3GWu4PfehA8jI8JHI3KZj+PCfRiUPZhjQHJ3v1HbNs+SiSkig==
-  dependencies:
-    workbox-cacheable-response "6.5.3"
-    workbox-core "6.5.3"
-    workbox-expiration "6.5.3"
-    workbox-precaching "6.5.3"
-    workbox-routing "6.5.3"
-    workbox-strategies "6.5.3"
-
-workbox-routing@6.5.3:
-  version "6.5.3"
-  resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.3.tgz#a0a699d8cc90b5692bd3df24679acbbda3913777"
-  integrity sha512-DFjxcuRAJjjt4T34RbMm3MCn+xnd36UT/2RfPRfa8VWJGItGJIn7tG+GwVTdHmvE54i/QmVTJepyAGWtoLPTmg==
-  dependencies:
-    workbox-core "6.5.3"
-
-workbox-strategies@6.5.3:
-  version "6.5.3"
-  resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.3.tgz#4bea9a48fee16cf43766e0d8138296773c8a9783"
-  integrity sha512-MgmGRrDVXs7rtSCcetZgkSZyMpRGw8HqL2aguszOc3nUmzGZsT238z/NN9ZouCxSzDu3PQ3ZSKmovAacaIhu1w==
-  dependencies:
-    workbox-core "6.5.3"
-
-workbox-streams@6.5.3:
-  version "6.5.3"
-  resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.5.3.tgz#b6860290031caa7d0e46ad7142315c94359c780b"
-  integrity sha512-vN4Qi8o+b7zj1FDVNZ+PlmAcy1sBoV7SC956uhqYvZ9Sg1fViSbOpydULOssVJ4tOyKRifH/eoi6h99d+sJ33w==
-  dependencies:
-    workbox-core "6.5.3"
-    workbox-routing "6.5.3"
-
-workbox-sw@6.5.3:
-  version "6.5.3"
-  resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.5.3.tgz#cd2f0c086f4496acd25774ed02c48504189bebdd"
-  integrity sha512-BQBzm092w+NqdIEF2yhl32dERt9j9MDGUTa2Eaa+o3YKL4Qqw55W9yQC6f44FdAHdAJrJvp0t+HVrfh8AiGj8A==
+    workbox-background-sync "6.5.4"
+    workbox-broadcast-update "6.5.4"
+    workbox-cacheable-response "6.5.4"
+    workbox-core "6.5.4"
+    workbox-expiration "6.5.4"
+    workbox-google-analytics "6.5.4"
+    workbox-navigation-preload "6.5.4"
+    workbox-precaching "6.5.4"
+    workbox-range-requests "6.5.4"
+    workbox-recipes "6.5.4"
+    workbox-routing "6.5.4"
+    workbox-strategies "6.5.4"
+    workbox-streams "6.5.4"
+    workbox-sw "6.5.4"
+    workbox-window "6.5.4"
+
+workbox-cacheable-response@6.5.4:
+  version "6.5.4"
+  resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz#a5c6ec0c6e2b6f037379198d4ef07d098f7cf137"
+  integrity sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==
+  dependencies:
+    workbox-core "6.5.4"
+
+workbox-core@6.5.4:
+  version "6.5.4"
+  resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.4.tgz#df48bf44cd58bb1d1726c49b883fb1dffa24c9ba"
+  integrity sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==
+
+workbox-expiration@6.5.4:
+  version "6.5.4"
+  resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.5.4.tgz#501056f81e87e1d296c76570bb483ce5e29b4539"
+  integrity sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==
+  dependencies:
+    idb "^7.0.1"
+    workbox-core "6.5.4"
+
+workbox-google-analytics@6.5.4:
+  version "6.5.4"
+  resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz#c74327f80dfa4c1954cbba93cd7ea640fe7ece7d"
+  integrity sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==
+  dependencies:
+    workbox-background-sync "6.5.4"
+    workbox-core "6.5.4"
+    workbox-routing "6.5.4"
+    workbox-strategies "6.5.4"
+
+workbox-navigation-preload@6.5.4:
+  version "6.5.4"
+  resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz#ede56dd5f6fc9e860a7e45b2c1a8f87c1c793212"
+  integrity sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==
+  dependencies:
+    workbox-core "6.5.4"
+
+workbox-precaching@6.5.4:
+  version "6.5.4"
+  resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.5.4.tgz#740e3561df92c6726ab5f7471e6aac89582cab72"
+  integrity sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==
+  dependencies:
+    workbox-core "6.5.4"
+    workbox-routing "6.5.4"
+    workbox-strategies "6.5.4"
+
+workbox-range-requests@6.5.4:
+  version "6.5.4"
+  resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz#86b3d482e090433dab38d36ae031b2bb0bd74399"
+  integrity sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==
+  dependencies:
+    workbox-core "6.5.4"
+
+workbox-recipes@6.5.4:
+  version "6.5.4"
+  resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.5.4.tgz#cca809ee63b98b158b2702dcfb741b5cc3e24acb"
+  integrity sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==
+  dependencies:
+    workbox-cacheable-response "6.5.4"
+    workbox-core "6.5.4"
+    workbox-expiration "6.5.4"
+    workbox-precaching "6.5.4"
+    workbox-routing "6.5.4"
+    workbox-strategies "6.5.4"
+
+workbox-routing@6.5.4:
+  version "6.5.4"
+  resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.4.tgz#6a7fbbd23f4ac801038d9a0298bc907ee26fe3da"
+  integrity sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==
+  dependencies:
+    workbox-core "6.5.4"
+
+workbox-strategies@6.5.4:
+  version "6.5.4"
+  resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.4.tgz#4edda035b3c010fc7f6152918370699334cd204d"
+  integrity sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==
+  dependencies:
+    workbox-core "6.5.4"
+
+workbox-streams@6.5.4:
+  version "6.5.4"
+  resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.5.4.tgz#1cb3c168a6101df7b5269d0353c19e36668d7d69"
+  integrity sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==
+  dependencies:
+    workbox-core "6.5.4"
+    workbox-routing "6.5.4"
+
+workbox-sw@6.5.4:
+  version "6.5.4"
+  resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.5.4.tgz#d93e9c67924dd153a61367a4656ff4d2ae2ed736"
+  integrity sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==
 
 workbox-webpack-plugin@^6.4.1:
-  version "6.5.3"
-  resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.3.tgz#c37bb323be4952311565c07db51054fe59c87d73"
-  integrity sha512-Es8Xr02Gi6Kc3zaUwR691ZLy61hz3vhhs5GztcklQ7kl5k2qAusPh0s6LF3wEtlpfs9ZDErnmy5SErwoll7jBA==
+  version "6.5.4"
+  resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz#baf2d3f4b8f435f3469887cf4fba2b7fac3d0fd7"
+  integrity sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg==
   dependencies:
     fast-json-stable-stringify "^2.1.0"
     pretty-bytes "^5.4.1"
     upath "^1.2.0"
     webpack-sources "^1.4.3"
-    workbox-build "6.5.3"
+    workbox-build "6.5.4"
 
-workbox-window@6.5.3:
-  version "6.5.3"
-  resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.3.tgz#4ade70056cb73477ef1cd8fea7cfd0ecbd825c7f"
-  integrity sha512-GnJbx1kcKXDtoJBVZs/P7ddP0Yt52NNy4nocjBpYPiRhMqTpJCNrSL+fGHZ/i/oP6p/vhE8II0sA6AZGKGnssw==
+workbox-window@6.5.4:
+  version "6.5.4"
+  resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.4.tgz#d991bc0a94dff3c2dbb6b84558cff155ca878e91"
+  integrity sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==
   dependencies:
     "@types/trusted-types" "^2.0.2"
-    workbox-core "6.5.3"
+    workbox-core "6.5.4"
 
 wrap-ansi@^7.0.0:
   version "7.0.0"
diff --git a/nerfactory/viewer/server/README.md b/nerfactory/viewer/server/README.md
new file mode 100644
index 0000000000..3554ebee77
--- /dev/null
+++ b/nerfactory/viewer/server/README.md
@@ -0,0 +1,20 @@
+# Python Kernel and Client Viewer App communication
+
+> The purpose of this document is to explain how to communicate from Python with the Client Viewer app. We will eventually move this into the read the docs.
+
+- Python Kernel (nerfactory code)
+- Bridge Server
+- Client Viewer App
+
+We have two types of components that we want to keep state updated in both locations.
+
+- Widgets
+  - The widgets are used to keep track of the
+- SceneNode
+  - The scene nodes are used to represent the three.js objects. The properties relevant to these objects are the following: `"object", "transform", "properties"`.
+
+# Checklist
+
+- [ ] Currently using request-reply (REQ, REP with zmq). I.e., Python Kernel -> Bridge Server <-> Client Viewer App. We want a way to update the Python Kernel when the Bridge Server is updated. This requries some form of binding with callbacks. When the Bridge Server is updated, we want to update the binded Python variable. We can take inspiration from [ipywidgets](https://ipywidgets.readthedocs.io/en/stable/examples/Widget%20Basics.html).
+
+- [ ]
\ No newline at end of file
diff --git a/nerfactory/viewer/server/cameras.py b/nerfactory/viewer/server/cameras.py
deleted file mode 100644
index 026592def3..0000000000
--- a/nerfactory/viewer/server/cameras.py
+++ /dev/null
@@ -1,137 +0,0 @@
-# Copyright 2022 The Plenoptix Team. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Logic to render Camera objects in the Viewer"""
-
-from typing import List, Optional, Tuple
-
-import cv2
-import numpy as np
-
-from . import geometry as g
-from .geometry import LineBasicMaterial, LineSegments, PointsGeometry
-
-
-class ImagePlane(g.Mesh):
-    """Returns an image rendered within a specified plane
-
-    Args:
-        image: image to be displayed
-        height: height of image. Defaults to 1.
-        width: width of image. Defaults to 1.
-    """
-
-    def __init__(self, image: np.ndarray, height: int = 1, width: int = 1):
-        # TODO(ethan): decide how to deal with the height and width
-        self.image = image
-        geometry = g.PlaneGeometry([width, height])
-        material = g.MeshBasicMaterial(
-            map=g.ImageTexture(image=g.PngImage(cv2.imencode(".png", self.image[:, :, ::-1])[1].tobytes()))
-        )
-        super().__init__(geometry, material)
-
-
-def get_camera_wireframe(scale: float = 0.3, f: int = 4, w: int = 1.5, h: int = 2) -> np.ndarray:
-    """Returns a wireframe of a 3D line-plot of a camera symbol.
-    At https://github.com/hangg7/mvs_visual/blob/275d382a824733a3187a8e3147be184dd6f14795/mvs_visual.py#L54.
-
-    Args:
-        scale: scale of rendering
-        f: this is the focal length
-        w: width
-        h: height
-
-    Returns:
-        np.ndarray: stack of points corresponding to wireframe of camera
-    """
-    ul = np.array([-w, h, -f])
-    ur = np.array([w, h, -f])
-    ll = np.array([-w, -h, -f])
-    lr = np.array([w, -h, -f])
-    C = np.zeros(3)
-    camera_points = [C, ul, C, ur, C, ll, C, lr, C, ul, ur, ul, lr, ur, lr, ll, ll, ul]
-    lines = np.stack(camera_points) * scale
-    return lines
-
-
-def get_plane_pts(
-    focal_length: Tuple[float, float] = (1.0, 1.0),
-    image_size: Tuple[int, int] = (10, 10),
-    camera_scale: int = 1,
-    scale_factor: float = 1 / 4,
-) -> np.ndarray:
-    """Returns points on the image plane given camera intrinsics
-
-    Args:
-        focal_length: focal length of camera. Defaults to (1.0, 1.0).
-        image_size: height and width of image. Defaults to (10, 10).
-        camera_scale: camera intrinsics scale. Defaults to 1.
-        scale_factor: image scale. Defaults to 1/4.
-    """
-    Z = -(focal_length[0] + focal_length[1]) / 2 * camera_scale
-    X0, Y0, X1, Y1 = (
-        -image_size[0] / 2 * camera_scale,
-        image_size[1] / 2 * camera_scale,
-        image_size[0] / 2 * camera_scale,
-        -image_size[1] / 2 * camera_scale,
-    )
-
-    # scale image to plane such that it can go outside of the x0x1 range.
-    W, H = X1 - X0, Y0 - Y1
-    w, h = image_size
-    ratio = min(w / W, h / H)
-    oW, oH = w / ratio, h / ratio  # pylint: disable=invalid-name
-
-    X0, Y0, X1, Y1 = -oW / 2, oH / 2, oW / 2, -oH / 2
-    wsteps, hsteps = int(w * scale_factor), int(h * scale_factor)
-    Ys, Xs = np.meshgrid(
-        np.linspace(Y0, Y1, num=hsteps),
-        np.linspace(X0, X1, num=wsteps),
-        indexing="ij",
-    )
-    Zs = np.ones_like(Xs) * Z
-    plane_pts = np.stack([Xs, Ys, Zs], axis=-1)
-    return plane_pts
-
-
-def frustum(
-    scale: float = 1.0,
-    color: Optional[List[float]] = None,
-    focal_length: int = 4,
-    width: float = 1.5,
-    height: int = 2,
-) -> LineSegments:
-    """Draws the camera frustums, returning line segments representing the frustums
-
-    Args:
-        scale: scale of the rendering. Defaults to 1.0.
-        color: color of lines. Defaults to [0, 0, 0].
-        focal_length: focal length of camera. Defaults to 4.
-        width: width of wireframe. Defaults to 1.5.
-        height: height of wireframe. Defaults to 2.
-    """
-    # color - color of lines using R, G, B. default is black
-    if color is None:
-        color = [0, 0, 0]
-
-    # TODO(ethan): make the scale adjustable depending on the camera size
-    # print("linewidth")
-    camera_wireframe_lines = get_camera_wireframe(scale=scale, f=focal_length, w=width / 2.0, h=height / 2.0)
-    N = len(camera_wireframe_lines)
-    colors = np.array([color for _ in range(N)])
-    line_segments = LineSegments(
-        PointsGeometry(position=camera_wireframe_lines.astype(np.float32).T, color=colors.astype(np.float32).T),
-        LineBasicMaterial(vertexColors=True),
-    )
-    return line_segments
diff --git a/nerfactory/viewer/server/commands.py b/nerfactory/viewer/server/commands.py
deleted file mode 100644
index fb71748f94..0000000000
--- a/nerfactory/viewer/server/commands.py
+++ /dev/null
@@ -1,144 +0,0 @@
-# Copyright 2022 The Plenoptix Team. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Commands callable from WebSocket Server bridge
-"""
-
-
-from dataclasses import dataclass
-from typing import Any, Dict, List
-
-import numpy as np
-
-from nerfactory.viewer.server.geometry import (
-    Mesh,
-    MeshPhongMaterial,
-    Object,
-    OrthographicCamera,
-    PerspectiveCamera,
-    Points,
-    PointsMaterial,
-)
-from nerfactory.viewer.server.path import Path
-
-
-class SetObject:  # pylint: disable=too-few-public-methods
-    """Set object command class: Instantiates and sets the object according to object type
-
-    Args:
-        geometry_or_object: object to be set
-        material: material to be set. Defaults to None.
-        path: path of object in tree. Defaults to None.
-
-    Raises:
-        ValueError: error if material is not set for object
-    """
-
-    __slots__ = ["object", "path"]
-
-    def __init__(self, geometry_or_object, material=None, path=None):
-        if isinstance(geometry_or_object, Object):
-            if material is not None:
-                raise ValueError("Please supply either an Object OR a Geometry and a Material")
-            self.object = geometry_or_object
-        elif isinstance(geometry_or_object, (OrthographicCamera, PerspectiveCamera)):
-            self.object = geometry_or_object
-        else:
-            if material is None:
-                material = MeshPhongMaterial()
-            if isinstance(material, PointsMaterial):
-                self.object = Points(geometry_or_object, material)
-            else:
-                self.object = Mesh(geometry_or_object, material)
-        if path is not None:
-            self.path = path
-        else:
-            self.path = Path()
-
-    def lower(self) -> Dict[str, Any]:
-        """creates properly formatted json"""
-        return {"type": "set_object", "object": self.object.lower(), "path": self.path.lower()}
-
-
-@dataclass
-class GetObject:
-    """Get object command class
-
-    Args:
-        path: path of object in tree. Defaults to None.
-    """
-
-    __slots__ = ["path"]
-
-    path: str
-
-    def lower(self) -> Dict[str, Any]:
-        """creates properly formatted json with object"""
-        return {"type": "get_object", "path": self.path.lower()}
-
-
-@dataclass
-class SetTransform:
-    """Set transform command class"""
-
-    __slots__ = ["matrix", "path"]
-
-    matrix: np.ndarray
-    path: str
-
-    def lower(self) -> Dict[str, Any]:
-        """creates properly formatted json with transform matrix"""
-        return {"type": "set_transform", "path": self.path.lower(), "matrix": list(self.matrix.T.flatten())}
-
-
-@dataclass
-class SetOutputOptions:
-    """Set output options command class"""
-
-    __slots__ = ["output_options", "path"]
-
-    output_options: List[str]
-    path: str
-
-    def lower(self) -> Dict[str, Any]:
-        """creates properly formatted json with list of possible output options"""
-        return {"type": "set_output_options", "path": self.path.lower(), "output_options": list(self.output_options)}
-
-
-@dataclass
-class Delete:
-    """Delete current state command class"""
-
-    __slots__ = ["path"]
-
-    path: str
-
-    def lower(self) -> Dict[str, Any]:
-        """creates properly formatted json updating tree"""
-        return {"type": "delete", "path": self.path.lower()}
-
-
-@dataclass
-class SetProperty:
-    """Set property command class"""
-
-    __slots__ = ["path", "key", "value"]
-
-    key: str
-    value: list
-    path: str
-
-    def lower(self) -> Dict[str, Any]:
-        """creates properly formatted json setting property"""
-        return {"type": "set_property", "path": self.path.lower(), "property": self.key.lower(), "value": self.value}
diff --git a/nerfactory/viewer/server/geometry.py b/nerfactory/viewer/server/geometry.py
deleted file mode 100644
index a0a822f742..0000000000
--- a/nerfactory/viewer/server/geometry.py
+++ /dev/null
@@ -1,914 +0,0 @@
-# Copyright 2022 The Plenoptix Team. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Geometry to render meshes, textures, etc.
-"""
-
-
-import base64
-import sys
-import uuid
-from typing import Any, BinaryIO, Dict, Iterable, List, Optional, Tuple
-
-import numpy as np
-import umsgpack
-
-UNICODE = str
-from io import BytesIO, StringIO
-
-
-class SceneElement:
-    """Base class for objects in the scene"""
-
-    def __init__(self):
-        self.uuid = UNICODE(uuid.uuid1())
-
-    def intrinsic_transform(self):  # pylint: disable=no-self-use
-        """function for intrinsic transformation"""
-        return np.identity(4)
-
-    def lower(self, object_data: Dict[str, Any]) -> Dict[str, Any]:  # pylint: disable=no-self-use
-        """Formatting contents of object dictionary, returns a dictionary of formatted content
-
-        Args:
-            object_data: object being sent via websocket
-        """
-        return object_data
-
-
-class ReferenceSceneElement(SceneElement):
-    """Generic scene element class"""
-
-    field = None
-
-    def lower_in_object(self, object_data: Dict[str, Any]) -> str:
-        """formatting contents of object dictionary, returns a dictionary of formatted content
-
-        Args:
-            object_data: object being sent via websocket
-        """
-        object_data.setdefault(self.field, []).append(self.lower(object_data))
-        return self.uuid
-
-
-class Geometry(ReferenceSceneElement):
-    """Geometry class"""
-
-    field = "geometries"
-
-
-class Material(ReferenceSceneElement):
-    """Material class"""
-
-    field = "materials"
-
-
-class Texture(ReferenceSceneElement):
-    """Texture class"""
-
-    field = "textures"
-
-
-class Image(ReferenceSceneElement):
-    """Image class"""
-
-    field = "images"
-
-
-class Box(Geometry):
-    """Box object
-
-    Args:
-        lengths: length of side of box
-    """
-
-    def __init__(self, lengths: List[float]):
-        super().__init__()
-        self.lengths = lengths
-
-    def lower(self, object_data):
-        return {
-            "uuid": self.uuid,
-            "type": "BoxGeometry",
-            "width": self.lengths[0],
-            "height": self.lengths[1],
-            "depth": self.lengths[2],
-        }
-
-
-class Sphere(Geometry):
-    """Sphere object
-
-    Args:
-        radius: radius of sphere
-    """
-
-    def __init__(self, radius: float):
-        super().__init__()
-        self.radius = radius
-
-    def lower(self, object_data):
-        return {
-            "uuid": self.uuid,
-            "type": "SphereGeometry",
-            "radius": self.radius,
-            "widthSegments": 20,
-            "heightSegments": 20,
-        }
-
-
-class Ellipsoid(Sphere):
-    """
-    An Ellipsoid is treated as a Sphere of unit radius, with an affine
-    transformation applied to distort it into the ellipsoidal shape
-
-    Args:
-        radii: the radii of epllipsoid
-    """
-
-    def __init__(self, radii: List[float]):
-        super().__init__(1.0)
-        self.radii = radii
-
-    def intrinsic_transform(self):
-        return np.diag(np.hstack((self.radii, 1.0)))
-
-
-class PlaneGeometry(Geometry):
-    """Plane Class
-
-    Args:
-        lengths: the height and width of plane
-    """
-
-    def __init__(self, lengths: List[float]):
-        super().__init__()
-        self.lengths = lengths
-
-    def lower(self, object_data):
-        return {"uuid": self.uuid, "type": "PlaneGeometry", "width": self.lengths[0], "height": self.lengths[1]}
-
-
-class Cylinder(Geometry):
-    """A cylinder of the given height and radius. By Three.js convention, the axis of
-    rotational symmetry is aligned with the y-axis.
-
-    Args:
-        height: height of cylinder
-        radius: radius for both top and bottom if top/bottom not given. Defaults to 1.0.
-        radius_top: radius of top. Defaults to None.
-        radius_bottom: radius of bottom. Defaults to None.
-    """
-
-    def __init__(
-        self,
-        height: int,
-        radius: float = 1.0,
-        radius_top: Optional[float] = None,
-        radius_bottom: Optional[float] = None,
-    ):
-        super().__init__()
-        if radius_top is not None and radius_bottom is not None:
-            self.radius_top = radius_top
-            self.radius_bottom = radius_bottom
-        else:
-            self.radius_top = radius
-            self.radius_bottom = radius
-        self.height = height
-        self.radial_segments = 50
-
-    def lower(self, object_data):
-        return {
-            "uuid": self.uuid,
-            "type": "CylinderGeometry",
-            "radiusTop": self.radius_top,
-            "radiusBottom": self.radius_bottom,
-            "height": self.height,
-            "radialSegments": self.radial_segments,
-        }
-
-
-class GenericMaterial(Material):
-    """Generic Material base class
-
-    Args:
-       color: color of material. Defaults to 0xFFFFFF.
-       reflectivity: reflectivity index. Defaults to 0.5.
-       map: texture map of object. Defaults to None.
-       transparent: transparency value. Defaults to None.
-       opacity: opacity value. Defaults to 1.0.
-       linewidth: width of lines. Defaults to 1.0.
-       wireframe: whether to render wireframe around object. Defaults to False.
-       wireframe_linewidth: width of wireframe lines. Defaults to 1.0.
-       vertex_colors: whether to render vertex colors. Defaults to False.
-    """
-
-    def __init__(
-        self,
-        color: int = 0xFFFFFF,
-        reflectivity: float = 0.5,
-        map: Optional[Texture] = None,  # pylint: disable=redefined-builtin
-        side: int = 2,
-        transparent: Optional[bool] = None,
-        opacity: float = 1.0,
-        linewidth: float = 1.0,
-        wireframe: bool = False,
-        wireframe_linewidth: float = 1.0,
-        vertex_colors: bool = False,
-        **kwargs,
-    ):
-        super().__init__()
-        self.color = color
-        self.reflectivity = reflectivity
-        self.map = map
-        self.side = side
-        self.transparent = transparent
-        self.opacity = opacity
-        self.linewidth = linewidth
-        self.wireframe = wireframe
-        self.wireframe_linewidth = wireframe_linewidth
-        self.vertex_colors = vertex_colors
-        self.properties = kwargs
-        self._type = self._type
-
-    def lower(self, object_data):
-        # Three.js allows a material to have an opacity which is != 1,
-        # but to still be non-transparent, in which case the opacity only
-        # serves to desaturate the material's color. That's a pretty odd
-        # combination of things to want, so by default we just use the
-        # opacity value to decide whether to set transparent to True or
-        # False.
-        if self.transparent is None:
-            transparent = bool(self.opacity != 1)
-        else:
-            transparent = self.transparent
-        data = {
-            "uuid": self.uuid,
-            "type": self._type,
-            "color": self.color,
-            "reflectivity": self.reflectivity,
-            "side": self.side,
-            "transparent": transparent,
-            "opacity": self.opacity,
-            "linewidth": self.linewidth,
-            "wireframe": bool(self.wireframe),
-            "wireframeLinewidth": self.wireframe_linewidth,
-            "vertexColors": (2 if self.vertex_colors else 0),  # three.js wants an enum
-        }
-        data.update(self.properties)
-        if self.map is not None:
-            data["map"] = self.map.lower_in_object(object_data)
-        return data
-
-
-class MeshBasicMaterial(GenericMaterial):
-    """Basic material mesh class"""
-
-    _type = "MeshBasicMaterial"
-
-
-class MeshPhongMaterial(GenericMaterial):
-    """Phong material mesh class"""
-
-    _type = "MeshPhongMaterial"
-
-
-class MeshLambertMaterial(GenericMaterial):
-    """Lambert material mesh class"""
-
-    _type = "MeshLambertMaterial"
-
-
-class MeshToonMaterial(GenericMaterial):
-    """Toon material mesh class"""
-
-    _type = "MeshToonMaterial"
-
-
-class LineBasicMaterial(GenericMaterial):
-    """Basic Line Material class"""
-
-    _type = "LineBasicMaterial"
-
-
-class PngImage(Image):
-    """Png Image"""
-
-    def __init__(self, data):
-        super().__init__()
-        self.data = data
-
-    @staticmethod
-    def from_file(fname: str):
-        """Read in png image from file
-
-        Args:
-            fname: file name to read image from
-        """
-        with open(fname, "rb") as f:
-            return PngImage(f.read())
-
-    def lower(self, object_data):
-        return {
-            "uuid": self.uuid,
-            "url": UNICODE("data:image/png;base64," + base64.b64encode(self.data).decode("ascii")),
-        }
-
-
-class GenericTexture(Texture):
-    """Generic texture class"""
-
-    def __init__(self, properties: Iterable):
-        super().__init__()
-        self.properties = properties
-
-    def lower(self, object_data):
-        data = {"uuid": self.uuid}
-        data.update(self.properties)
-        if "image" in data:
-            image = data["image"]
-            data["image"] = image.lower_in_object(object_data)
-        return data
-
-
-class ImageTexture(Texture):
-    """Image Texture class
-
-    Args:
-        image: image represented as byte array
-        wrap: wrap format. Defaults to None.
-        repeat: repeat format. Defaults to None.
-    """
-
-    def __init__(self, image: bytearray, wrap: List[int] = None, repeat: List[int] = None, **kwargs):
-        super().__init__()
-        if wrap is None:
-            wrap = [1001, 1001]
-        if repeat is None:
-            repeat = [1, 1]
-        self.image = image
-        self.wrap = wrap
-        self.repeat = repeat
-        self.properties = kwargs
-
-    def lower(self, object_data):
-        data = {
-            "uuid": self.uuid,
-            "wrap": self.wrap,
-            "repeat": self.repeat,
-            "image": self.image.lower_in_object(object_data),
-        }
-        data.update(self.properties)
-        return data
-
-
-class Object(SceneElement):
-    """Object element within scene
-
-    Args:
-        geometry: geometry of the object
-        material: material composition of object. Defaults to MeshPhongMaterial().
-    """
-
-    def __init__(self, geometry: Geometry, material: GenericMaterial = MeshPhongMaterial()):
-        super().__init__()
-        self.geometry = geometry
-        self.material = material
-        self._type = self._type
-
-    # pylint: arguments-differ
-    def lower(self):
-        data = {
-            "metadata": {
-                "version": 4.5,
-                "type": "Object",
-            },
-            "geometries": [],
-            "materials": [],
-            "object": {
-                "uuid": self.uuid,
-                "type": self._type,
-                "geometry": self.geometry.uuid,
-                "material": self.material.uuid,
-                "matrix": list(self.geometry.intrinsic_transform().flatten()),
-            },
-        }
-        self.geometry.lower_in_object(data)
-        self.material.lower_in_object(data)
-        return data
-
-
-class Mesh(Object):
-    """Mesh class"""
-
-    _type = "Mesh"
-
-
-class OrthographicCamera(SceneElement):
-    """Orthographic camera class
-    Args:
-        left: left bounds
-        right: right bounds
-        top: top bounds
-        bottom: bottom bounds
-        near: near plane
-        far: far plane
-        zoom: zoom param. Defaults to 1.
-    """
-
-    def __init__(self, left: float, right: float, top: float, bottom: float, near: float, far: float, zoom: int = 1):
-        super().__init__()
-        self.left = left
-        self.right = right
-        self.top = top
-        self.bottom = bottom
-        self.near = near
-        self.far = far
-        self.zoom = zoom
-
-    def lower(self, object_data):
-        data = {
-            "object": {
-                "uuid": self.uuid,
-                "type": "OrthographicCamera",
-                "left": self.left,
-                "right": self.right,
-                "top": self.top,
-                "bottom": self.bottom,
-                "near": self.near,
-                "far": self.far,
-                "zoom": self.zoom,
-            }
-        }
-        return data
-
-
-class PerspectiveCamera(SceneElement):
-    """
-    The PerspectiveCamera is the default camera used by the nerfactory viewer. See
-    https://threejs.org/docs/#api/en/cameras/PerspectiveCamera for more
-    information.
-
-    Args:
-        fov   : Camera frustum vertical field of view, from bottom to top of view, in degrees. Default is 50.
-        aspect: Camera frustum aspect ratio, usually the canvas width / canvas height. Default is 1 (square canvas).
-        near  : Camera frustum near plane. Default is 0.1. The valid range is greater than 0 and less than the current
-                value of the far plane. Note that, unlike for the OrthographicCamera, 0 is not a valid value for a
-                PerspectiveCamera's near plane.
-        far   : Camera frustum far plane. Default is 2000.
-        zoom  : Gets or sets the zoom factor of the camera. Default is 1.
-        film_gauge: Film size used for the larger axis. Default is 35 (millimeters). This parameter does not influence
-                   the projection matrix unless .filmOffset is set to a nonzero value.
-        film_offset: Horizontal off-center offset in the same unit as .filmGauge. Default is 0.
-        focus: Object distance used for stereoscopy and depth-of-field effects. This parameter does not influence
-               the projection matrix unless a StereoCamera is being used. Default is 10.
-    """
-
-    def __init__(
-        self,
-        fov: float = 50,
-        aspect: float = 1,
-        near: float = 0.1,
-        far: float = 2000,
-        zoom: int = 1,
-        film_gauge: float = 35,
-        film_offset: float = 0,
-        focus: float = 10,
-    ):
-        super().__init__()
-        self.fov = fov
-        self.aspect = aspect
-        self.far = far
-        self.near = near
-        self.zoom = zoom
-        self.film_gauge = film_gauge
-        self.film_offset = film_offset
-        self.focus = focus
-
-    def lower(self, object_data):
-        data = {
-            "object": {
-                "uuid": self.uuid,
-                "type": "PerspectiveCamera",
-                "aspect": self.aspect,
-                "far": self.far,
-                "filmGauge": self.film_gauge,
-                "filmOffset": self.film_offset,
-                "focus": self.focus,
-                "fov": self.fov,
-                "near": self.near,
-                "zoom": self.zoom,
-            }
-        }
-        return data
-
-
-def item_size(array: np.ndarray) -> int:
-    """Returns the size of the 1 or 2d numpy array
-
-    Args:
-        array: np array for which to get the size of
-
-    Raises:
-        ValueError: if n dimensions is not == 1 or 2
-    """
-    if array.ndim == 1:
-        return 1
-    if array.ndim == 2:
-        return array.shape[0]
-    raise ValueError(f"I can only pack 1- or 2-dimensional numpy arrays, but this one has {array.ndim:d} dimensions")
-
-
-def threejs_type(dtype: type) -> Tuple[str, int]:
-    """Converts the np type to 3js type, returns str name and hex of equivalent 3js type
-
-    Args:
-        dtype: np type
-
-    Raises:
-        ValueError: if unsupported datatype
-    """
-    if dtype == np.uint8:
-        return "Uint8Array", 0x12
-    if dtype == np.int32:
-        return "Int32Array", 0x15
-    if dtype == np.uint32:
-        return "Uint32Array", 0x16
-    if dtype == np.float32:
-        return "Float32Array", 0x17
-
-    raise ValueError("Unsupported datatype: " + str(dtype))
-
-
-def pack_numpy_array(x: np.ndarray) -> Dict[str, Any]:
-    """convert numpy array to byte-based message with context, returns serialized message
-
-    Args:
-        x: array to pack into message format
-    """
-    if x.dtype == np.float64:
-        x = x.astype(np.float32)
-    typename, extcode = threejs_type(x.dtype)
-    return {
-        "itemSize": item_size(x),
-        "type": typename,
-        "array": umsgpack.Ext(extcode, x.tobytes("F")),
-        "normalized": False,
-    }
-
-
-def data_from_stream(stream: BinaryIO) -> str:
-    """Read in data from some binary io stream and returns the serialized stream
-
-    Args:
-        stream: the stream in which data is being sent over
-
-    Raises:
-        ValueError: invalid stream type
-    """
-    if isinstance(stream, BytesIO):
-        data = stream.read().decode(encoding="utf-8")
-    elif isinstance(stream, StringIO):
-        data = stream.read()
-    else:
-        raise ValueError(f"Stream must be instance of StringIO or BytesIO, not {type(stream)}")
-    return data
-
-
-class MeshGeometry(Geometry):
-    """Basic mesh geometry class
-
-    Args:
-        contents: the stream of contents representing the mesh
-        mesh_format: specification of mesh format
-    """
-
-    def __init__(self, contents: bytearray, mesh_format: str):
-        super().__init__()
-        self.contents = contents
-        self.mesh_format = mesh_format
-
-    def lower(self, object_data):
-        return {"type": "_meshfile", "uuid": self.uuid, "format": self.mesh_format, "data": self.contents}
-
-
-class ObjMeshGeometry(MeshGeometry):
-    """Basic mesh geometry class
-
-    Args:
-        contents: the stream of contents representing the mesh
-    """
-
-    def __init__(self, contents: bytearray):
-        super().__init__(contents, "obj")
-
-    @staticmethod
-    def from_file(fname: str) -> MeshGeometry:
-        """Reading mesh geometry from file. Returns mesh geometry object
-
-        Args:
-            fname: file name to read from
-        """
-        with open(fname, encoding="utf8") as f:
-            return MeshGeometry(f.read(), "obj")
-
-    @staticmethod
-    def from_stream(f: BinaryIO) -> MeshGeometry:
-        """Reads mesh geometry from io stream. Returns mesh geometry object
-
-        Args:
-            f: binary io stream to read from
-        """
-        return MeshGeometry(data_from_stream(f), "obj")
-
-
-class DaeMeshGeometry(MeshGeometry):
-    """Basic DAE mesh geometry class
-
-    Args:
-        contents: the stream of contents representing the mesh
-    """
-
-    def __init__(self, contents: bytearray):
-        super().__init__(contents, "dae")
-
-    @staticmethod
-    def from_file(fname: str) -> MeshGeometry:
-        """Reading mesh geometry from file. Returns mesh geometry object
-
-        Args:
-            fname: file name to read from
-        """
-        with open(fname, encoding="utf8") as f:
-            return MeshGeometry(f.read(), "dae")
-
-    @staticmethod
-    def from_stream(f: BinaryIO) -> MeshGeometry:
-        """Reads mesh geometry from io stream. Returns mesh geometry object
-
-        Args:
-            f: binary io stream to read from
-        """
-        return MeshGeometry(data_from_stream(f), "dae")
-
-
-class StlMeshGeometry(MeshGeometry):
-    """Basic STL mesh geometry class
-
-    Args:
-        contents: the stream of contents representing the mesh
-    """
-
-    def __init__(self, contents: bytearray):
-        super().__init__(contents, "stl")
-
-    @staticmethod
-    def from_file(fname: str) -> MeshGeometry:
-        """Reading mesh geometry from file. Returns mesh geometry object
-
-        Args:
-            fname: file name to read from
-        """
-        with open(fname, "rb") as f:
-            arr = np.frombuffer(f.read(), dtype=np.uint8)
-            _, extcode = threejs_type(np.uint8)
-            encoded = umsgpack.Ext(extcode, arr.tobytes())
-            return MeshGeometry(encoded, "stl")
-
-    @staticmethod
-    def from_stream(f: BinaryIO) -> MeshGeometry:
-        """Reads mesh geometry from io stream. Returns mesh geometry object
-
-        Args:
-            f: binary io stream to read from
-        """
-        if isinstance(f, BytesIO):
-            arr = np.frombuffer(f.read(), dtype=np.uint8)
-        elif isinstance(f, StringIO):
-            arr = np.frombuffer(bytes(f.read(), "utf-8"), dtype=np.uint8)
-        else:
-            raise ValueError(f"Stream must be instance of StringIO or BytesIO, not {type(f)}")
-        _, extcode = threejs_type(np.uint8)
-        encoded = umsgpack.Ext(extcode, arr.tobytes())
-        return MeshGeometry(encoded, "stl")
-
-
-class PlyMeshGeometry(MeshGeometry):
-    """Basic PLY mesh geometry class
-
-    Args:
-        contents: the stream of contents representing the mesh
-    """
-
-    def __init__(self, contents: bytearray):
-        super().__init__(contents, "ply")
-
-    @staticmethod
-    def from_file(fname: str) -> MeshGeometry:
-        """Reading mesh geometry from file. Returns mesh geometry object
-
-        Args:
-            fname: file name to read from
-        """
-        with open(fname, "rb") as f:
-            arr = np.frombuffer(f.read(), dtype=np.uint8)
-            _, extcode = threejs_type(np.uint8)
-            encoded = umsgpack.Ext(extcode, arr.tobytes())
-            return MeshGeometry(encoded, "ply")
-
-    @staticmethod
-    def from_stream(f: BinaryIO) -> MeshGeometry:
-        """Reads mesh geometry from io stream. Returns mesh geometry object
-
-        Args:
-            f: binary io stream to read from
-        """
-        if isinstance(f, BytesIO):
-            arr = np.frombuffer(f.read(), dtype=np.uint8)
-        elif isinstance(f, StringIO):
-            arr = np.frombuffer(bytes(f.read(), "utf-8"), dtype=np.uint8)
-        else:
-            raise ValueError(f"Stream must be instance of StringIO or BytesIO, not {type(f)}")
-        _, extcode = threejs_type(np.uint8)
-        encoded = umsgpack.Ext(extcode, arr.tobytes())
-        return MeshGeometry(encoded, "stl")
-
-
-class TriangularMeshGeometry(Geometry):
-    """
-    A mesh consisting of an arbitrary collection of triangular faces.
-    To construct one, you need to pass in a collection of vertices as an Nx3 array
-    and a collection of faces as an Mx3 array. Each element of `faces`
-    should be a collection of 3 indices into the `vertices` array.
-    For example, to create a square made out of two adjacent triangles, we could do:
-    vertices = np.array([
-        [0, 0, 0],  # the first vertex is at [0, 0, 0]
-        [1, 0, 0],
-        [1, 0, 1],
-        [0, 0, 1]
-    ])
-    faces = np.array([
-        [0, 1, 2],  # The first face consists of vertices 0, 1, and 2
-        [3, 0, 2]
-    ])
-    mesh = TriangularMeshGeometry(vertices, faces)
-    """
-
-    __slots__ = ["vertices", "faces"]
-
-    def __init__(self, vertices: np.ndarray, faces: np.ndarray):
-        super().__init__()
-
-        vertices = np.asarray(vertices, dtype=np.float32)
-        faces = np.asarray(faces, dtype=np.uint32)
-        assert vertices.shape[1] == 3, "`vertices` must be an Nx3 array"
-        assert faces.shape[1] == 3, "`faces` must be an Mx3 array"
-        self.vertices = vertices
-        self.faces = faces
-
-    def lower(self, object_data) -> Dict[str, Any]:
-        return {
-            "uuid": self.uuid,
-            "type": "BufferGeometry",
-            "data": {
-                "attributes": {"position": pack_numpy_array(self.vertices.T)},
-                "index": pack_numpy_array(self.faces.T),
-            },
-        }
-
-
-class PointsGeometry(Geometry):
-    """Points Geometry class
-
-    Args:
-        position: position of the point to draw
-        color: color to render the point
-    """
-
-    def __init__(self, position: np.ndarray, color: Optional[np.ndarray] = None):
-        super().__init__()
-        self.position = position
-        self.color = color
-
-    def lower(self, object_data) -> Dict[str, Any]:
-        attrs = {"position": pack_numpy_array(self.position)}
-        if self.color is not None:
-            attrs["color"] = pack_numpy_array(self.color)
-        return {"uuid": self.uuid, "type": "BufferGeometry", "data": {"attributes": attrs}}
-
-
-class PointsMaterial(Material):
-    """Points Material class
-
-    Args:
-        size: size of point to render
-        color: color to render the point
-        sizeAttenuation: whether to attenuate size
-    """
-
-    def __init__(self, size: float = 0.001, color: int = 0xFFFFFF, size_attenuation: bool = True):
-        super().__init__()
-        self.size = size
-        self.color = color
-        self.size_attenuation = size_attenuation
-
-    def lower(self, object_data) -> Dict[str, Any]:
-        return {
-            "uuid": self.uuid,
-            "type": "PointsMaterial",
-            "color": self.color,
-            "size": self.size,
-            "sizeAttenuation": bool(self.size_attenuation),
-            "vertexColors": 2,
-        }
-
-
-class Points(Object):
-    """Points object class"""
-
-    _type = "Points"
-
-
-def PointCloud(position: np.ndarray, color: np.ndarray, **kwargs) -> Points:  # pylint: disable=invalid-name
-    """Creates a point cloud with the specified position of points
-
-    Args:
-        position: position of points
-        color: color to render point cloud
-    """
-    return Points(PointsGeometry(position, color), PointsMaterial(**kwargs))
-
-
-class Line(Object):
-    """Line class"""
-
-    _type = "Line"
-
-
-class LineSegments(Object):
-    """Line Segment class"""
-
-    _type = "LineSegments"
-
-
-class LineLoop(Object):
-    """Line Loop class"""
-
-    _type = "LineLoop"
-
-
-def triad(scale: float = 1.0) -> LineSegments:
-    """
-    A visual representation of the origin of a coordinate system, drawn as three
-    lines in red, green, and blue along the x, y, and z axes. The `scale` parameter
-    controls the length of the three lines.
-    Returns an `Object` which can be passed to `set_object()`
-
-    Args:
-        scale: scale size of triad
-    """
-    return LineSegments(
-        PointsGeometry(
-            position=np.array([[0, 0, 0], [scale, 0, 0], [0, 0, 0], [0, scale, 0], [0, 0, 0], [0, 0, scale]])
-            .astype(np.float32)
-            .T,
-            color=np.array([[1, 0, 0], [1, 0.6, 0], [0, 1, 0], [0.6, 1, 0], [0, 0, 1], [0, 0.6, 1]])
-            .astype(np.float32)
-            .T,
-        ),
-        LineBasicMaterial(vertexColors=True),
-    )
-
-
-def camera(scale: float = 1.0) -> LineSegments:
-    """
-    A visual representation of the origin of a coordinate system, drawn as three
-    lines in red, green, and blue along the x, y, and z axes. The `scale` parameter
-    controls the length of the three lines.
-    Returns an `Object` which can be passed to `set_object()`
-
-    Args:
-        scale: scale size of camera
-    """
-    return LineSegments(
-        PointsGeometry(
-            position=np.array([[0, 0, 0], [scale, 0, 0], [0, 0, 0], [0, scale, 0], [0, 0, 0], [0, 0, scale]])
-            .astype(np.float32)
-            .T,
-            color=np.array([[1, 0, 0], [1, 0.6, 0], [0, 1, 0], [0.6, 1, 0], [0, 0, 1], [0, 0.6, 1]])
-            .astype(np.float32)
-            .T,
-        ),
-        LineBasicMaterial(vertexColors=True),
-    )
diff --git a/nerfactory/viewer/server/path.py b/nerfactory/viewer/server/path.py
index ca80c5d292..394f019c64 100644
--- a/nerfactory/viewer/server/path.py
+++ b/nerfactory/viewer/server/path.py
@@ -16,7 +16,6 @@
 """
 
 
-import sys
 from typing import Tuple
 
 UNICODE = str
diff --git a/nerfactory/viewer/server/server.py b/nerfactory/viewer/server/server.py
index e37ccba247..0b3597be45 100644
--- a/nerfactory/viewer/server/server.py
+++ b/nerfactory/viewer/server/server.py
@@ -31,24 +31,14 @@
 from aiortc.rtcrtpsender import RTCRtpSender
 from zmq.eventloop.zmqstream import ZMQStream
 
-from nerfactory.viewer.server.tree import SceneTree, find_node, walk
+from nerfactory.viewer.server.state.node import find_node, get_tree, walk
+from nerfactory.viewer.server.state.state_node import StateNode
 from nerfactory.viewer.server.video_stream import SingleFrameStreamTrack
 
 MAX_ATTEMPTS = 1000
 DEFAULT_ZMQ_METHOD = "tcp"
 DEFAULT_ZMQ_PORT = 6000
 DEFAULT_WEBSOCKET_PORT = 8051
-WEBSOCKET_COMMANDS = [
-    "set_transform",
-    "set_object",
-    "set_output_options",
-    "set_output_type",
-    "set_training_state",
-    "get_object",
-    "set_property",
-    "delete",
-]
-WEBRTC_COMMANDS = ["set_image"]
 
 
 def find_available_port(func: Callable, default_port: int, max_attempts: int = MAX_ATTEMPTS, **kwargs) -> None:
@@ -105,7 +95,8 @@ def open(self, *args: str, **kwargs: str):
         self.bridge.send_scene(self)
 
     async def on_message(self, message: bytearray):  # pylint: disable=invalid-overridden-method
-        """On reception of message, parses the message and calls the appropriate function based on the type of command
+        """On reception of message from the websocket,
+        parses the message and calls the appropriate function based on the type of command
 
         Args:
             message: byte message to parse
@@ -115,22 +106,21 @@ async def on_message(self, message: bytearray):  # pylint: disable=invalid-overr
         type_ = m["type"]
         path = list(filter(lambda x: len(x) > 0, m["path"].split("/")))
 
-        if type_ == "set_transform":
-            find_node(self.bridge.tree, path).transform = data
-        elif type_ == "set_object":
-            find_node(self.bridge.tree, path).object = data
-            find_node(self.bridge.tree, path).properties = []
-        elif type_ == "set_output_options":
-            find_node(self.bridge.tree, path).object = data
-        elif type_ == "set_output_type":
-            find_node(self.bridge.tree, path).object = data
-        elif type_ == "set_max_resolution":
-            find_node(self.bridge.tree, path).object = data
-        elif type_ == "set_min_resolution":
-            find_node(self.bridge.tree, path).object = data
-        elif type_ == "set_training_state":
-            find_node(self.bridge.tree, path).object = data
+        if type_ == "write":
+            # writes the data and dispatches update
+            find_node(self.bridge.state_tree, path).data = m["data"]
+            # TODO: dispatch an update message to all websockets!
+            # self.bridge.forward_to_websockets(frames)
+        elif type_ == "read":
+            # reads and returns the data
+            data = find_node(self.bridge.state_tree, path).data
+            self.write_message(data, binary=True)
+        elif type_ == "delete":
+            find_node(self.bridge.state_tree, path).data = None
+            # TODO: dispatch an update message to all websockets!
+            # self.bridge.forward_to_websockets(frames)
         elif type_ == "offer":
+            # returns the description to for WebRTC to the specific websocket connection
             offer = RTCSessionDescription(m["data"]["sdp"], m["data"]["type"])
 
             pc = RTCPeerConnection()
@@ -139,7 +129,7 @@ async def on_message(self, message: bytearray):  # pylint: disable=invalid-overr
             video = SingleFrameStreamTrack()
             self.bridge.video_tracks.add(video)
             _ = pc.addTrack(video)
-            # TODO(eventually do something with the codec)
+            # TODO: do something with the codec
             # video_sender = pc.addTrack(video)
             # force_codec(pc, video_sender, video_codec)
 
@@ -154,6 +144,14 @@ async def on_message(self, message: bytearray):  # pylint: disable=invalid-overr
             }
             data = umsgpack.packb(cmd_data)
             self.write_message(data, binary=True)
+        else:
+            cmd_data = {
+                "type": "error",
+                "path": "",
+                "data": {"error": "Unknown command type: " + type_},
+            }
+            data = umsgpack.packb(cmd_data)
+            self.write_message(data, binary=True)
 
     def on_close(self):
         self.bridge.websocket_pool.remove(self)
@@ -196,7 +194,7 @@ def f(port):
             self.app.listen(websocket_port, **listen_kwargs)
             self.websocket_port = websocket_port
 
-        self.tree = SceneTree()
+        self.state_tree = get_tree(StateNode)
 
     def __str__(self) -> str:
         class_name = self.__class__.__name__
@@ -213,58 +211,36 @@ def handle_zmq(self, frames: List[bytes]):
             frames: the list containing command + object to be placed in tree
         """
         cmd = frames[0].decode("utf-8")
-        print(cmd)
+        # print(cmd)
         if len(frames) != 3:
             self.zmq_socket.send(b"error: expected 3 frames")
             return
         path = list(filter(lambda x: len(x) > 0, frames[1].decode("utf-8").split("/")))
         data = frames[2]
-        if cmd in WEBSOCKET_COMMANDS:
-            if cmd != "get_object":
-                self.forward_to_websockets(frames)
-            if cmd == "set_transform":
-                find_node(self.tree, path).transform = data
-            elif cmd == "set_object":
-                find_node(self.tree, path).object = data
-                find_node(self.tree, path).properties = []
-            elif cmd == "set_output_options":
-                find_node(self.tree, path).object = data
-            elif cmd == "set_output_type":
-                find_node(self.tree, path).object = data
-            elif cmd == "set_max_resolution":
-                find_node(self.tree, path).object = data
-            elif cmd == "set_min_resolution":
-                find_node(self.tree, path).object = data
-            elif cmd == "set_training_state":
-                find_node(self.tree, path).object = data
-            elif cmd == "get_object":
-                data = find_node(self.tree, path).object
-                if isinstance(data, type(None)):
-                    data = umsgpack.packb("error: object not found")
-                self.zmq_socket.send(data)
-                return
-            elif cmd == "set_property":
-                find_node(self.tree, path).properties.append(data)
-            elif cmd == "delete":
-                if len(path) > 0:
-                    parent = find_node(self.tree, path[:-1])
-                    child = path[-1]
-                    if child in parent:
-                        del parent[child]
-                else:
-                    self.tree = SceneTree()
-        elif cmd in WEBRTC_COMMANDS:
-            if cmd == "set_image":
-                image = msgpack.unpackb(
-                    data, object_hook=msgpack_numpy.decode, use_list=False, max_bin_len=50000000, raw=False
-                )
-                for video_track in self.video_tracks:
-                    video_track.put_frame(image)
+
+        if cmd == "write":
+            # TODO: use state_tree name
+            unpacked_data = umsgpack.unpackb(data)
+            find_node(self.state_tree, path).data = unpacked_data["data"]
+            self.forward_to_websockets(frames)
+            self.zmq_socket.send(umsgpack.packb(b"ok"))
+        elif cmd == "read":
+            # walk the node from the specified to get the full state dictionary
+            # TODO(ethan): handle the "data" key...
+            read_data = find_node(self.state_tree, path).data
+            self.zmq_socket.send(umsgpack.packb(read_data))
+        elif cmd == "delete":
+            self.forward_to_websockets(frames)
+            self.zmq_socket.send(umsgpack.packb(b"ok"))
+        elif cmd == "set_image":
+            image = msgpack.unpackb(
+                data, object_hook=msgpack_numpy.decode, use_list=False, max_bin_len=50000000, raw=False
+            )
+            for video_track in self.video_tracks:
+                video_track.put_frame(image)
+            self.zmq_socket.send(umsgpack.packb(b"ok"))
         else:
-            self.zmq_socket.send(b"error: unknown command")
-            return
-        self.zmq_socket.send(b"ok")
-        return
+            self.zmq_socket.send(umsgpack.packb(b"error: unknown command"))
 
     def forward_to_websockets(self, frames: List[bytes]):
         """Forward a zmq message to all websockets.
@@ -294,13 +270,11 @@ def send_scene(self, websocket: WebSocketHandler):
         Args:
             websocket: websocket to send information over
         """
-        for node in walk(self.tree):
-            if node.object is not None:
-                websocket.write_message(node.object, binary=True)
-            for p in node.properties:
-                websocket.write_message(p, binary=True)
-            if node.transform is not None:
-                websocket.write_message(node.transform, binary=True)
+        print("Sending entire scene state on refresh.")
+        for path, node in walk("", self.state_tree):
+            if node.data is not None:
+                command = {"type": "write", "path": path, "data": node.data}
+                websocket.write_message(umsgpack.packb(command), binary=True)
 
     def run(self):
         """starts and runs the websocket bridge"""
diff --git a/nerfactory/viewer/server/tree.py b/nerfactory/viewer/server/state/node.py
similarity index 58%
rename from nerfactory/viewer/server/tree.py
rename to nerfactory/viewer/server/state/node.py
index 1eacaa7669..29f0e4c96a 100644
--- a/nerfactory/viewer/server/tree.py
+++ b/nerfactory/viewer/server/state/node.py
@@ -13,49 +13,46 @@
 # limitations under the License.
 
 """
-Functions for traversing server bridge tree nodes (storage)
+For tree logic code.
 """
 
-
 from collections import defaultdict
-from typing import List
-
+from typing import Callable
 
-class TreeNode(defaultdict):
-    """Tree Node object"""
 
-    __slots__ = ["object", "transform", "properties", "animation"]
+class Node(defaultdict):
+    """
+    The base class Node.
+    """
 
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
-        self.object = None
-        self.properties = []
-        self.transform = None
-        self.animation = None
-
-
-SceneTree = lambda: TreeNode(SceneTree)
 
 
-def walk(tree: TreeNode) -> None:
-    """Walk the entire tree and return the values
-
-    Args:
-        tree: the root of the tree to start search
+def get_tree(node_class: Callable) -> Callable:
     """
-    yield tree
-    for v in tree.values():
-        yield from walk(v)
-
+    Get a tree from a node class.
+    This allows one to do tree["path"]["to"]["node"]
+    and it will return a new node if it doesn't exist
+    or the current node if it does.
+    """
+    assert isinstance(node_class(), Node)
+    tree = lambda: node_class(tree)
+    return tree()
 
-def find_node(tree: TreeNode, path: List[str]) -> TreeNode:
-    """Find the node associated with the path
 
-    Args:
-        tree: the root of the tree to start search
-        path: the path we are searching for
-    """
+def find_node(tree, path):
     if len(path) == 0:
         return tree
     else:
         return find_node(tree[path[0]], path[1:])
+
+
+def walk(path, tree):
+    """Walk the entire tree and return the values
+    Args:
+        tree: the root of the tree to start search
+    """
+    yield path, tree
+    for k, v in tree.items():
+        yield from walk(path + "/" + k, v)
diff --git a/nerfactory/viewer/server/state/state_node.py b/nerfactory/viewer/server/state/state_node.py
new file mode 100644
index 0000000000..5ef2465106
--- /dev/null
+++ b/nerfactory/viewer/server/state/state_node.py
@@ -0,0 +1,28 @@
+# Copyright 2022 The Plenoptix Team. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from typing import List
+
+from nerfactory.viewer.server.state.node import Node
+
+
+class StateNode(Node):
+    """Node that holds a hierarchy of state nodes"""
+
+    __slots__ = ["data"]
+
+    def __init__(self, *args, **kwargs):
+        super().__init__(*args, **kwargs)
+        self.path = None
+        self.data = None
diff --git a/nerfactory/viewer/server/transformations.py b/nerfactory/viewer/server/transformations.py
deleted file mode 100644
index e2a0c64422..0000000000
--- a/nerfactory/viewer/server/transformations.py
+++ /dev/null
@@ -1,89 +0,0 @@
-# Copyright 2022 The Plenoptix Team. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-Some helpful functions for creating geometric transformations.
-"""
-
-import math
-from typing import List, Optional
-
-import numpy as np
-
-
-def get_unit_vector(
-    data: List[float], axis: Optional[List[float]] = None, out: Optional[List[float]] = None
-) -> Optional[np.ndarray]:
-    """Return ndarray normalized by length, i.e. Euclidean norm, along axis.
-
-    Args:
-        data: direction in which we want to calculate the unit vector for
-        axis: the axis along which to get the unit vector
-        out: buffer in which we write the unit vector out to (if not returning)
-    """
-    if out is None:
-        data = np.array(data, dtype=np.float64, copy=True)
-        if data.ndim == 1:
-            data /= math.sqrt(np.dot(data, data))
-            return data
-    else:
-        if out is not data:
-            out[:] = np.array(data, copy=False)
-        data = out
-    length = np.atleast_1d(np.sum(data * data, axis))
-    np.sqrt(length, length)
-    if axis is not None:
-        length = np.expand_dims(length, axis)
-    data /= length
-    if out is None:
-        return data
-    return None
-
-
-def get_translation_matrix(direction: List[float]) -> np.ndarray:
-    """Return matrix to translate by direction vector.
-
-    Args:
-        direction: specifying direction of translation
-    """
-    M = np.identity(4)
-    M[:3, 3] = direction[:3]
-    return M
-
-
-def get_rotation_matrix(angle: float, direction: List[float], point: Optional[List[float]] = None) -> np.ndarray:
-    """Return matrix to rotate about axis defined by point and direction.
-
-    Args:
-        angle: angle of rotation
-        direction: specifying axis of rotation
-        point: if specified, rotation not around origin
-    """
-    sina = math.sin(angle)
-    cosa = math.cos(angle)
-    direction = get_unit_vector(direction[:3])
-    # rotation matrix around unit vector
-    R = np.diag([cosa, cosa, cosa])
-    R += np.outer(direction, direction) * (1.0 - cosa)
-    direction *= sina
-    R += np.array(
-        [[0.0, -direction[2], direction[1]], [direction[2], 0.0, -direction[0]], [-direction[1], direction[0], 0.0]]
-    )
-    M = np.identity(4)
-    M[:3, :3] = R
-    if point is not None:
-        # rotation not around origin
-        point = np.array(point[:3], dtype=np.float64, copy=False)
-        M[:3, 3] = point - np.dot(R, point)
-    return M
diff --git a/nerfactory/viewer/server/utils.py b/nerfactory/viewer/server/utils.py
index b769190bdb..e13fc91c12 100644
--- a/nerfactory/viewer/server/utils.py
+++ b/nerfactory/viewer/server/utils.py
@@ -20,13 +20,6 @@
 import numpy as np
 import torch
 
-from nerfactory.cameras.cameras import (
-    Camera,
-    get_camera,
-    get_intrinsics_from_intrinsics_matrix,
-)
-from nerfactory.viewer.server.visualizer import Viewer
-
 
 def get_chunks(
     lst: List[float], num_chunks: Optional[int] = None, size_of_chunk: Optional[int] = None
@@ -80,25 +73,3 @@ def get_intrinsics_matrix_and_camera_to_world_h(
     )
 
     return intrinsics_matrix, camera_to_world_h
-
-
-def get_camera_from_vis(vis: Viewer, name: str = "/Cameras/Main Camera", image_height: int = 100) -> Camera:
-    """Caculates the specified camera object's parameters (extrinsics/intrinsics); returns associated Camera Object.
-
-    Args:
-        vis: viewer object
-        name: name of camera to calculate for. Defaults to "/Cameras/Main Camera".
-        image_height: height of image. Defaults to 100.
-    """
-    data = vis[name].get_object()
-    if data is None:
-        return None
-    camera_object = data["object"]["object"]
-    intrinsics_matrix, camera_to_world_h = get_intrinsics_matrix_and_camera_to_world_h(
-        camera_object, image_height=image_height
-    )
-
-    camera_to_world = camera_to_world_h[:3, :]
-    intrinsics = get_intrinsics_from_intrinsics_matrix(intrinsics_matrix)
-    camera = get_camera(intrinsics, camera_to_world)
-    return camera
diff --git a/nerfactory/viewer/server/video_stream.py b/nerfactory/viewer/server/video_stream.py
index c64c6518c2..fb177e7b05 100644
--- a/nerfactory/viewer/server/video_stream.py
+++ b/nerfactory/viewer/server/video_stream.py
@@ -79,7 +79,7 @@ class SingleFrameStreamTrack(VideoStreamTrack):
 
     def __init__(self):
         super().__init__()
-        self.background_frame = np.zeros((480, 640, 3), dtype="uint8") * 255
+        self.background_frame = np.ones((480, 640, 3), dtype="uint8") * 255  # white background
         self.frame = None
         self.put_frame(self.background_frame)
 
diff --git a/nerfactory/viewer/server/viewer_utils.py b/nerfactory/viewer/server/viewer_utils.py
index 1cd02c356b..8560896aaa 100644
--- a/nerfactory/viewer/server/viewer_utils.py
+++ b/nerfactory/viewer/server/viewer_utils.py
@@ -15,24 +15,17 @@
 """Code to interface with the `vis/` (the JS visualizer).
 """
 
-import copy
 import logging
 import random
 import sys
 import threading
 import time
-from typing import Any, Dict, List, Optional
+from typing import Any, Dict
 
 import numpy as np
 import torch
 
-import nerfactory.viewer.server.cameras as c
-import nerfactory.viewer.server.geometry as g
-from nerfactory.cameras.cameras import (
-    Camera,
-    get_camera,
-    get_intrinsics_from_intrinsics_matrix,
-)
+from nerfactory.cameras.cameras import get_camera, get_intrinsics_from_intrinsics_matrix
 from nerfactory.cameras.rays import RayBundle
 from nerfactory.data.image_dataset import ImageDataset
 from nerfactory.data.structs import DatasetInputs
@@ -40,7 +33,6 @@
 from nerfactory.utils import profiler
 from nerfactory.utils.config import ViewerConfig
 from nerfactory.utils.decorators import check_visualizer_enabled, decorate_all
-from nerfactory.viewer.server.transformations import get_translation_matrix
 from nerfactory.viewer.server.utils import get_intrinsics_matrix_and_camera_to_world_h
 from nerfactory.viewer.server.visualizer import Viewer
 
@@ -117,15 +109,17 @@ def __init__(self, state):
         self.state = state
 
     def run(self):
-        """Run function that checks to see if any of the existing state has changed (e.g. camera pose/output type/resolutions).
-        Sets the visualizer state flag to true to signal to render thread that an interrupt was registered.
+        """Run function that checks to see if any of the existing state has changed
+        (e.g. camera pose/output type/resolutions).
+        Sets the visualizer state flag to true to signal
+        to render thread that an interrupt was registered.
         """
         self.state.check_done_render = False
         while not self.state.check_done_render:
             # check camera
-            data = self.state.vis["/Cameras/Main Camera"].get_object()
+            data = self.state.vis["renderingState/camera"].read()
             if data is not None:
-                camera_object = data["object"]["object"]
+                camera_object = data["object"]
                 if self.state.prev_camera_matrix is None or not np.allclose(
                     camera_object["matrix"], self.state.prev_camera_matrix
                 ):
@@ -133,8 +127,8 @@ def run(self):
                     return
 
             # check output type
-            data = self.state.vis["/Output Type"].get_object()
-            if data is None:
+            output_type = self.state.vis["renderingState/output_choice"].read()
+            if output_type is None:
                 output_type = "default"
             else:
                 output_type = data["output_type"]
@@ -143,17 +137,15 @@ def run(self):
                 return
 
             # check max render
-            data = self.state.vis["/Max Resolution"].get_object()
-            if data is not None:
-                max_resolution = int(data["max_resolution"])
+            max_resolution = self.state.vis["renderingState/maxResolution"].read()
+            if max_resolution is not None:
                 if self.state.max_resolution != max_resolution:
                     self.state.check_interrupt_vis = True
                     return
 
             # check min render
-            data = self.state.vis["/Min Resolution"].get_object()
-            if data is not None:
-                min_resolution = int(data["min_resolution"])
+            min_resolution = self.state.vis["renderingState/minResolution"].read()
+            if min_resolution is not None:
                 if self.state.min_resolution != min_resolution:
                     self.state.check_interrupt_vis = True
                     return
@@ -174,7 +166,6 @@ def __init__(self, config: ViewerConfig):
         if self.config.enable:
             zmq_url = self.config.zmq_url
             self.vis = Viewer(zmq_url=zmq_url)
-            self.vis.delete()
         else:
             logging.info("Continuing without viewer.")
 
@@ -198,28 +189,30 @@ def init_scene(self, image_dataset: ImageDataset, dataset_inputs: DatasetInputs)
             image_dataset: dataset to render in the scene
             dataset_inputs: inputs to the image dataset and ray generator
         """
-        indices = random.sample(range(len(image_dataset)), k=10)
-        for idx in indices:
+
+        # clear the current scene
+        self.vis["sceneState/sceneBounds"].delete()
+        self.vis["sceneState/cameras"].delete()
+
+        # draw the training cameras and images
+        image_indices = range(len(image_dataset))
+        image_indices = random.sample(image_indices, k=10)
+        for idx in image_indices:
             image = image_dataset[idx]["image"]
             camera = get_camera(dataset_inputs.intrinsics[idx], dataset_inputs.camera_to_world[idx], None)
-            pose = camera.get_camera_to_world().double().numpy()
-            K = camera.get_intrinsics_matrix().double().numpy()
-            draw_camera_frustum(
-                self.vis,
-                image=(image.double().numpy() * 255.0),
-                pose=pose,
-                K=K,
-                height=1.0,
-                name=f"image_dataset/{idx:06d}",
-                displayed_focal_length=0.5,
-                realistic=False,
-            )
-        aabb = dataset_inputs.scene_bounds.aabb
-        draw_aabb(self.vis, aabb, name="dataset_inputs_train/scene_bounds/aabb")
+            bgr = image[..., [2, 1, 0]]
+            self.vis[f"sceneState/cameras/{idx:06d}"].write(camera.to_json(image=bgr, resize_shape=(100, 100)))
+
+        # draw the scene bounds (i.e., the bounding box)
+        json_ = dataset_inputs.scene_bounds.to_json()
+        self.vis["sceneState/sceneBounds"].write(json_)
+
+        # set the properties of the camera
+        # self.vis["renderingState/camera"].write(json_)
 
         # set the main camera intrinsics to one from the dataset
-        K = camera.get_intrinsics_matrix()
-        set_persp_intrinsics_matrix(self.vis, K.double().numpy())
+        # K = camera.get_intrinsics_matrix()
+        # set_persp_intrinsics_matrix(self.vis, K.double().numpy())
 
     def update_scene(self, step: int, graph: Graph) -> None:
         """updates the scene based on the graph weights
@@ -228,21 +221,22 @@ def update_scene(self, step: int, graph: Graph) -> None:
             step: iteration step of training
             graph: the current checkpoint of the model
         """
-        data = self.vis["/Training State"].get_object()
 
-        if data is None or not data["training_state"]:
+        is_training = self.vis["renderingState/isTraining"].read()
+
+        if is_training is None or is_training:
             # in training mode, render every few steps
             if self._is_render_step(step):
                 self._render_image_in_viewer(graph)
         else:
             # in pause training mode, enter render loop with set graph
             local_step = step
-            run_loop = data["training_state"]
+            run_loop = not is_training
             while run_loop:
                 if self._is_render_step(local_step):
                     self._render_image_in_viewer(graph)
-                data = self.vis["/Training State"].get_object()
-                run_loop = data["training_state"]
+                is_training = self.vis["renderingState/isTraining"].read()
+                run_loop = not is_training
                 local_step += 1
 
     def check_interrupt(self, frame, event, arg):  # pylint: disable=unused-argument
@@ -279,14 +273,15 @@ def _send_output_to_viewer(self, outputs: Dict[str, Any]):
             outputs: the dictionary of outputs to choose from, from the graph
         """
         if not self.outputs_set:
-            set_output_options(self.vis, list(outputs.keys()))
+            # set_output_options(self.vis, list(outputs.keys()))
+            self.vis["renderingState/output_options"].write(list(outputs.keys()))
             self.outputs_set = True
         # gross hack to get the image key, depending on which keys the graph uses
         if self.prev_output_type == "default":
             self.prev_output_type = "rgb" if "rgb" in outputs else "rgb_fine"
         image_output = outputs[self.prev_output_type].cpu().numpy() * 255
         image = (image_output).astype("uint8")
-        self.vis["/Cameras/Main Camera"].set_image(image)
+        self.vis.set_image(image)
 
     @profiler.time_function
     def _render_image_in_viewer(self, graph: Graph) -> None:
@@ -295,10 +290,10 @@ def _render_image_in_viewer(self, graph: Graph) -> None:
         The image is sent of a TCP connection and then uses WebRTC to send it to the viewer.
         """
         # check and perform camera updates
-        data = self.vis["/Cameras/Main Camera"].get_object()
+        data = self.vis["renderingState/camera"].read()
         if data is None:
             return
-        camera_object = data["object"]["object"]
+        camera_object = data["object"]
         # hacky way to prevent overflow check to see if < 100; TODO(make less hacky)
         if self.prev_camera_matrix is not None and np.allclose(camera_object["matrix"], self.prev_camera_matrix):
             self.res_upscale_factor = min(self.res_upscale_factor * 2, 100)
@@ -307,21 +302,19 @@ def _render_image_in_viewer(self, graph: Graph) -> None:
             self.res_upscale_factor = 1
 
         # check and perform output type updates
-        data = self.vis["/Output Type"].get_object()
-        if data is None:
+        output_type = self.vis["renderingState/output_choice"].read()
+        if output_type is None:
             output_type = "default"
-        else:
-            output_type = data["output_type"]
         self.prev_output_type = output_type
 
         # check and perform min/max update
-        data = self.vis["/Max Resolution"].get_object()
-        if data is not None:
-            self.max_resolution = int(data["max_resolution"])
+        max_resolution = self.vis["renderingState/maxResolution"].read()
+        if max_resolution:
+            self.max_resolution = max_resolution
 
-        data = self.vis["/Min Resolution"].get_object()
-        if data is not None:
-            self.min_resolution = int(data["min_resolution"])
+        min_resolution = self.vis["renderingState/minResolution"].read()
+        if min_resolution:
+            self.min_resolution = min_resolution
 
         image_height = min(
             self.min_resolution * self.res_upscale_factor,
@@ -368,191 +361,3 @@ def get_default_vis() -> Viewer:
     zmq_url = "tcp://0.0.0.0:6000"
     viewer = Viewer(zmq_url=zmq_url)
     return viewer
-
-
-def set_output_options(vis: Viewer, output_options: List[str]):
-    """Sets the possible list of output options for user to toggle
-
-    Args:
-        vis: current Viewer
-        output_options: list of possible output types to select from
-    """
-    vis["output_options"].set_output_options(output_options)
-
-
-def show_box_test(vis: Viewer):
-    """Simple test to draw a box and make sure everything is working.
-
-    Args:
-        vis: current Viewer
-    """
-    vis["box"].set_object(g.Box([1.0, 1.0, 1.0]), material=g.MeshPhongMaterial(color=0xFF0000))
-
-
-def show_ply(vis: Viewer, ply_path: str, name: str = "ply", color: Optional[int] = None):
-    """Show the PLY file in the 3D viewer. Specify the full filename as input.
-
-    Args:
-        vis: current Viewer
-        ply_path: path to ply to load in
-        name: reference name within viewer storage
-        color: color to render the ply in
-    """
-    assert ply_path.endswith(".ply")
-    if color:
-        material = g.MeshPhongMaterial(color=color)
-    else:
-        material = g.MeshPhongMaterial(vertexColors=True)
-    vis[name].set_object(g.PlyMeshGeometry.from_file(ply_path), material)
-
-
-def show_obj(vis: Viewer, obj_path: str, name: str = "obj", color: Optional[int] = None):
-    """Show the PLY file in the 3D viewer. Specify the full filename as input.
-
-    Args:
-        vis: current Viewer
-        obj_path: path to obj to load in
-        name: reference name within viewer storage
-        color: color to render the obj in
-    """
-    assert obj_path.endswith(".obj")
-    if color:
-        material = g.MeshPhongMaterial(color=color)
-    else:
-        material = g.MeshPhongMaterial(vertexColors=True)
-    vis[name].set_object(g.ObjMeshGeometry.from_file(obj_path), material)
-
-
-def draw_camera_frustum(
-    vis: Viewer,
-    image: np.ndarray = np.random.rand(100, 100, 3) * 255.0,
-    pose: np.ndarray = get_translation_matrix([0, 0, 0]),
-    K: Optional[np.ndarray] = None,
-    name: str = "0000000",
-    displayed_focal_length: Optional[float] = None,
-    shift_forward: Optional[float] = None,
-    height: Optional[float] = None,
-    realistic: bool = True,
-):
-    """Draw the camera in the scene.
-
-    Args:
-        vis: current Viewer
-        image: image associated with the current camera
-        pose: pose of the camera
-        K: camera matrix
-        name: reference name within viewer storage
-        displayed_focal_length: the focal length to be displayed
-        shift_forward: how much to shift the drawn camera forward
-        height: height of the associated image plane
-        realistic: whether to render the image plane at the "realistic" focal length
-    """
-
-    assert K[0, 0] == K[1, 1]
-    focal_length = K[0, 0]
-    pp_w = K[0, 2]
-    pp_h = K[1, 2]
-
-    if displayed_focal_length:
-        assert height is None or not realistic
-    if height:
-        assert displayed_focal_length is None or not realistic
-
-    if height:
-        dfl = height / (2.0 * (pp_h / focal_length))
-        width = 2.0 * (pp_w / focal_length) * dfl
-        if displayed_focal_length is None:
-            displayed_focal_length = dfl
-    elif displayed_focal_length:
-        width = 2.0 * (pp_w / focal_length) * displayed_focal_length
-        height = 2.0 * (pp_h / focal_length) * displayed_focal_length
-    else:
-        assert not realistic
-
-    if pose.shape == (3, 4):
-        pose = np.concatenate([pose, np.zeros_like(pose[:1])], axis=0)
-        pose[3, 3] = 1.0
-
-    # draw the frustum
-    g_frustum = c.frustum(scale=1.0, focal_length=displayed_focal_length, width=width, height=height)
-    vis[name + "/frustum"].set_object(g_frustum)
-    if not realistic:
-        vis[name + "/frustum"].set_transform(get_translation_matrix([0, 0, displayed_focal_length]))
-
-    # draw the image plane
-    g_image_plane = c.ImagePlane(image, width=width, height=height)
-    vis[name + "/image_plane"].set_object(g_image_plane)
-    if realistic:
-        assert displayed_focal_length is not None, "Need to set displayed focal length"
-        vis[name + "/image_plane"].set_transform(get_translation_matrix([0, 0, -1.0 * displayed_focal_length]))
-
-    if shift_forward:
-        matrix = get_translation_matrix([0, 0, displayed_focal_length])
-        matrix2 = get_translation_matrix([0, 0, -1.0 * shift_forward])
-        vis[name + "/frustum"].set_transform(matrix2 @ matrix)
-        vis[name + "/image_plane"].set_transform(matrix2)
-
-    # set the transform of the camera
-    vis[name].set_transform(pose)
-
-
-def set_persp_intrinsics_matrix(vis, K):
-    pp_w = K[0, 2]
-    pp_h = K[1, 2]
-    assert K[0, 0] == K[1, 1]
-    focal_length = K[0, 0]
-    x = pp_h / (focal_length)
-    fov = 2.0 * np.arctan(x) * (180.0 / np.pi)
-    vis["/Cameras/Main Camera/<object>"].set_property("fov", fov)
-    vis["/Cameras/Main Camera/<object>"].set_property("aspect", float(pp_w / pp_h))  # three.js expects width/height
-
-
-def set_persp_pose(vis, pose, colmap=True):
-    pose_processed = copy.deepcopy(pose)
-    if colmap:
-        pose_processed[:, 1:3] *= -1
-    vis["/Cameras/Main Camera/<object>"].set_transform(pose_processed)
-
-
-def set_persp_camera(vis, pose, K, colmap=True):
-    """Assumes simple pinhole model for intrinsics.
-    Args:
-        colmap: whether to use the colmap camera coordinate convention or not
-    """
-    set_persp_intrinsics_matrix(vis, K)
-    set_persp_pose(vis, pose, colmap=colmap)
-
-
-def set_camera(vis, camera: Camera):
-    pose = camera.get_camera_to_world_h()
-    K = camera.get_intrinsics_matrix()
-    set_persp_camera(vis, pose=pose.double().numpy(), K=K.double().numpy())
-
-
-def draw_aabb(vis, aabb, name="aabb"):
-    """Draw the axis-aligned bounding box."""
-    lengths = aabb[1] - aabb[0]
-
-    w = 1
-    aaa = np.array([w, w, w])
-    aab = np.array([w, w, -w])
-    aba = np.array([w, -w, w])
-    baa = np.array([-w, w, w])
-    abb = np.array([w, -w, -w])
-    bba = np.array([-w, -w, w])
-    bab = np.array([-w, w, -w])
-    bbb = np.array([-w, -w, -w])
-    camera_points = [aaa, aab, aaa, aba, aab, abb, aba, abb]
-    camera_points.extend([baa, bab, baa, bba, bab, bbb, bba, bbb])
-    camera_points.extend([aaa, baa, aab, bab, aba, bba, abb, bbb])
-    lines = np.stack(camera_points)
-
-    lines = lines * np.array(lengths) / 2.0
-
-    line_segments = g.LineSegments(
-        g.PointsGeometry(position=lines.astype(np.float32).T),
-        g.LineBasicMaterial(vertexColors=True),
-    )
-    vis[name].set_object(line_segments)
-    center = aabb[0] + lengths / 2.0
-    vis[name].set_transform(get_translation_matrix(center.tolist()))
diff --git a/nerfactory/viewer/server/visualizer.py b/nerfactory/viewer/server/visualizer.py
index 96d0b27c99..f699785585 100644
--- a/nerfactory/viewer/server/visualizer.py
+++ b/nerfactory/viewer/server/visualizer.py
@@ -12,28 +12,25 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+"""Code to connect and send commands to the viewer.
+"""
+
 import logging
 import signal
 import sys
+from typing import Dict, Optional
 
 import msgpack
 import msgpack_numpy
-import numpy as np
 import umsgpack
 import zmq
 
-from nerfactory.viewer.server.commands import (
-    Delete,
-    GetObject,
-    SetObject,
-    SetOutputOptions,
-    SetProperty,
-    SetTransform,
-)
 from nerfactory.viewer.server.path import Path
 
 
 class ViewerWindow:
+    """The viewer window has the ZMQ connection to the viewer bridge server."""
+
     context = zmq.Context()
 
     def __init__(self, zmq_url):
@@ -43,15 +40,15 @@ def __init__(self, zmq_url):
         self.assert_connected()
 
     def send(self, command):
-        cmd_data = command.lower()
+        """Sends a command to the viewer bridge server."""
         self.client.send_multipart(
             [
-                cmd_data["type"].encode("utf-8"),
-                cmd_data["path"].encode("utf-8"),
-                umsgpack.packb(cmd_data),
+                command["type"].encode("utf-8"),
+                command["path"].encode("utf-8"),
+                umsgpack.packb(command),
             ]
         )
-        return self.client.recv()
+        return umsgpack.unpackb(self.client.recv())
 
     def send_ping(self):
         """Tries to contact the viewer bridge server."""
@@ -65,7 +62,7 @@ def send_ping(self):
                 data,
             ]
         )
-        return self.client.recv()
+        return umsgpack.unpackb(self.client.recv())
 
     def assert_connected(self, timeout_in_sec: int = 5):
         """Check if the connection was established properly within some time.
@@ -84,7 +81,7 @@ def timeout_handler(signum, frame):
             _ = self.send_ping()
             logging.info("Successfully connected.")
             signal.alarm(0)  # cancel the alarm
-        except Exception as e:
+        except Exception as e:  # pylint: disable=broad-except
             logging.info(e)
             sys.exit()
 
@@ -93,19 +90,18 @@ class Viewer:
     """Visualizer class for connecting to the bridge server.
 
     Args:
-        zmq_url (str, optional): _description_. Defaults to None.
-        window (ViewerWindow, optional): _description_. Defaults to None.
-        timeout (str, optional): _description_. Defaults to None.
+        zmq_url: Where to connect with ZMQ. Defaults to None.
+        window: An already existing ViewerWindow. Defaults to None.
     """
 
-    def __init__(self, zmq_url: str = None, window: ViewerWindow = None):
+    def __init__(self, zmq_url: Optional[str] = None, window: Optional[ViewerWindow] = None):
         if zmq_url is None and window is None:
             raise ValueError("Must specify either zmq_url or window.")
         if window is None:
             self.window = ViewerWindow(zmq_url=zmq_url)
         else:
             self.window = window
-        self.path = Path(("nerfactory",))
+        self.path = Path(())
 
     @staticmethod
     def view_into(window: ViewerWindow, path: Path):
@@ -117,28 +113,27 @@ def view_into(window: ViewerWindow, path: Path):
     def __getitem__(self, path):
         return Viewer.view_into(self.window, self.path.append(path))
 
-    def set_object(self, geometry, material=None):
-        """Set the object at the current path
-        Args:
-            geometry (_type_): _description_
-            material (_type_, optional): _description_. Defaults to None.
+    def __repr__(self):
+        return f"<Viewer using: {self.window} at path: {self.path}>"
 
-        Returns:
-            _type_: _description_
-        """
-        return self.window.send(SetObject(geometry, material, self.path))
+    def write(self, data: Dict):
+        """Write data."""
+        path = self.path.lower()
+        print(path)
+        return self.window.send({"type": "write", "path": path, "data": data})
 
-    def get_object(self):
-        """Get the object at the current path."""
-        data = self.window.send(GetObject(self.path))
-        data = umsgpack.unpackb(data)
-        if isinstance(data, str) and data.find("error") == 0:
-            # some error meaning that the object does not exist
-            return None
-        return data
+    def read(self):
+        """Read data."""
+        path = self.path.lower()
+        return self.window.send({"type": "read", "path": path})
+
+    def delete(self):
+        """Delete data."""
+        path = self.path.lower()
+        return self.window.send({"type": "write", "path": path, "data": None})
 
     def set_image(self, image):
-        """Set the image"""
+        """Sends an image to the viewer with WebRTC."""
         type_ = "set_image"
         path = self.path.lower()
         data = msgpack.packb(image, default=msgpack_numpy.encode, use_bin_type=True)
@@ -150,23 +145,3 @@ def set_image(self, image):
             ]
         )
         return self.window.client.recv()
-
-    def set_transform(self, matrix=np.eye(4)):
-        """Set the transform"""
-        assert matrix.shape == (4, 4)
-        return self.window.send(SetTransform(matrix, self.path))
-
-    def set_property(self, key, value):
-        """Set the property"""
-        return self.window.send(SetProperty(key, value, self.path))
-
-    def set_output_options(self, options):
-        """Set the output options"""
-        return self.window.send(SetOutputOptions(options, self.path))
-
-    def delete(self):
-        """Delete the contents of the window"""
-        return self.window.send(Delete(self.path))
-
-    def __repr__(self):
-        return f"<Viewer using: {self.window} at path: {self.path}>"
diff --git a/notebooks/visualize_viewer.ipynb b/notebooks/visualize_viewer.ipynb
index 3c686f9af1..7dcf80183e 100644
--- a/notebooks/visualize_viewer.ipynb
+++ b/notebooks/visualize_viewer.ipynb
@@ -1,129 +1,328 @@
 {
-  "cells": [
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "3c00934d-0f14-4c1a-a563-94d627b377e5",
+   "metadata": {},
+   "source": [
+    "# Viewer\n",
+    "\n",
+    "The real-time web viewer enabled communication between Python and the ReactJS Client Viewer Application. Here we provide a walkthrough for how to use the viewer to draw information as well as read information from the GUI.\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "id": "b15dfdc1-5054-40bc-9631-4c7426eecfd9",
+   "metadata": {},
+   "outputs": [
     {
-      "cell_type": "markdown",
-      "id": "3c00934d-0f14-4c1a-a563-94d627b377e5",
-      "metadata": {},
-      "source": [
-        "## Notebook to visualize the viewer functionality\n"
-      ]
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "The autoreload extension is already loaded. To reload it, use:\n",
+      "  %reload_ext autoreload\n"
+     ]
+    }
+   ],
+   "source": [
+    "# HIDDEN\n",
+    "%load_ext autoreload\n",
+    "%autoreload 2\n",
+    "import pprint\n",
+    "import torch\n",
+    "from nerfactory.viewer.server.visualizer import Viewer\n",
+    "from nerfactory.data.structs import SceneBounds"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "052af8ce",
+   "metadata": {},
+   "source": [
+    "# Connecting to the viewer from Python\n",
+    "\n",
+    "Navigate to ..."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "id": "26d6da3c-e28a-4c55-9592-d90dccb86051",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# connect to the viewer\n",
+    "vis = Viewer(zmq_url=\"tcp://127.0.0.1:6000\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "id": "605e0131-bfbe-4309-b338-c49a46923d8f",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "{'max_point': [3, 3, 3], 'min_point': [-3, -3, -3], 'type': 'aabb'}\n",
+      "/sceneState/sceneBounds\n"
+     ]
     },
     {
-      "cell_type": "code",
-      "execution_count": null,
-      "id": "b15dfdc1-5054-40bc-9631-4c7426eecfd9",
-      "metadata": {},
-      "outputs": [],
-      "source": [
-        "from notebook_imports import *\n",
-        "\n",
-        "import time\n",
-        "import torch\n",
-        "from torch.utils.data import DataLoader\n",
-        "\n",
-        "from nerfactory.data.dataloader import TrainDataloader\n",
-        "from nerfactory.data.image_dataset import ImageDataset, PanopticImageDataset\n",
-        "from nerfactory.data.image_sampler import CacheImageSampler\n",
-        "from nerfactory.data.pixel_sampler import PixelSampler\n",
-        "from nerfactory.data.utils import DatasetInputs, get_dataset_inputs_from_dataset_config\n",
-        "from nerfactory.graphs.modules.ray_generator import RayGenerator\n",
-        "from nerfactory.graphs.modules.scene_colliders import SceneBoundsCollider, AABBBoxCollider\n",
-        "from nerfactory.cameras.cameras import get_camera\n",
-        "from nerfactory.cameras.rays import RayBundle\n",
-        "from nerfactory.utils.io import get_absolute_path\n",
-        "from nerfactory.utils.plotly import get_line_segments_from_lines\n",
-        "from nerfactory.cameras.cameras import get_camera_model\n",
-        "from nerfactory.utils.misc import get_dict_to_torch, instantiate_from_dict_config\n",
-        "from nerfactory.engine.trainer import Trainer\n",
-        "from nerfactory.utils.config import Config, setup_config\n",
-        "\n",
-        "from hydra import compose, initialize\n",
-        "from omegaconf import open_dict\n",
-        "import pprint\n",
-        "from tqdm import tqdm\n",
-        "import random\n",
-        "\n",
-        "import numpy as np\n",
-        "\n",
-        "import umsgpack\n",
-        "from nerfactory.viewer.server.utils import get_chunks, get_intrinsics_matrix_and_camera_to_world_h\n",
-        "\n",
-        "from nerfactory.viewer.server import viewer_utils\n",
-        "from nerfactory.viewer.server.visualizer import Viewer\n",
-        "from nerfactory.viewer.server.utils import get_camera_from_vis"
+     "data": {
+      "text/plain": [
+       "b'ok'"
       ]
+     },
+     "execution_count": 18,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# draw a red box\n",
+    "# viewer_utils.show_box_test(vis)\n",
+    "s = 3\n",
+    "scene_bounds = SceneBounds(aabb=torch.tensor([[-s, -s, -s], [s, s, s]]))\n",
+    "json_ = scene_bounds.to_json()\n",
+    "pprint.pprint(json_)\n",
+    "vis[\"sceneState/sceneBounds\"].write(json_)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 19,
+   "id": "078711a5",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "/sceneState/sceneBounds\n"
+     ]
     },
     {
-      "cell_type": "code",
-      "execution_count": null,
-      "id": "26d6da3c-e28a-4c55-9592-d90dccb86051",
-      "metadata": {},
-      "outputs": [],
-      "source": [
-        "# connect to the viewer\n",
-        "vis = Viewer(zmq_url=\"tcp://127.0.0.1:6000\")"
+     "data": {
+      "text/plain": [
+       "b'ok'"
       ]
-    },
+     },
+     "execution_count": 19,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "vis[\"sceneState/sceneBounds\"].write(json_)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 20,
+   "id": "ebb28dc5",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import numpy as np\n",
+    "import torch"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 21,
+   "id": "88b145d3",
+   "metadata": {},
+   "outputs": [
     {
-      "cell_type": "code",
-      "execution_count": null,
-      "id": "605e0131-bfbe-4309-b338-c49a46923d8f",
-      "metadata": {},
-      "outputs": [],
-      "source": [
-        "# draw a red box\n",
-        "viewer_utils.show_box_test(vis)"
+     "data": {
+      "text/html": [
+       "<table class=\"show_images\" style=\"border-spacing:0px;\"><tr><td style=\"padding:1px;\"><img width=\"256\" height=\"256\" style=\"image-rendering:pixelated; object-fit:cover;\" src=\"data:image/png;base64,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\"/></td></tr></table>"
+      ],
+      "text/plain": [
+       "<IPython.core.display.HTML object>"
       ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "image = torch.rand(256, 256, 3)\n",
+    "import mediapy as media\n",
+    "\n",
+    "media.show_image(image)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 22,
+   "id": "4da3f194",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from nerfactory.cameras.cameras import PinholeCamera"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 23,
+   "id": "ffd43fdc",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "camera = PinholeCamera(cx=100, cy=100, fx=50, fy=50)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 24,
+   "id": "7380a81b",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "json_ = camera.to_json(image=image)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 25,
+   "id": "dd2f1dc3",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "/sceneState/cameras/000000\n"
+     ]
     },
     {
-      "cell_type": "code",
-      "execution_count": null,
-      "id": "1b3ba0e1-ade8-4bda-bcb4-0dd2ca74dda4",
-      "metadata": {},
-      "outputs": [],
-      "source": [
-        "# move the camera in a spiral path\n",
-        "camera = get_camera_from_vis(vis)\n",
-        "camera_path = get_spiral_path(camera, steps=120, radius=0.5)\n",
-        "seconds = 5\n",
-        "fps = len(camera_path.cameras) / seconds\n",
-        "spf = 1 / fps\n",
-        "for cam in camera_path.cameras:\n",
-        "    viewer_utils.set_camera(vis, cam)\n",
-        "    time.sleep(spf)"
+     "data": {
+      "text/plain": [
+       "b'ok'"
       ]
+     },
+     "execution_count": 25,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "vis[f\"sceneState/cameras/000000\"].write(camera.to_json(image=image))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 26,
+   "id": "bde92904",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# vis[f\"sceneState\"].delete()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 27,
+   "id": "31cd0de1",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "vis[f\"renderingState/cameras/object/fov\"].read()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 30,
+   "id": "2c3c8231",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "/renderingState/camera/object/fov\n"
+     ]
     },
     {
-      "cell_type": "code",
-      "execution_count": null,
-      "id": "5a01cf1c-07d1-47fd-a39b-817298a83760",
-      "metadata": {},
-      "outputs": [],
-      "source": []
+     "data": {
+      "text/plain": [
+       "b'ok'"
+      ]
+     },
+     "execution_count": 30,
+     "metadata": {},
+     "output_type": "execute_result"
     }
-  ],
-  "metadata": {
-    "interpreter": {
-      "hash": "4a749acc7d255f078aee52e0584cc77b3cb5aaed1b3a7407ec4262c1bf6cb526"
-    },
-    "kernelspec": {
-      "display_name": "Python 3 (ipykernel)",
-      "language": "python",
-      "name": "python3"
+   ],
+   "source": [
+    "vis[f\"renderingState/camera/object/fov\"].write(1000)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 31,
+   "id": "36aaf931",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "/renderingState/camera/object/aspect\n"
+     ]
     },
-    "language_info": {
-      "codemirror_mode": {
-        "name": "ipython",
-        "version": 3
-      },
-      "file_extension": ".py",
-      "mimetype": "text/x-python",
-      "name": "python",
-      "nbconvert_exporter": "python",
-      "pygments_lexer": "ipython3",
-      "version": "3.8.13"
+    {
+     "data": {
+      "text/plain": [
+       "b'ok'"
+      ]
+     },
+     "execution_count": 31,
+     "metadata": {},
+     "output_type": "execute_result"
     }
+   ],
+   "source": [
+    "vis[f\"renderingState/camera/object/aspect\"].write(0.5)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "a0304523",
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3.8.13 ('nerfactory')",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.8.13"
   },
-  "nbformat": 4,
-  "nbformat_minor": 5
+  "vscode": {
+   "interpreter": {
+    "hash": "e691f033e0f2f1b9c0a11e7e81375a1e27aec87a71fd1b1eaa545f7a5e61b3f6"
+   }
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
 }
diff --git a/package.json b/package.json
deleted file mode 100644
index 5c8077a133..0000000000
--- a/package.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "dependencies": {},
-  "devDependencies": {
-    "prettier": "2.7.1"
-  }
-}
diff --git a/pyproject.toml b/pyproject.toml
index 6b63cf77b7..6109b948cc 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -26,7 +26,7 @@ line-length = 120
 max-line-length = 120
 generated-members = ["numpy.*", "torch.*", "cv2.*", "cv.*"]
 good-names-rgxs = "^[_a-zA-Z][_a-z0-9]?$"
-ignore-paths = ["nerfactory/ngp_pl/.*$", "scripts/colmap2nerf.py", "^nerfactory/cuda/.*$", "^tests/cuda/.*$", "^nerfactory/viewer/.*$", "^tests/viewer/.*$"]
+ignore-paths = ["scripts/colmap2nerf.py", "^nerfactory/cuda/.*$", "^tests/cuda/.*$"]
 
 disable = [
   "too-many-arguments",
@@ -40,7 +40,7 @@ disable = [
 
 #pytest
 [tool.pytest.ini_options]
-addopts = "--typeguard-packages=nerfactory --torchtyping-patch-typeguard --disable-warnings --ignore=tests/cuda --ignore=tests/viewer"
+addopts = "--typeguard-packages=nerfactory --torchtyping-patch-typeguard --disable-warnings --ignore=tests/cuda"
 testpaths = [
     "tests",
 ]
diff --git a/tests/viewer/test_viewer.py b/tests/viewer/test_viewer.py
deleted file mode 100644
index 5a3c31300d..0000000000
--- a/tests/viewer/test_viewer.py
+++ /dev/null
@@ -1,192 +0,0 @@
-"""
-Test the viewer comms code.
-"""
-
-
-import random
-import time
-
-import cv2
-import numpy as np
-import umsgpack
-from tqdm import tqdm
-
-import nerfactory.viewer.server.geometry as g
-from nerfactory.cameras import camera_paths
-from nerfactory.cameras.cameras import get_camera
-from nerfactory.data.datasets import Blender
-from nerfactory.utils.io import get_absolute_path
-from nerfactory.viewer.server.transformations import (
-    get_rotation_matrix,
-    get_translation_matrix,
-)
-from nerfactory.viewer.server.viewer_utils import get_default_vis, set_camera
-
-
-def test_drawing():
-    """Test drawing objects in the viewer."""
-    vis = get_default_vis()
-    vis.delete()
-
-    v = vis["shapes"]
-    v.set_transform(get_translation_matrix([1.0, 0, 0]))
-    v["box"].set_object(g.Box([1.0, 0.2, 0.3]))
-    v["box"].delete()
-    v["box"].set_object(g.Box([0.1, 0.2, 0.3]))
-    v["box"].set_transform(get_translation_matrix([0.05, 0.1, 0.15]))
-    v["cylinder"].set_object(g.Cylinder(0.2, 0.1), g.MeshLambertMaterial(color=0x22DD22))
-    v["cylinder"].set_transform(get_translation_matrix([0, 0.5, 0.1]).dot(get_rotation_matrix(-np.pi / 2, [1, 0, 0])))
-    v["sphere"].set_object(g.Mesh(g.Sphere(0.15), g.MeshLambertMaterial(color=0xFF11DD)))
-    v["sphere"].set_transform(get_translation_matrix([0, 1, 0.15]))
-    v["ellipsoid"].set_object(g.Ellipsoid([0.3, 0.1, 0.1]))
-    v["ellipsoid"].set_transform(get_translation_matrix([0, 1.5, 0.1]))
-
-    v["transparent_ellipsoid"].set_object(
-        g.Mesh(g.Ellipsoid([0.3, 0.1, 0.1]), g.MeshLambertMaterial(color=0xFFFFFF, opacity=0.5))
-    )
-    v["transparent_ellipsoid"].set_transform(get_translation_matrix([0, 2.0, 0.1]))
-
-    v = vis["meshes/convex"]
-    v["obj"].set_object(
-        g.Mesh(g.ObjMeshGeometry.from_file(get_absolute_path("tests/viewer/data/mesh_0_convex_piece_0.obj")))
-    )
-    v["stl_ascii"].set_object(
-        g.Mesh(g.StlMeshGeometry.from_file(get_absolute_path("tests/viewer/data/mesh_0_convex_piece_0.stl_ascii")))
-    )
-    v["stl_ascii"].set_transform(get_translation_matrix([0, -0.5, 0]))
-    v["stl_binary"].set_object(
-        g.Mesh(g.StlMeshGeometry.from_file(get_absolute_path("tests/viewer/data/mesh_0_convex_piece_0.stl_binary")))
-    )
-    v["stl_binary"].set_transform(get_translation_matrix([0, -1, 0]))
-    v["dae"].set_object(
-        g.Mesh(g.DaeMeshGeometry.from_file(get_absolute_path("tests/viewer/data/mesh_0_convex_piece_0.dae")))
-    )
-    v["dae"].set_transform(get_translation_matrix([0, -1.5, 0]))
-
-    v = vis["points"]
-    v.set_transform(get_translation_matrix([0, 2, 0]))
-    verts = np.random.rand(3, 1000000)
-    colors = verts
-    v["random"].set_object(g.PointCloud(verts, colors))
-    v["random"].set_transform(get_translation_matrix([-0.5, -0.5, 0]))
-
-    v = vis["lines"]
-    v.set_transform(get_translation_matrix([-2, -3, 0]))
-
-    vertices = np.random.random((3, 10)).astype(np.float32)
-    v["line_segments"].set_object(g.LineSegments(g.PointsGeometry(vertices)))
-
-    v["line"].set_object(g.Line(g.PointsGeometry(vertices)))
-    v["line"].set_transform(get_translation_matrix([0, 1, 0]))
-
-    v["line_loop"].set_object(g.LineLoop(g.PointsGeometry(vertices)))
-    v["line_loop"].set_transform(get_translation_matrix([0, 2, 0]))
-
-    v["line_loop_with_material"].set_object(g.LineLoop(g.PointsGeometry(vertices), g.LineBasicMaterial(color=0xFF0000)))
-    v["line_loop_with_material"].set_transform(get_translation_matrix([0, 3, 0]))
-
-    colors = vertices  # Color each line by treating its xyz coordinates as RGB colors
-    v["line_with_vertex_colors"].set_object(
-        g.Line(g.PointsGeometry(vertices, colors), g.LineBasicMaterial(vertexColors=True))
-    )
-    v["line_with_vertex_colors"].set_transform(get_translation_matrix([0, 4, 0]))
-
-    v["triad"].set_object(
-        g.LineSegments(
-            g.PointsGeometry(
-                position=np.array([[0, 0, 0], [1, 0, 0], [0, 0, 0], [0, 1, 0], [0, 0, 0], [0, 0, 1]])
-                .astype(np.float32)
-                .T,
-                color=np.array([[1, 0, 0], [1, 0.6, 0], [0, 1, 0], [0.6, 1, 0], [0, 0, 1], [0, 0.6, 1]])
-                .astype(np.float32)
-                .T,
-            ),
-            g.LineBasicMaterial(vertexColors=True),
-        )
-    )
-    v["triad"].set_transform(get_translation_matrix([0, 5, 0]))
-
-    v["triad_function"].set_object(g.triad(0.5))
-    v["triad_function"].set_transform(get_translation_matrix([0, 6, 0]))
-
-
-def test_streaming():
-    """Test streaming of data to the viewer."""
-
-
-def test_rendering():
-    """Test rendering."""
-
-
-def test_camera_trajectory():
-    """Test generating camera trajectory."""
-    vis = get_default_vis()
-    # vis.delete()
-
-    # sample poses from a dataset
-    dataset = Blender(data_directory="data/blender/lego")
-    dataset_inputs = dataset.get_dataset_inputs(split="train")
-    num_cameras = len(dataset_inputs.intrinsics)
-    intrinsics = dataset_inputs.intrinsics
-    camera_to_world = dataset_inputs.camera_to_world
-    idx0, idx1 = random.sample(range(num_cameras), k=2)
-    camera_a = get_camera(intrinsics[idx0], camera_to_world[idx0], None)
-    camera_b = get_camera(intrinsics[idx1], camera_to_world[idx1], None)
-
-    num_steps = 100
-    fps = 30
-    estimated_time = num_steps / fps
-    print("estimated_time:", estimated_time)
-
-    camera_path = camera_paths.get_interpolated_camera_path(camera_a, camera_b, steps=num_steps)
-
-    start = time.time()
-    for camera in camera_path.cameras:
-        set_camera(vis, camera)
-        time.sleep(1 / fps)
-    time_elapsed = time.time() - start
-    print("time_elapsed:", time_elapsed)
-
-
-def test_send_image_stream():
-    """Test sending image stream."""
-    vis = get_default_vis()
-    vis_background = vis["/Background"]
-
-    video_filename = get_absolute_path("data/instant_ngp/bear/bear.MOV")
-    images = []
-    cap = cv2.VideoCapture(video_filename)
-    ret, image = cap.read()
-    while ret:
-        image = image[:, :, ::-1]  # to RGB
-        image = cv2.resize(image, (200, 300))
-        images.append(image)
-        ret, image = cap.read()
-        # break
-
-    fps = 30
-    for image in tqdm(images):
-        rgba = cv2.cvtColor(image, cv2.COLOR_RGB2RGBA)
-        encoded = umsgpack.Ext(0x12, rgba.tobytes())
-        vis_background.set_image(encoded)
-        time.sleep(1 / fps)
-
-
-def test_perspective_camera():
-    """Test perspective camera in viewer."""
-    vis = get_default_vis()
-    vis.set_object(g.Box([0.5, 0.5, 0.5]))
-    camera = g.PerspectiveCamera(fov=90)
-    vis["/Cameras/default/rotated"].set_object(camera)
-    vis["/Cameras/default"].set_transform(get_translation_matrix([1, -1, 0.5]))
-    vis["/Cameras/default/rotated/<object>"].set_property("position", [0, 0, 0])
-
-
-if __name__ == "__main__":
-    # TODO: start the TCP server
-    test_drawing()
-    time.sleep(5)
-    test_camera_trajectory()
-    test_send_image_stream()
-    # test_perspective_camera()
-    # TODO: close the TCP server


Code review comments:
diff_hunk: @@ -213,58 +211,36 @@ def handle_zmq(self, frames: List[bytes]):
             frames: the list containing command + object to be placed in tree
         """
         cmd = frames[0].decode("utf-8")
-        print(cmd)
+        # print(cmd)
path: nerfactory/viewer/server/server.py
text: @user1:
Delete