A React-based flow modeling application for the Vitruvius Framework, enabling users to visually create and edit models with automatic synchronization across heterogeneous models.
- 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
- Model Synchronization: Automatic change propagation across models
- Live Validation: Real-time consistency checks and validations
- 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
-
Configure environment (First time only)
cp .env.example .env.local
Edit
.env.localif you need to change the default backend URL. See ENVIRONMENT_SETUP.md for details. -
Start the development server
npm start
-
Open your browser Navigate to
http://localhost:3000to view the application.
npm start- Runs the app in development mode (uses.env.local)npm run build- Builds the app for production (generic build)npm run build:staging- Builds the app for staging environment (uses.env.staging)npm run build:production- Builds the app for production environment (uses.env.production)npm test- Launches the test runnernpm run eject- Ejects from Create React App (one-way operation)
For detailed environment configuration, see ENVIRONMENT_SETUP.md.
- 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
- Vitruvius Framework - Model synchronization backend
- Eclipse Modeling Framework (EMF) - Model interoperability
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