Interactive D3.js mind map visualization library with a built-in ETL pipeline engine. Render career maps, org charts, or any hierarchical JSON data in the browser, and define data transformation pipelines in code.
npm install nodeq-mindmap
D3 v7 is a peer dependency:
npm install d3
import { NodeQMindMap } from 'nodeq-mindmap';
const map = new NodeQMindMap({
container: '#my-container', // CSS selector or HTMLElement
data: {
topic: 'Software Engineer',
children: [
{ topic: 'Frontend', skills: ['React', 'TypeScript'] },
{ topic: 'Backend', skills: ['Node.js', 'PostgreSQL'] },
]
},
width: 900,
height: 600,
onNodeClick: (node) => console.log(node.topic),
});
map.render();
JsonSchemaAdapter.convertToStandard() converts arbitrary JSON into the MindMapNode tree format before rendering:
import { NodeQMindMap, JsonSchemaAdapter } from 'nodeq-mindmap';
const raw = { name: 'My API', version: '2.0', routes: ['/users', '/posts'] };
const data = JsonSchemaAdapter.convertToStandard(raw);
new NodeQMindMap({ container: '#root', data }).render();
new NodeQMindMap(config)| Option | Type | Default | Description |
|---|---|---|---|
container |
string \| HTMLElement |
required | CSS selector or DOM element |
data |
any |
required | Hierarchical data (see MindMapNode) |
width |
number |
800 |
SVG width in px |
height |
number |
600 |
SVG height in px |
theme |
Partial<Theme> |
— | Colors, font, fontSize |
interactive |
boolean |
true |
Enable click/hover |
zoomable |
boolean |
true |
Enable pan/zoom |
collapsible |
boolean |
true |
Click nodes to collapse |
onNodeClick |
(node) => void |
— | Click callback |
onNodeHover |
(node) => void |
— | Hover callback |
map.render() // Draw the mind map
map.updateData(data) // Replace data and re-render
map.updateTheme(theme) // Merge theme and re-render
map.exportSVG() // Return SVG markup string
map.destroy() // Remove SVG from DOM
// Pipeline helpers
await map.createDataPipeline(name, inputSample, outputSample, options?)
map.executePipeline(inputData)
map.getAllPipelines()
map.switchToPipeline(pipelineId)
MindMapNode shapeinterface MindMapNode {
topic: string; // Node label (required)
summary?: string; // Subtitle shown in detail panels
skills?: string[]; // Tag list
children?: MindMapNode[];
}
Theme options{
nodeColor: string; // default '#4299e1'
textColor: string; // default '#2d3748'
linkColor: string; // default '#a0aec0'
backgroundColor: string; // default '#ffffff'
fontSize: number; // default 14
fontFamily: string; // default 'Arial, sans-serif'
}
PipelineEngine is a standalone class for defining and running in-memory ETL pipelines. It does not require a browser.
import { PipelineEngine } from 'nodeq-mindmap';
const engine = new PipelineEngine();
const pipeline = await engine.createPipeline(
'User ETL',
{ format: 'json', schema: { id: 'number', name: 'string' }, data: { id: 1, name: 'Alice' } },
{ format: 'json', schema: { userId: 'number', displayName: 'string' }, data: { userId: 1, displayName: 'Alice' } }
);
const result = engine.executePipeline(pipeline.id, { id: 2, name: 'Bob' });
// { processed: true, data: { id: 2, name: 'Bob' }, timestamp, pipelineId }
console.log(engine.generatePipelineCode(pipeline.id));
// Outputs a TypeScript function stub for the pipeline
PipelineEngine methodscreatePipeline(name, inputSample, outputSample, options?) // async, returns PipelineConfig
updatePipeline(id, inputSample?, outputSample?) // async
executePipeline(id, inputData) // sync, returns result object
getPipeline(id) // returns PipelineConfig | undefined
getAllPipelines() // returns PipelineConfig[]
getPipelineStats(id) // returns perf stats
generatePipelineCode(id) // returns TS function stub
# Generate an SVG mind map from a JSON file
npx nodeq-mindmap generate -i data.json -o output.svg
# Create a pipeline definition from input/output samples
npx nodeq-mindmap create-pipeline -n "My ETL" -i input.json -o output.json
The generate command uses jsdom to run D3 headlessly — no browser required.
Server-side / language-specific ports of the data model and pipeline engine are available:
packages/go/ — MindMapNode, PipelineEngine, JsonSchemaAdapter as a Go modulepackages/python/ — MindMapNode, PipelineEngine, JsonSchemaAdapter as Python dataclassesThese ports implement the same data structures and pipeline logic without the D3 visualization layer.
MIT