notes/Projects/bachelor/Notes.md
2024-03-01 12:37:14 +00:00

77 lines
1.7 KiB
Markdown

```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"
}
}
```