Files
lit.ruv.wtf/website/blog/node-graphs/index.html
Max Litruv Boonzaayer 35b049b833 Add static blog generator and initial blog posts
- Implement StaticBlogGenerator class for generating static HTML blog pages from markdown data.
- Create initial blog index page (blog.html) with links to posts.
- Add individual blog post pages for "Markdown Formatting Test", "Building Interactive Node Graphs", "Welcome to My Blog", "test d d d d", and "testddd".
- Include markdown rendering capabilities for formatting content in blog posts.
2026-05-10 19:46:31 +10:00

54 lines
3.7 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Building Interactive Node Graphs - Blog</title>
<meta name="description" content="Lit.ruv.wtf blog posts.">
<link rel="canonical" href="https://lit.ruv.wtf/blog/node-graphs/">
<link rel="icon" type="image/png" sizes="32x32" href="/logos/32px.png">
<link rel="icon" type="image/png" sizes="64x64" href="/logos/64px.png">
<link rel="stylesheet" href="/styles/main.css">
</head>
<body class="blog-page">
<nav class="quick-links" aria-label="Primary">
<a href="/blog.html" class="quick-link">blog</a>
<a href="/docs/" class="quick-link">docs</a>
<a href="https://github.com/litruv" target="_blank" rel="noopener" class="quick-link">github</a>
<a href="https://bsky.app/profile/lit.mates.dev" target="_blank" rel="noopener" class="quick-link">bluesky</a>
<a href="/materials" class="quick-link">materials</a>
</nav>
<main class="blog-shell">
<a class="blog-logo-link" href="/" aria-label="Back to main site">
<img src="/logos/LogoFull.svg" alt="lit.ruv.wtf" class="blog-logo" />
</a>
<article class="blog-card" aria-labelledby="blog-post-title">
<header class="blog-post-header">
<h1 id="blog-post-title" class="blog-post-title">Building Interactive Node Graphs</h1>
<p class="blog-post-meta"><span>April 15, 2026</span><span aria-hidden="true">-</span><span>Max Litruv Boonzaayer</span></p>
<div class="blog-post-tags"><span class="blog-tag">javascript</span><span class="blog-tag">graph-systems</span><span class="blog-tag">tutorial</span></div>
</header>
<section class="blog-post-content"><h1 class="md-h1">Building Interactive Node Graphs</h1>
<p class="md-p">In this post, I&#39;ll share some insights on building interactive node-based graph systems for the web.</p>
<h2 class="md-h2">Why Node Graphs?</h2>
<p class="md-p">Node graphs are powerful visual programming tools that make complex logic easier to understand and manipulate:</p>
<ul class="md-ul"><li class="md-li"><strong>Visual Clarity</strong>: See the flow of data and execution at a glance</li><li class="md-li"><strong>Modularity</strong>: Each node is a self-contained unit</li><li class="md-li"><strong>Flexibility</strong>: Easy to add new node types and behaviors</li></ul>
<h2 class="md-h2">The Architecture</h2>
<p class="md-p">The system is built on several key classes:</p>
<p class="md-p">### NodeBase<br />The abstract base class that all nodes inherit from. It defines the blueprint interface:</p>
<pre class="md-pre"><code class=" language-javascript">class NodeBase {
static NodeType = &quot;&quot;;
static BlueprintPure_GetDefaultPins() { }
BlueprintNativeEvent_OnRender(article, graphNode, renderCtx) { }
async BlueprintCallable_Execute(ctx) { }
}</code></pre>
<p class="md-p">### Node Registry<br />Automatically registers node types and creates instances based on type strings.</p>
<p class="md-p">### Execution Context<br />Handles the graph traversal and execution flow when nodes are triggered.</p>
<h2 class="md-h2">Creating Custom Nodes</h2>
<p class="md-p">To create a new node type:</p>
<ol class="md-ol"><li class="md-li">Extend <code class="md-code">NodeBase</code></li><li class="md-li">Set a unique <code class="md-code">NodeType</code></li><li class="md-li">Define pins with <code class="md-code">BlueprintPure_GetDefaultPins()</code></li><li class="md-li">Implement rendering in <code class="md-code">BlueprintNativeEvent_OnRender()</code></li><li class="md-li">Implement logic in <code class="md-code">BlueprintCallable_Execute()</code></li></ol>
<p class="md-p">That&#39;s the blueprint system in a nutshell!</p></section>
</article>
</main>
</body>
</html>