A visual drag-and-drop editor for creating and managing Serverless Workflows with an intuitive React-based interface.
Try the editor live at: https://kshitiz1403.github.io/serverless-workflow-builder
- Drag & Drop Interface: Intuitive node-based workflow creation
- Real-time Visual Feedback: See your workflow structure as you build
- Smart Connection System: Easy linking between workflow states
- Auto-layout: Intelligent node positioning for imported workflows
- Start Node: Workflow entry points
- Operation Node: Function calls and actions
- Switch Node: Conditional branching with data/event conditions
- Event Node: Event-driven state transitions
- End Node: Workflow termination points
- Data Conditions: Expression-based branching (
.data == true
) - Event Conditions: Event-driven decision making
- Visual Condition Labels: Clear condition identification on connections
- Default Fallback: Support for default transition paths
- JSON Import: Load existing serverless workflow definitions
- JSON Export: Generate compliant serverless workflow JSON
- Example Workflows: Pre-built templates to get started
- File Upload: Direct .json file import support
- Auto-save: Automatic local storage backup
- New Workflow: Quick workflow reset with confirmation
- Live Editing: Real-time property updates
- Undo/Redo: Undo/Redo the last applied actions
- Serverless Workflow Spec: Full compliance with v0.9.x specification
- Action Support: Function references, expressions, and configurations
- Event Integration: Complete event state and condition support
- Metadata Preservation: Maintains workflow metadata on import/export
- Frontend: React 18.2.0
- Flow Library: React Flow 11.x
- Icons: Lucide React
- Styling: Pure CSS with modern design
- Build Tool: Create React App
- Deployment: GitHub Pages
- Node.js 16+ (recommended: Node.js 18)
- npm or yarn package manager
-
Clone the repository
git clone https://github.com/kshitiz1403/serverless-workflow-builder.git cd serverless-workflow-builder
-
Install dependencies
npm install
-
Start development server
npm start
-
Open in browser Navigate to
http://localhost:3000
npm run build
The build artifacts will be stored in the build/
directory.
- Add Nodes: Drag node types from the left palette onto the canvas
- Connect Nodes: Click and drag from output handles to input handles
- Configure Properties: Select nodes to edit their properties in the sidebar
- Set Conditions: For switch nodes, configure data or event conditions
- Export: Use the "Export JSON" button to generate workflow definition
- Click "Import JSON" in the sidebar
- Choose Method:
- Paste JSON directly into the text area
- Upload a .json file
- Load example workflows
- Click "Import Workflow" to visualize
- Entry point for workflow execution
- Configure workflow metadata
- Define function calls and actions
- Set function references and parameters
- Configure retry policies and timeouts
- Data Conditions: Use expressions like
.data == true
- Event Conditions: Reference specific events
- Default Path: Fallback transition option
- Multiple output connections for each condition
- Configure event references and timeouts
- Set up event-driven state transitions
- Handle event correlation and data filtering
- Terminate workflow execution
- Define completion status and outputs
The application includes a configuration interface for connecting to external operations APIs:
- Access Settings: Click the Settings button in the sidebar footer
- Configure API URL: Set the base URL for your operations API (default:
http://localhost:3001
) - Test Connection: Use the "Test Connection" button to verify API connectivity
- Advanced Options: Configure request timeout and retry attempts
- Auto-save: All settings are automatically saved to browser localStorage
- Base URL: The operations API endpoint
- Request Timeout: How long to wait for API responses (default: 30 seconds)
- Retry Attempts: Number of retry attempts for failed requests (default: 3)
- Connection Status: Real-time API connectivity indicator
The settings modal provides a health check feature that tests your API connection and displays the number of available operations.
src/
โโโ components/
โ โโโ nodes/ # Node type definitions
โ โ โโโ StartNode.js
โ โ โโโ OperationNode.js
โ โ โโโ SwitchNode.js
โ โ โโโ EventNode.js
โ โ โโโ EndNode.js
โ โโโ WorkflowEditor.js # Main canvas component
โ โโโ Sidebar.js # Node palette & properties
โ โโโ NodePropertiesEditor.js
โ โโโ JsonImporter.js # Import functionality
โ โโโ JsonExporter.js # Export functionality
โโโ styles/ # CSS files
โโโ example_workflows/ # Sample workflow definitions
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature-name
- Make your changes and test thoroughly
- Commit:
git commit -m "Add feature description"
- Push:
git push origin feature-name
- Create a Pull Request
- New Node Types: Implement additional serverless workflow states
- UI/UX Improvements: Enhance the visual design and user experience
- Export Formats: Add support for other workflow formats
- Validation: Implement workflow validation and error checking
- Testing: Add unit and integration tests
- Documentation: Improve guides and examples
- Workflow Validation: Real-time error checking and validation
- Undo/Redo System: Full action history management
- Collaborative Editing: Multi-user workflow editing
- Cloud Storage: Save workflows to cloud providers
- Template Library: Expanded collection of workflow templates
- Advanced Debugging: Workflow execution simulation
- Export Formats: Support for additional workflow standards
- Duplicate a project
- Large workflows may experience performance degradation
- Mobile responsiveness needs improvement
Undo/redo functionality not yet implemented
This project is licensed under the ISC License - see the LICENSE file for details.
- Serverless Workflow Community for the specification
- React Flow for the excellent flow library
- Lucide for beautiful icons
- Create React App for the project foundation
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: Serverless Workflow Specification
Built with โค๏ธ for the Serverless Community