How raidslab/novagraph works
NovaGraph is a local-first browser application for importing or building graphs, analyzing them, and interpreting results on an interactive canvas. Its principal workflow runs from the visualizer through MainController to graph storage and igraph analytics, then maps algorithm results back to the canvas and result table. The README documents local persistence, optional Cypher, and export as additional capabilities. Source excerpts confirm key controller, worker, and parsing responsibilities; unsampled subsystems are represented only where documented.
Main entry points: index.tsx Visualizer UI · MainController.ts Main controller · routes.ts App routes · bellman-ford-a-all.tsx Algorithm results
Components 21
Presentation
- App routes
src/app/routes.ts - Landing page
src/features/landing/index.tsx - Visualizer UI
src/features/visualizer/index.tsx - Graph canvas
src/features/visualizer/renderer/index.tsx
Orchestration
- Main controller
src/MainController.ts - Algorithm selection
src/features/visualizer/algorithms/sidebar/algorithm-list.tsx - Algorithm results
src/features/visualizer/algorithms/implementations/path-reachability/bellman-ford-a-all.tsx - Result encodings
src/features/visualizer/layer-slice/index.ts
Graph data
- Graph import
src/lib/InMemoryGraphManager.ts - Kuzu controller
src/kuzu/controllers/KuzuController.ts - Kuzu services
src/kuzu/services/KuzuBaseService.ts - Query helpers
src/kuzu/helpers/KuzuQueryExecutor.ts - Local graph store
src/kuzu/services/KuzuPersistentAsync.ts
Analytics
- igraph controller
src/igraph/IgraphController.ts - Analytics worker
src/igraph/workers/igraph.worker.impl.ts - igraph WASM
src/graph.js
Exploration tools
- Cypher query editor
src/components/ui/code-editor/index.tsx - Query results
src/features/visualizer/queries/query-output.tsx - Result comparison
src/features/visualizer/compare/index.ts - Graph export
src/features/visualizer/export/export-dropdown-button.tsx
Other components
- Analyst
Connections 26
- Analyst → App routes: opens app
- App routes → Landing page: routes to
- App routes → Visualizer UI: routes to
- Analyst → Visualizer UI: explores graph
- Visualizer UI → Main controller: uses orchestration
- Visualizer UI → Graph canvas: displays graph
- Visualizer UI → Graph import: imports graph
- Graph import → Kuzu controller: loads graph
- Main controller → Kuzu controller: controls storage
src/MainController.ts - Kuzu controller → Kuzu services: selects service
src/kuzu/controllers/KuzuController.ts - Kuzu services → Query helpers: executes queries
src/kuzu/services/KuzuBaseService.ts - Kuzu services → Local graph store: persists locally
- Visualizer UI → Algorithm selection: selects algorithms
- Algorithm selection → Main controller: requests analysis
- Main controller → igraph controller: runs analytics
src/MainController.ts - igraph controller → Analytics worker: dispatches task
src/igraph/IgraphController.ts - Analytics worker → igraph WASM: calls algorithms
src/igraph/workers/igraph.worker.impl.ts - Analytics worker → Algorithm results: returns results
- Algorithm results → Result encodings: maps result
src/features/visualizer/algorithms/implementations/path-reachability/bellman-ford-a-all.tsx - Result encodings → Graph canvas: encodes canvas
- Algorithm results → Visualizer UI: shows output
- Visualizer UI → Cypher query editor: opens optional query
- Cypher query editor → Main controller: submits query
- Main controller → Query results: returns query data
- Visualizer UI → Result comparison: compares results
- Visualizer UI → Graph export: exports graph