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