A drag-and-drop workflow automation application built with React and Node.js. Create visual workflows by connecting components that represent different functions like API calls, data processing, and database operations.
- Drag & Drop Interface: Intuitive component palette with visual workflow canvas
- Component System: Pre-built components for API calls, data processing, display, and database operations
- Visual Connections: Connect components with visual lines to create data flows
- Code Editor: Customize component behavior with JavaScript code
- Workflow Execution: Execute complete workflows and see results
- Save/Load: Persist workflows to database for later use
- Property Panel: Edit component properties and parameters in real-time
- React 18 with TypeScript
- Konva.js for canvas rendering
- Zustand for state management
- Axios for API calls
- Node.js with Express
- TypeScript
- MongoDB with Mongoose
- Custom workflow execution engine
- Node.js (v16 or higher)
- MongoDB (local installation or MongoDB Atlas)
- npm or yarn
-
Clone and navigate to the project:
cd workflow-builder -
Install all dependencies:
npm run install:all
-
Set up MongoDB:
- Install MongoDB locally or create a MongoDB Atlas account
- Update the
MONGODB_URIinbackend/.envif needed - Default:
mongodb://localhost:27017/workflow-builder
npm run devTerminal 1 - Backend:
cd backend
npm run devTerminal 2 - Frontend:
cd frontend
npm startThe application will be available at:
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
- Add Components: Drag components from the left palette to the canvas
- Connect Components: Click on output ports (blue circles) and drag to input ports (green circles)
- Configure Components: Select a component to edit its properties in the right panel
- Save Workflow: Click the "Save" button to persist your workflow
- Execute Workflow: Click "Execute" to run the workflow and see results
- API Caller (Circle, Green): Makes HTTP requests to external APIs
- Data Processor (Square, Blue): Processes data using custom JavaScript code
- Filter (Circle, Red): Filters array data based on conditions
- Display (Triangle, Orange): Displays data in various formats
- Database Writer (Square, Purple): Writes data to a database
Each component can be customized:
- Name: Custom display name
- Parameters: Component-specific settings
- Code: JavaScript code for data processing components
- Add an API Caller component
- Configure it to call
https://jsonplaceholder.typicode.com/posts - Add a Filter component
- Connect API Caller output to Filter input
- Configure Filter to show only posts with
userId === 1 - Add a Display component
- Connect Filter output to Display input
- Execute the workflow to see filtered results
workflow-builder/
├── frontend/ # React frontend
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── store/ # Zustand state management
│ │ └── utils/ # API utilities
├── backend/ # Node.js backend
│ ├── src/
│ │ ├── models/ # MongoDB models
│ │ ├── routes/ # API routes
│ │ ├── utils/ # Workflow execution engine
│ │ └── index.ts # Server entry point
├── shared/ # Shared TypeScript types
└── package.json # Root package.json
GET /api/workflows- Get all workflowsPOST /api/workflows- Create new workflowPUT /api/workflows/:id- Update workflowDELETE /api/workflows/:id- Delete workflowPOST /api/workflows/:id/execute- Execute workflowGET /api/component-templates- Get available component templates
- Add component template to
backend/src/utils/seedData.ts - Implement execution logic in
backend/src/utils/WorkflowExecutor.ts - Update shared types if needed
- Users: Basic user information
- Workflows: Complete workflow definitions with components and connections
- ComponentTemplates: Available component types and their configurations
- MongoDB Connection Error: Ensure MongoDB is running and connection string is correct
- Port Already in Use: Change ports in package.json scripts if needed
- CORS Issues: Backend is configured to accept requests from frontend
Add DEBUG=1 to your environment variables for additional logging.
- User authentication and authorization
- Real-time collaboration
- Component marketplace
- Workflow scheduling
- Visual debugging tools
- Export/import workflows
- More built-in component types
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is open source and available under the MIT License.