Skip to content

Omega FlowWorkflow Engine & Editor

A node-based event-driven workflow engine with a fully customizable React editor

Installation

bash
pnpm add @omega-flow/engine @omega-flow/types
pnpm add @omega-flow/editor    # for the visual editor

Quick Example

tsx
import { ReactFlow, Background, Controls, Panel } from "@xyflow/react";
import {
  WorkflowEditor,
  NodesPanel,
  DetailPanel,
  ControlPanel,
  useNodes,
  useEdges,
  useNodeRegistry,
  useDragAndDrop,
  defaultNodeTypes,
} from "@omega-flow/editor";

function MyEditor() {
  const { nodes, onNodesChange } = useNodes();
  const { edges, onEdgesChange, onConnect } = useEdges();
  const { reactFlowNodeTypes } = useNodeRegistry();
  const { onDragOver, onDrop } = useDragAndDrop();

  return (
    <ReactFlow
      nodes={nodes}
      edges={edges}
      onNodesChange={onNodesChange}
      onEdgesChange={onEdgesChange}
      onConnect={onConnect}
      onDragOver={onDragOver}
      onDrop={onDrop}
      nodeTypes={reactFlowNodeTypes}
    >
      <Background />
      <Controls />
      <Panel position="top-left">
        <NodesPanel />
      </Panel>
      <Panel position="bottom-right">
        <DetailPanel />
      </Panel>
    </ReactFlow>
  );
}

function App() {
  return (
    <WorkflowEditor nodeTypes={defaultNodeTypes}>
      <MyEditor />
    </WorkflowEditor>
  );
}