Drag'N'Drop Web Frontend for Building and Managing Airflow DAGs
Project description
Windmill
Drag'n'drop web app to manage and create Airflow DAGs. The goal is to have a Web UI that can generate YML Dag Definitions, integrating with custom operators and potentially existing DAGs. YML DAGs can then be synced to a remote repo
- Front end is built using React on Typescript
- Back end is built using Flask on Python 3.6+
Getting Started
- Install with
pip install airflow-windmill
- Airflow is expected to be installed on the system
- Otherwise it can be packaged with windmill using
pip install airflow-windmill[airflow]
- Run
windmill init
to create a local Windmill project cd windmill-project
- Run
windmill run
from this folder to run the app locally
MVP Required Features
Front-End Features
- Dynamic Operators
- Menu Dropdowns
- Load Operators from App
- Format operator display into classes
- Search functionality for operators
- Basic operator level properties
- Implement DAG level properties
- New DAG Functionality
- Parameter Tooltips
- Render arbitrary viewport windows for New/Save/Load etc
- Overwrite/Save prompt on New
- DAG renaming and save functionality
- Open dag from menu
- Switch nav menu to icons
- Make input/output nodes more clear
- Make save/load more efficient by removing non-essential values
- Check if file already exists on rename
- Prompt save if there are nodes on open
- Fix loss of state on refresh bug
- Put File details in File Browser
- Make Flask Backend URI configurable
- Add a last saved time to NavBar
Back-End Features
- Generate Operator Lists
- CLI to start Web and Front End
- Generate DAG Spec
- CLI to create new windmill project
- CLI to start windmill from a windmill project
- Implement windmill-dev start
- Save/Load Windmill Files functionality
- Get default values
- Pull parameters from parent classes
- Move airflow dependency as extra
- ? Dedupe multi import operators - nothing preventing this but underlying issue is fixed
- Convert WML into Python DAG
- Get WML owner and last-modified details during wml list
- Allow custom operators
- Add defaults to CLI --help commands
- Strategy for Python Opjects (e.g. callables) - maybe import statement?
- Backport existing Python DAGs to WMLs
- Allow YML updates to propogate to WMLs
Other features
- Validate on backend or front end or both?
- Doco
Dev User Guide
To run as a dev:
- Clone from git
- Run
poetry install
- Run
windmill-dev start-backend
- Run
windmill-dev start-frontend
Future Usage Patterns
- Auto-sync for windmill project to git
Deployment
cd scripts
sh build.sh {{PYPI_USER}} {{PYPI_PASS}}
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
airflow-windmill-0.0.1.tar.gz
(1.5 MB
view hashes)
Built Distribution
Close
Hashes for airflow_windmill-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1f96b9d37366d0c37e5710f5002c4258deab2a01ee98f291068f5e3357323726 |
|
MD5 | 9fb6ae5e7d91443f57cecc7c6cb92fd0 |
|
BLAKE2b-256 | c97ccbeccc883b71353296f09c69f1d6b59f120bab996b200c75b517c4871abe |