A powerful, intuitive visual workflow builder for creating interactive questionnaires, business processes, and guided experiences with conditional logic and multimedia support.
Live Demo β’ Documentation β’ Getting Started β’ Features
- π±οΈ Drag & Drop Interface - Intuitive node-based workflow creation
- π Automatic Layout - Smart positioning with Dagre algorithm
- πΎ Import/Export - Save and load workflows as JSON
- π» Ghost Nodes - Visual feedback during drag operations
- π Extensible Architecture - Easy to add custom node types
- π Trigger Nodes - Define workflow entry points
- β‘ Action Nodes - Execute business logic and tasks
- β Question Nodes - Interactive forms with multiple input types
- π Audio Nodes - Integrate guided audio experiences
- π Condition Nodes - Branch workflows based on logic
- π End Nodes - Define workflow completion points
- π― Smart Edge Management - Automatic reconnection on node deletion
- π Conditional Branching - Create complex decision trees
- π± Responsive Design - Works on desktop and mobile devices
- π Real-time Preview - Test workflows as you build
- Node.js 18.x or higher
- npm or yarn package manager
-
Clone the repository
git clone https://github.com/yourusername/workflow-builder.git cd workflow-builder
-
Install dependencies
npm install # or yarn install
-
Start development server
npm run dev # or yarn dev
-
Open your browser Navigate to
http://localhost:3000
# Build for production
npm run build
# Preview production build
npm run preview
# Start production server
npm run start
- Start with a Trigger Node - Every workflow begins with a trigger
- Add Action Nodes - Click the "+" button on edges to add nodes
- Configure Nodes - Click any node to open its configuration modal
- Connect Nodes - Drag from output handles to input handles
- Test Your Workflow - Use the preview feature to test
The entry point of your workflow. Configure when and how the workflow starts.
General-purpose nodes for executing tasks and operations.
Interactive input nodes supporting:
- Text input
- Number input
- Radio buttons
- Checkboxes
- Scale/rating
- Custom validation
Play audio files with configurable:
- Autoplay settings
- Playback controls
- Duration tracking
Create branching logic with:
- Multiple branches (not limited to true/false)
- Dynamic handle creation
- Visual branch labels
- Automatic layout adjustment
Mark the completion of a workflow path.
// Example condition configuration
{
type: 'condition',
data: {
branches: [
{ id: 'branch1', label: 'Age < 18', condition: 'age < 18' },
{ id: 'branch2', label: 'Age >= 18', condition: 'age >= 18' }
]
}
}
The specialized questionnaire builder provides:
- Question Types: Text, number, radio, checkbox, scale
- Validation: Required fields, custom rules
- Conditional Logic: Show/hide questions based on answers
- Progress Tracking: Visual progress indicators
- Response Collection: Export responses as JSON/CSV
Shortcut | Action |
---|---|
Delete |
Delete selected node/edge |
Ctrl+S |
Save workflow |
Ctrl+O |
Load workflow |
Ctrl+Z |
Undo (coming soon) |
Escape |
Cancel current operation |
workflow-builder/
βββ components/ # Vue components
β βββ nodes/ # Node type components
β βββ ... # UI components
βββ pages/ # Nuxt pages
βββ composables/ # Vue composables
βββ assets/ # Styles and images
βββ plugins/ # Vue plugins
βββ public/ # Static files
- Create a new component in
components/nodes/
:
<template>
<div class="custom-node">
<Handle type="target" :position="Position.Top" />
<div class="node-content">
{{ data.label }}
</div>
<Handle type="source" :position="Position.Bottom" />
</div>
</template>
<script setup>
import { Handle, Position } from '@vue-flow/core'
defineProps(['data'])
</script>
- Register your node type:
const nodeTypes = {
custom: CustomNode,
// ... other node types
}
interface Workflow {
nodes: Node[]
edges: Edge[]
viewport: Viewport
}
interface Node {
id: string
type: string
position: { x: number; y: number }
data: Record<string, any>
}
interface Edge {
id: string
source: string
target: string
sourceHandle?: string
targetHandle?: string
}
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create your 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.
- Built with Vue.js and Nuxt 3
- Flow visualization powered by Vue Flow
- Graph layout by Dagre
- UI components from Naive UI and Vuetify
- π¬ Discord: @phinolex