diff --git a/app/package-lock.json b/app/package-lock.json
index 189b011061775b5fc78b46802a08bbd849d8302d..7f2dc2eb4f597746c8eff168cd46df129a5bd2a8 100644
--- a/app/package-lock.json
+++ b/app/package-lock.json
@@ -1,6 +1,6 @@
 {
   "name": "nodenogg.in",
-  "version": "0.1.40",
+  "version": "0.1.41",
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
@@ -17630,6 +17630,11 @@
         }
       }
     },
+    "vue-swatches": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/vue-swatches/-/vue-swatches-2.1.0.tgz",
+      "integrity": "sha512-JbSomg1penZvgHL24blA3PDgji7LPVGGSFlMo7F+jYVcxooemadI3gkMwFJVIPMikG5g160Mq+Lbph/lqFjzzw=="
+    },
     "vue-template-compiler": {
       "version": "2.6.12",
       "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz",
diff --git a/app/package.json b/app/package.json
index 179d7a515884725615c78d13baac75e692a09c7d..b40e166b03b7d3975ea023f5ab81f335707d860e 100644
--- a/app/package.json
+++ b/app/package.json
@@ -18,6 +18,7 @@
     "vue-draggable-resizable": "^2.2.0",
     "vue-emoji-picker": "^1.0.1",
     "vue-router": "^3.4.9",
+    "vue-swatches": "^2.1.0",
     "vuex": "^3.6.0"
   },
   "devDependencies": {
diff --git a/app/src/components/NodesLayer.vue b/app/src/components/NodesLayer.vue
index a59adea9888135cd869e91b79577a760652d234b..12276ad588b6093045cb4370c84cae9d4e66923c 100644
--- a/app/src/components/NodesLayer.vue
+++ b/app/src/components/NodesLayer.vue
@@ -20,10 +20,10 @@
             @dragstop="onDragstop"
             @resizestop="onResizestop"
             :drag-cancel="'.drag-cancel'"
-            style="
-              border: 2px dashed black;
-              background-color: rgb(155, 194, 216);
-            "
+            :style="{
+              border: border,
+              backgroundColor: nodes.color,
+            }"
             :min-width="200"
             :min-height="220"
           >
@@ -96,10 +96,10 @@
             @dragstop="onDragstop"
             @resizestop="onResizestop"
             :drag-cancel="'.drag-cancel'"
-            style="
-              border: 2px dashed black;
-              background-color: rgb(155, 194, 216);
-            "
+            :style="{
+              border: border,
+              backgroundColor: nodes.color,
+            }"
             :min-width="200"
             :min-height="220"
           >
@@ -135,7 +135,12 @@
                   />
                 </div>
               </template>
-
+              <v-swatches
+                v-model="color"
+                @input="chooseColor(color, nodes.node_id)"
+                show-fallback
+                fallback-input-type="color"
+              ></v-swatches>
               <div class="allemoji">
                 <div
                   class="eachemoji"
@@ -161,6 +166,7 @@ import marked from 'marked'
 import SvgButton from '@/components/SvgButton'
 import SvgButton2 from '@/components/SvgButton2'
 import draggable from '@/experimental/Draggable'
+import VSwatches from 'vue-swatches'
 
 var readmode
 
@@ -169,6 +175,9 @@ export default {
 
   data() {
     return {
+      border: '2px dashed black',
+      color: '#9bc2d8',
+
       pickupz: 1,
       localreadmode: false,
       mode: '',
@@ -209,6 +218,7 @@ export default {
 
     nodes_filtered: function () {
       return this.myNodes.filter((nodes) => {
+        console.log(nodes)
         return nodes.deleted == false
       })
     },
@@ -262,6 +272,11 @@ export default {
   },
 
   methods: {
+    chooseColor(color, nodeid) {
+      this.$store.dispatch('colorNode', { nodeid, color })
+      this.$options.myArray = this.nodes_filtered
+    },
+
     loadData() {
       this.$options.myArray = this.nodes_filtered
       this.$options.positionsArray = this.positions_filtered
@@ -369,6 +384,7 @@ export default {
           })
         }
       }
+      this.$options.myArray = this.nodes_filtered
     },
 
     editTrue(e) {
@@ -406,6 +422,7 @@ export default {
     draggable,
     SvgButton,
     SvgButton2,
+    VSwatches,
   },
 }
 </script>
diff --git a/app/src/components/OtherNodeslayer.vue b/app/src/components/OtherNodeslayer.vue
index db89f11d27715a31734b75c11e46f009ec7ee32b..1cc8900f375b50be407713eeebe8a4a97b2d7c41 100644
--- a/app/src/components/OtherNodeslayer.vue
+++ b/app/src/components/OtherNodeslayer.vue
@@ -18,10 +18,10 @@
             @resizing="onResize"
             @dragstop="onDragstop"
             @resizestop="onResizestop"
-            style="
-              border: 2px solid black;
-              background-color: rgb(205, 234, 255);
-            "
+            :style="{
+              border: border,
+              backgroundColor: nodes.color,
+            }"
             :min-width="200"
             :min-height="220"
           >
@@ -127,10 +127,10 @@
             @resizing="onResize"
             @dragstop="onDragstop"
             @resizestop="onResizestop"
-            style="
-              border: 2px solid black;
-              background-color: rgb(205, 234, 255);
-            "
+            :style="{
+              border: border,
+              backgroundColor: nodes.color,
+            }"
             :min-width="200"
             :min-height="220"
           >
@@ -236,6 +236,8 @@ export default {
 
   data() {
     return {
+      border: '2px solid black',
+      color: '#CDEAFF',
       input: '',
       search: '',
       pickupz: 1,
@@ -410,6 +412,7 @@ export default {
           })
         }
       }
+      this.$options.myArray = this.othernodes_filtered
     },
     append(emoji) {
       this.input += emoji
diff --git a/app/src/components/SvgButton.vue b/app/src/components/SvgButton.vue
index 5543dee6c310a59859a0a91ab331527e98be523b..c3c6694f0c58964aeef6b7372f08f9a14a1c599e 100644
--- a/app/src/components/SvgButton.vue
+++ b/app/src/components/SvgButton.vue
@@ -56,7 +56,7 @@ button {
 }
 
 button.nodes {
-  background-color: rgb(155, 194, 216);
+  background-color: rgba(255, 255, 255, 0);
 }
 
 .z {
diff --git a/app/src/components/SvgButton2.vue b/app/src/components/SvgButton2.vue
index 164bbfee99d050d4ce14e4f613b3c268e602bb0c..63343d53625d6aa2d0d1d80de0b806dcd1f4548b 100644
--- a/app/src/components/SvgButton2.vue
+++ b/app/src/components/SvgButton2.vue
@@ -38,7 +38,7 @@ button {
 }
 
 button.nodes {
-  background-color: rgb(155, 194, 216);
+  background-color: rgba(255, 255, 255, 0);
 }
 
 .a {
diff --git a/app/src/store/index.js b/app/src/store/index.js
index 04f1fc596678127fa4d8435b8815d70b5e1fd5c1..36e349c6f00e99d0789ae5f83366c033c8bddee4 100644
--- a/app/src/store/index.js
+++ b/app/src/store/index.js
@@ -136,6 +136,7 @@ const store = new Vuex.Store({
               node_id: state.allNodes[i].doc.nodes[j].node_id,
               node_text: state.allNodes[i].doc.nodes[j].node_text,
               deleted: state.allNodes[i].doc.nodes[j].deleted,
+              color: state.allNodes[i].doc.nodes[j].color,
             }
 
             state.otherNodes.push(newNode)
@@ -420,6 +421,7 @@ const store = new Vuex.Store({
           content_type: 'sheet',
           deleted: false,
           read_mode: false,
+          color: '#9bc2d8',
         })
 
         return pouchdb
@@ -526,6 +528,40 @@ const store = new Vuex.Store({
         })
     },
 
+    COLOR_NODE(state, e) {
+      //   console.log(e)
+      var i
+      for (i = 0; i < Object.keys(state.myNodes).length; i++) {
+        if (e.nodeid == state.myNodes[i].node_id) {
+          state.myNodes[i].color = e.color
+        }
+      }
+      pouchdb
+        .get(state.myclient)
+        .then(function (doc) {
+          // put the store into pouchdb
+
+          return pouchdb.bulkDocs([
+            {
+              _id: state.myclient,
+              _rev: doc._rev,
+              _attachments: doc._attachments,
+              nodes: state.myNodes,
+            },
+          ])
+        })
+        .then(function () {
+          return pouchdb.get(state.myclient).then(function (doc) {
+            state.myNodes = doc.nodes
+          })
+        })
+        .catch(function (err) {
+          if (err.status == 404) {
+            // pouchdb.put({  })
+          }
+        })
+    },
+
     DELETE_FLAG(state, e) {
       var i
       for (i = 0; i < Object.keys(state.myNodes).length; i++) {
@@ -782,6 +818,10 @@ const store = new Vuex.Store({
       commit('EDIT_NODE', { nodeid, nodetext })
     },
 
+    colorNode: ({ commit }, { nodeid, color }) => {
+      commit('COLOR_NODE', { nodeid, color })
+    },
+
     makeConnect: (
       { commit },
       { fromnode, tonode, xposstart, yposstart, yposend, xposend }