A React-based flow modeling application for creating and managing Vitruvius diagrams.
- Drag & Drop Interface: Create flow diagrams by dragging nodes from the sidebar
- Editable Nodes: Double-click nodes to edit their labels
- Flow Connections: Connect nodes to create relationships
- Undo/Redo Functionality: Use Ctrl+Z to undo and Ctrl+Y to redo changes
- Node Deletion: Delete nodes by selecting them and clicking the delete button
- Deploy Functionality: Deploy your models to the Vitruvius backend
- Modern UI: Clean and intuitive user interface
The project follows a well-organized architecture with clear separation of concerns:
src/
├── components/ # React components organized by feature
│ ├── flow/ # Flow-related components
│ ├── layout/ # Layout components
│ ├── ui/ # Reusable UI components
│ └── index.ts # Component exports
├── hooks/ # Custom React hooks
├── services/ # API and external service integrations
├── types/ # TypeScript type definitions
├── utils/ # Utility functions
├── constants/ # Application constants
├── styles/ # Global styles
└── App.tsx # Main application component
For detailed architecture documentation, see ARCHITECTURE.md.
-
Clone the repository
git clone <repository-url> cd Vitruv-UI-Methodologist
-
Install dependencies
npm install
-
Start the development server
npm start
-
Open your browser Navigate to
http://localhost:3000to view the application.
npm start- Runs the app in development modenpm run build- Builds the app for productionnpm test- Launches the test runnernpm run eject- Ejects from Create React App (one-way operation)
- Creating Nodes: Drag UML elements from the sidebar onto the canvas
- Editing Nodes: Double-click any node to edit its label
- Connecting Nodes: Click and drag from one node's handle to another to create connections
- Deleting Nodes: Select a node and click the red delete button (×) that appears
- Undo/Redo: Use Ctrl+Z to undo changes or Ctrl+Y to redo them
- Deploying: Click the "Deploy" button to send your model to the backend
- React 19 - UI framework
- TypeScript - Type safety
- React Flow - Flow diagram library
- React DnD - Drag and drop functionality
The project follows React best practices with:
- Component-based architecture with clear separation of concerns
- Custom hooks for reusable logic
- TypeScript for type safety
- Modular styling with global CSS and utility classes
- Service layer for API communication
- Follow the established folder structure
- Create components in the appropriate directories
- Add TypeScript types for new features
- Update the architecture documentation
- Write tests for new functionality
- Fork the repository
- Create a feature branch
- Make your changes following the established patterns
- Add tests for new functionality
- Submit a pull request