A professional Electron-based application for creating, editing, and analyzing causal graphs with an extensible plugin system and advanced visualization controls.
- Intuitive Interface: Single unified view combining editing and analysis
- Context Menu Operations: Right-click to add nodes, edit properties, or delete elements
- Visualization Preferences: Comprehensive controls for node sizing, arrow scaling, and layout
- Performance Optimized: Smooth navigation for graphs of any size with intelligent physics management
- Professional Styling: Clean, modern interface with responsive design
- Visual Connections: Directed edges with positive (+) and negative (-) influence types
- Weighted Relationships: Configurable edge weights for influence strength
- Advanced Arrow Controls: Adjustable arrow scaling with value-based sizing and skinny arrow options
- Context Menus: Right-click nodes and edges for quick editing and deletion
- Plugin Architecture: Extensible analysis system with Python-powered plugins
- Real-time Updates: Analysis automatically updates as you modify the graph
- Rich Results: Detailed influence scores, causal paths, and execution metadata
- NetworkX Integration: Sophisticated graph algorithms using industry-standard library
- Node Controls: Manual sizing (8-32px) with auto-size based on connection count
- Arrow Scaling: Adjustable arrow sizes (0.5-2.5x) with value-based proportional scaling
- Physics Management: Tight/Normal/Loose layout presets with custom spring length
- Performance Settings: Auto-disable physics for large graphs (>50 nodes) with manual override
- Skinny Arrows: Optional thin arrow style for cleaner dense graph visualization
- Reset Controls: One-click return to default settings with "Stabilize & Disable" optimization
- User-Serviceable: Add custom analysis plugins in the user data directory
- Built-in Analytics: Causal path analysis with positive/negative pathway detection
- Easy Access: Tools menu provides direct access to plugin folder
- Extensible: Full plugin development framework with comprehensive documentation
# Clone the repository
git clone https://github.com/BlockSecCA/graph-app.git
cd graph-app
# Install dependencies
npm install
# Start the application
npm start- Create Nodes: Right-click on empty space → "Add Node"
- Connect Nodes: Right-click on empty space → "Add Edge" → Select source and target
- Edit Elements: Right-click on nodes/edges for edit/delete options
- Customize Visualization: Click "⚙️ Visualization" button to adjust node sizes, arrows, and performance
- Analyze Graph: Select plugin from dropdown and click "Run Analysis"
- Save/Load: Use toolbar buttons for graph persistence
- 📂 Load Graph (toolbar button): Load graph from JSON file using file browser
- 💾 Save Graph (toolbar button): Save current graph as JSON file
- File → New Graph (F5): Create a new empty graph (reloads application)
- File → Restart Application (Ctrl+Shift+R): Restart the application
The application supports custom analysis plugins written in Python. See PLUGIN.md for complete development guide.
Plugins are Python modules located in:
- Development:
py/plugins/ - Installed App: User data directory (accessible via Tools → Open Plugins Folder)
Example plugin structure:
plugins/
├── my-analysis/
│ ├── __init__.py # Plugin metadata
│ ├── analysis.py # Main analysis function
│ └── README.md # Documentation
- Single-Page Application: No more iframe isolation
- Shared State Management: Real-time synchronization between editor and analysis
- Event-Driven: Reactive updates using custom event system
- Plugin Integration: Dynamic plugin discovery and execution
- Frontend: Electron, vis-network, HTML5/CSS3/JavaScript
- Backend: Node.js, Python integration via Pyodide
- Analysis: NetworkX, custom plugin architecture
- Build: electron-builder for cross-platform packaging
- Node.js: v20.19.2 or higher
- npm: Latest version
- Python: Integrated via Pyodide (no local Python required)
npm start # Start development server
npm test # Run test suite
npm run build # Build for production
npm run pack # Package for current platform
npm run build:all # Build for all platformscausal-graph-tool/
├── src/
│ ├── unified-interface.html # Main application interface
│ └── shared-state.js # State management system
├── py/
│ ├── plugins/ # Built-in analysis plugins
│ └── plugin_loader.py # Plugin discovery system
├── main.js # Electron main process
├── package.json # Project configuration
└── docs/ # Documentation
├── PLUGIN.md # Plugin development guide
├── CHANGELOG.md # Version history
└── ROADMAP.md # Future plans
npm run build:winnpm run build:macnpm run build:linuxnpm run build:all- ⚡ Large Graph Performance: Automatic physics optimization for graphs >50 nodes
- 🎛️ Visualization Preferences: Comprehensive controls for node sizing, arrow scaling, and layout
- 📊 Performance Monitoring: Real-time feedback on graph performance with color-coded status
- 🔧 Manual Controls: Physics engine toggle with "Stabilize & Disable" optimization
- 🎯 Navigation Restored: Smooth zoom and pan for all graph sizes
- 📐 Node Size Control: Manual sizing (8-32px) with auto-size based on connections
- 🏹 Arrow Scaling: Adjustable arrows (0.5-2.5x) with value-based proportional scaling
- ⚙️ Physics Presets: Tight/Normal/Loose layout options with custom spring length
- 💾 Persistent Preferences: Settings saved across app sessions
- 🔄 Reset to Defaults: One-click restoration of original settings
- 🎯 Unified Interface: Complete redesign eliminating iframe isolation
- 🔌 Plugin System: Extensible analysis framework with Python integration
- 🎨 Context Menus: Professional editing interface with right-click operations
- 📊 Enhanced Analysis: Real-time analysis with rich result visualization
- 🛠 User-Serviceable: Plugin development and customization capabilities
- Plugin Development Guide - Complete guide for creating analysis plugins
- Change Log - Version history and updates
- Roadmap - Future development plans
- Graph Specification - Data format documentation
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Repository: https://github.com/BlockSecCA/graph-app
- Issues: https://github.com/BlockSecCA/graph-app/issues
- Plugin Documentation: PLUGIN_SPEC.md
Causal Graph Tool v2.2.1 - Professional graph analysis with advanced visualization and performance optimization.
Carlos - BlockSecCA