Graphy


A Flutter-based interactive graph visualization and visual programming tool designed to help learn and understand graph algorithms through hands-on exploration.


Overview


Graphy is an educational application that combines graph theory with visual programming. It provides a split-screen interface where users can create and manipulate graphs while simultaneously building custom algorithms using a node-based visual programming system.


Features



Interactive Graph Editor



Visual Programming Interface



Technical Architecture



Core Components


Graph System (lib/graph.dart)

Visual Programming (lib/visual_programmer/)

UI Components (lib/ui/)


Project Structure


lib/
├── algorithms/         # Graph algorithm implementations
│   └── dfs.dart        # Depth-first search
├── ui/
│   ├── screens/        # Main application screens
│   └── widgets/        # Reusable UI components
├── utils/              # Utility classes (vectors, drag helpers, etc.)
├── visual_programmer/  # Visual programming system
│   └── nodes/          # Available programming nodes
├── algorithms.dart     # Algorithm registry
├── graph.dart          # Core graph data structures
└── main.dart           # Application entry point

Getting Started



Prerequisites



Installation


  1. Clone the repository
  2. Install dependencies:
flutter pub get
  1. Run the application:
flutter run

Usage



Creating a Graph


  1. Click anywhere in the Graph View to create a vertex
  2. Hold Shift and click another vertex to create an edge between them
  3. Click a vertex to select it
  4. Press Delete to remove the selected vertex

Building Visual Programs


  1. Right-click in the Programming View to open the node context menu
  2. Select and place nodes from the available categories
  3. Connect nodes by dragging from output to input connectors
  4. Use the Start node to access graph vertices and edges
  5. Build your algorithm logic using loops, conditionals, and data operations

Development



Key Design Patterns



Extending the Project


Creating New Nodes

  1. Create a new file in lib/visual_programmer/nodes/
  2. Implement the LogicalNode interface
  3. Define input/output variables with appropriate types
  4. Implement the generateSteps() method for program execution

Educational Purpose


Graphy is designed as a learning tool for:


Future Enhancements


Potential areas for expansion:


License


This project is a personal / educational project.


Author


Lukas