```toc ``` # Notes We need three major components to work together. I would love it if the node-store and the runtime are super loosely coupled so that they could be replaced by at will. So for example i could use the “server-runtime” that executes the node-graph on the server, or the “local” runtime that executes the node-graph locally. **NODE_INTERFACE** This is where the user interacts with the node graph. The frontend loads a node-system. Then fetches all the relevant nodes from the node-store. **NODE_REGISTRY** The node-store stores all the nodes. For each node it stores a definition and the wasm blob that executes that node. **[[Projects/bachelor/RUNTIME_EXECUTOR|RUNTIME_EXECUTOR]]** The runtime gets a node-graph and returns the result after executing the node-graph. It fetches the relevant nodes from the node-store. # How to store nodes in the registry? The nodes need: ## ID: string/string/string I could imagine something like jimfx/nature/branch ## INPUTS: We need a way to define how the UI should render the input ui. Could be something like: ```json { "inputs": [ “a”: { “type”: “select”, “options”: [ “curly”, “straight” ] }, "b": { "type":"float", "value": 0.5, "max": 10.0, "min": 0 }, "res":{ "type": "integer", "value": 5, "setting":"leaves/resolution" } ] } ``` ## OUTPUTS The nodes output, could look something like this: ```json { "outputs": ["stem","float"] } ``` # How to store serialized nodes ```json { "id":"jimfx/nature/branch", "inputs": [0,8.4], "position": [0.6, 10] "meta": { "title":"Branch Node" } } ```