templates/workflow/README.md
</picture>
This repo contains a starter-kit for making a workflow type application using tldraw.
Install dependencies with yarn or npm install.
Run the development server with yarn dev or npm run dev.
Open http://localhost:5173/ in your browser to see the app.
This starter kit has 3 main concepts:
There are lots of useful interactions the user can take involving these concepts:
We also include a demonstration of how information might flow through a graph of nodes. Nodes update instantly to show their results. There's also a "play" button to show how execution in a real service that was making API calls might work.
src/App.tsx: The main entry-point of the app. This renders the <Tldraw /> component and brings in all the customizations the make this a workflow app.src/nodes: Everything related to nodes
src/nodes/NodeShapeUtil.tsx: The node shape util, which defines a custom tldraw shape for our nodes.src/nodes/nodePorts.tsx: Helpers for efficiently working with the ports on a node, and the values flowing through them.src/nodes/types: Each different node type. We have nodes for basic math operations, setting number with a slider, and conditionals.src/connection: Everything related to connections.
src/connection/ConnectionShapeUtil.tsx: The connection shape util, which defines a custom tldraw shape for our connections.src/connection/ConnectionBindingUtil.tsx: The connection binding util. A binding is how tldraw models relationships between shapes. Each connection has two bindings - one to the start node, and one to the end node.src/connection/insertNodeWithinConnection.tsx: A helper for inserting a new node in the middle of a connection.src/connection/keepConnectionsAtBottom.tsx: A set of tldraw side effect listeners that make sure connection are below all other shapes in the z-order.src/ports: Everything related to ports.
src/ports/Port.tsx: Defines the types for ports, and a React component for rendering them.src/ports/PointingPort.tsx: An entry in tldraw's interaction state tree which extends the built-in select tool with custom behavior when interacting with ports.src/execution: Everything related to async execution of workflow graphs
src/execution/ExecutionGraph.tsx: The execution graph, which runs workflows.src/components: UI and on-canvas react components.
src/components/WorkflowToolbar.tsx: A replacement for tldraw's default toolbar. This one renders vertically down the left of the screen, and emphasizes our workflow tools.src/components/OnCanvasComponentPicker.tsx: A panel that appears on the canvas that lets users choose a new node to insert. This is used with some of the on-canvas interactions described above.src/components/WorkflowRegions.tsx: Finds sets of connected nodes that forms workflows, draws a box around them, and provides a "play" button for running the workflow.This project is provided under the MIT license found here. The tldraw SDK is provided under the tldraw license.
Copyright (c) 2024-present tldraw Inc. The tldraw name and logo are trademarks of tldraw. Please see our trademark guidelines for info on acceptable usage.
You can find tldraw on npm here.
Found a bug? Please submit an issue.
Have questions, comments or feedback? Join our discord. For the latest news and release notes, visit tldraw.dev.
Find us on Twitter/X at @tldraw.