Skip to main content
Once you’ve analyzed a codebase, it’s time to explore it visually. This tutorial covers all the navigation and interaction features.

Starting the Visualization

Make sure both servers are running:
# Terminal 1: API Server
npx @dotenvx/dotenvx run -- dotnet run --project src/adapters/driving/api

# Terminal 2: Web Frontend
cd src/adapters/driving/web && pnpm dev
Open http://localhost:5173 in your browser.

Interface Overview

The interface consists of four main areas:
CodeGraph Interface Overview
AreaLocationPurpose
3D GraphCenterInteractive code visualization
Main ToolbarTopView controls, layout, settings
Selection ToolbarTop (appears on selection)Selection mode controls
Left SidebarLeftSearch, filters, layers
Right SidebarRightNode details, connections

Main Toolbar

The main toolbar provides global controls for the visualization.
Main Toolbar
From left to right:
IconControlDescription
Restart LayoutRecalculate node positions from scratch
Undo/RedoStep through view history
Zoom Out/InAdjust view zoom level
LabelsToggle node labels visibility
BrightnessAdjust overall graph brightness
GPU TweaksFine-tune layout algorithm parameters
Sidebar TogglesShow/hide left and right panels

Selection Toolbar

When you select nodes, the selection toolbar appears with mode controls.
Selection Toolbar
From left to right:
IconControlDescription
1Selection CountNumber of selected nodes
Selection ModeCurrent mode (pointer = new selection)
AddAdd clicked nodes to selection
SubtractRemove clicked nodes from selection
IntersectKeep only nodes in both selections
1DepthHow many hops from selection to include
Undo/RedoStep through selection history
ClearDeselect all nodes

Selection Modes

IconModeDescription
NewClick replaces current selection
AddClick adds to current selection
SubtractClick removes from selection

Selection Depth

Control how many hops from your selection to include:
  • Depth 1: Only directly connected nodes
  • Depth 2: Nodes within 2 hops
  • Depth 3+: Wider neighborhood

Keyboard Shortcuts

ShortcutAction
Ctrl+ZUndo selection
Ctrl+Shift+ZRedo selection
EscClear selection
The left sidebar contains search and filtering tools.
Left Sidebar
Find nodes by name or filter by properties:
UserService          # Find by name
type:Interface       # Filter by type
namespace:MyApp.Core # Filter by namespace
Search results highlight matching nodes in the graph.

Filters

Toggle visibility of node types:
FilterEffect
NamespacesShow/hide namespace containers
ClassesShow/hide class nodes
MethodsShow/hide method-level detail
TestsShow/hide test classes

Layers Panel

Switch between different views:
  • Structure: Default dependency view
  • Inheritance: Focus on class hierarchy
  • Call Graph: Method-level call relationships
The right sidebar shows details about selected nodes.
Right Sidebar

Node Information

When you click a node, the sidebar shows:
FieldDescription
NameClass/interface/method name
TypeNode type (Class, Interface, etc.)
FileSource file path (clickable to open)
NamespaceContaining namespace
LinesLine count

Connections

View incoming and outgoing relationships:
  • Dependencies: What this node depends on
  • Dependents: What depends on this node
  • Inheritance: Parent classes/interfaces
  • Implementations: Implementing classes
Click any connection to navigate to that node.

Attributes

View all attributes on the node, including overlay data:
coverage:percent = 85.5
git:churn = 12
complexity:cyclomatic = 8

Mouse Controls

ActionControl
RotateLeft click + drag
PanRight click + drag
ZoomScroll wheel
Select nodeLeft click on node
Focus nodeDouble-click on node
DeselectClick on empty space

Keyboard Controls

KeyAction
EscapeClear selection
Ctrl+ZUndo
Ctrl+Shift+ZRedo

Touch Controls (Mobile/Tablet)

GestureAction
One finger dragRotate
Two finger dragPan
PinchZoom
TapSelect node
Double tapFocus node

Understanding the View

Node Types

Nodes are colored by type:
TypeColorShape
NamespaceBlueLarge sphere
ClassGreenMedium sphere
InterfaceYellowMedium sphere
StructOrangeMedium sphere
EnumPurpleSmall sphere
MethodGraySmall sphere

Edge Types

Edges represent relationships:
TypeStyle
CONTAINSThin gray line
DEPENDS_ONWhite line
INHERITSThick blue line
IMPLEMENTSDashed yellow line
CALLSThin line (method-level only)

Graph Layout

Automatic Layout

The graph uses ForceAtlas2 layout algorithm. Nodes naturally cluster based on their connections—highly connected components group together.

Manual Positioning

Drag nodes to new positions:
  1. Click and hold on a node
  2. Drag to desired position
  3. Release to drop
Your manual positions are saved. Use the “Restart Layout” button to recalculate from scratch.

GPU-Accelerated Layout

For large graphs (1000+ nodes), use GPU layout:
  1. Click the GPU Tweaks button in toolbar
  2. Adjust parameters if needed
  3. Click “Compute Layout”
  4. Wait for GPU computation (progress shown)
GPU layout is significantly faster for large graphs.

Performance Tips

  • Reduce visible nodes with filters
  • Hide method-level nodes
  • Use isolation mode (select + filter to neighborhood)
  • Enable GPU layout for initial positioning
  • Filter by edge type
  • Show only strong connections
  • Use the layers panel to switch views
  • Use search with exact name
  • Check filters aren’t hiding it
  • Try type:Class or type:Interface filters

What’s Next?