VisualFlow

CRM Pipeline Board

Deals flow through pipeline stages — drag a deal node between stage columns to update it.

Drag nodes, pan and zoom — this is a live React Flow canvas.

How it works

Stage columns are group nodes; deal cards are child nodes constrained to their parent. Dropping a card into another column updates the deal's stage in your database.

Source code

tsx
const stageNodes = stages.map((s) => ({
  id: s.id, type: "group", position: s.position, data: { label: s.name },
}));
const dealNodes = deals.map((d) => ({
  id: d.id, parentId: d.stageId, extent: "parent",
  position: d.offset, data: { label: d.name },
}));