mirror of
https://github.com/litruv/lit.ruv.wtf.git
synced 2026-07-24 02:36:02 +10:00
- 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.
54 lines
3.7 KiB
HTML
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'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 = "";
|
|
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's the blueprint system in a nutshell!</p></section>
|
|
</article>
|
|
</main>
|
|
</body>
|
|
</html> |