diff --git a/application/source/data/datasource/dom.mjs b/application/source/data/datasource/dom.mjs
new file mode 100644
index 0000000000000000000000000000000000000000..56d0aa407502e8e727470d7af84e306c1147b0df
--- /dev/null
+++ b/application/source/data/datasource/dom.mjs
@@ -0,0 +1,122 @@
+/**
+ * Copyright schukai GmbH and contributors 2022. All Rights Reserved.
+ * Node module: @schukai/monster
+ * This file is licensed under the AGPLv3 License.
+ * License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
+ */
+
+import {  instanceSymbol } from "../../constants.mjs";
+import {  isObject } from "../../types/is.mjs";
+import { Datasource } from "../datasource.mjs";
+
+export {DomStorage};
+
+
+/**
+ * The DomStorage is a class that stores data in memory.
+ *
+ * @license AGPLv3
+ * @copyright schukai GmbH
+ * @memberOf Monster.Data.Datasource
+ */
+class DomStorage extends Datasource {
+    /**
+     * @param {Object} [options] options contains definitions for the datasource.
+     */
+    constructor(options) {
+        super();
+
+        if (isObject(options)) {
+            this.setOptions(options);
+        }
+    }
+
+    /**
+     * This method is called by the `instanceof` operator.
+     * @returns {symbol}
+     */
+    static get [instanceSymbol]() {
+        return Symbol.for("@schukai/monster/data/datasource/storage/dom-storage");
+    }
+
+    /**
+     * @property {Object} defaults
+     * @property {Object} defaults.read
+     * @property {string} defaults.read.selector
+     * @property {Object} defaults.write
+     * @property {string} defaults.write.selector
+     */
+    get defaults() {
+        return Object.assign({}, super.defaults, {
+            read: {
+                selector: undefined,
+            },
+            write: {
+                selector: undefined,
+            }
+        });
+    }
+
+    /**
+     * @return {Promise}
+     * @throws {Error} The read selector is not defined
+     * @throws {Error} There are no storage element
+     */
+    read() {
+        const self = this;
+
+        let selector = self.getOption("read.selector", undefined);
+        if (!selector) {
+            throw new Error("The read selector is not defined");
+        }
+
+        let storage = document.querySelector(selector);
+        if (!storage) {
+            throw new Error("There are no storage element");
+        }
+
+        return new Promise((resolve, reject) => {
+            try {
+                let data = JSON.parse(storage.innerHTML);
+                self.set(data)
+                resolve(data);
+            } catch (e) {
+                reject(e);
+            }
+            ;
+        })
+    }
+
+    /**
+     * @return {Promise}
+     * @throws {Error} The write selector is not defined
+     * @throws {Error} There are no storage element
+     */
+    write() {
+
+        const self = this;
+
+        let selector = self.getOption("write.selector");
+        if (!selector) {
+            throw new Error("The write selector is not defined");
+        }
+
+        let storage = document.querySelector(selector);
+        if (!storage) {
+            throw new Error("There are no storage element");
+        }
+
+        return new Promise((resolve, reject) => {
+            try {
+                storage.innerHTML = JSON.stringify(self.get());
+                resolve(storage);
+            } catch (e) {
+                reject(e);
+            }
+        })
+
+
+    }
+
+}
+
diff --git a/development/test/cases/data/datasource/dom.mjs b/development/test/cases/data/datasource/dom.mjs
new file mode 100644
index 0000000000000000000000000000000000000000..02258e42cd7c326c6072ecee64e1121cf61bd290
--- /dev/null
+++ b/development/test/cases/data/datasource/dom.mjs
@@ -0,0 +1,18 @@
+import {expect} from "chai"
+import {DomStorage} from "../../../../../application/source/data/datasource/dom.mjs";
+
+
+describe('ServeDomr', function () {
+
+    it('should init', function () {
+
+        const dom = new DomStorage({
+            
+        })
+
+        expect(dom).to.be.not.null
+
+
+    })
+
+});