# FlowDrop

**Visual Workflow Automation for Drupal**

FlowDrop is a powerful visual workflow editor for Drupal that enables you to build, execute, and monitor complex automation workflows without writing code. Using an intuitive drag-and-drop interface, you can create sophisticated data processing pipelines, AI-powered automation, and event-driven workflows.

Think of it as [n8n](https://n8n.io/) or [Langflow](https://www.langflow.org/) but fully integrated with Drupal — leveraging your existing entities, users, and content.

- **Project page**: https://www.drupal.org/project/flowdrop
- **Issue queue**: https://www.drupal.org/project/issues/flowdrop
- **Documentation**: See the [`docs/`](docs/index.md) directory or the project page

## Requirements

- Drupal 11.2+
- PHP 8.2+

## Installation

```bash
composer require drupal/flowdrop
drush en flowdrop
```

See [docs/getting-started/installation.md](docs/getting-started/installation.md) for full setup instructions.

## Features

- **25+ Built-in Node Processors** — Data processing, control flow, entity operations, HTTP, AI integration, and more
- **Event-Driven Triggers** — Automatically execute workflows on entity changes, user events, or cron
- **Human-in-the-Loop** — Pause workflows for user confirmations, choices, or text input
- **Multiple Execution Modes** — Synchronous, asynchronous (queue-based), and stateful orchestration
- **Real-Time Monitoring** — Track workflow execution with detailed pipeline and job status
- **Nested Workflows** — Execute workflows from within other workflows
- **AI Integration** — Connect to OpenAI, Mistral, and other AI providers

## Modules

| Module | Description |
|--------|-------------|
| `flowdrop` | Core module — workflow entity, node processors, REST API |
| `flowdrop_orchestration` | Orchestration plugin system, contracts, and helper services powering workflow execution |
| `flowdrop_node_type` | Config entity for defining and configuring available workflow node plugins |
| `flowdrop_node_category` | Config entity for grouping node types into logical sections in the editor palette |
| `flowdrop_node_processor` | Built-in node processor plugin library |
| `flowdrop_workflow` | Workflow management and REST API endpoints |
| `flowdrop_workflow_executor` | Workflow execution engine (sync, async, stateful) |
| `flowdrop_runtime` | Runtime execution engine — queue-based processing and real-time execution monitoring |
| `flowdrop_pipeline` | Pipeline entity tracking the execution state of a complete workflow run |
| `flowdrop_job` | Async job queue integration |
| `flowdrop_session` | Session and message management for interactive workflow execution |
| `flowdrop_trigger` | Event-driven workflow triggers |
| `flowdrop_stategraph` | Stateful orchestration via LangGraph-style state graphs |
| `flowdrop_interrupt` | Human-in-the-loop interrupt handling |
| `flowdrop_playground` | Interactive workflow playground UI |
| `flowdrop_ui_components` | Svelte-based UI components (editor, form fields) |
| `flowdrop_orchestration_connector` | External orchestrator integration |

## Development

```bash
# Install dependencies
ddev composer install

# Run tests
ddev phpunit

# Check coding standards
ddev phpcs
```

See [docs/development/](docs/development/) for developer guides including how to create custom node processors and triggers.

## License

GPL-2.0-or-later. See [core/LICENSE.txt](core/LICENSE.txt).
