Skip to main content

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 Typescript React
  • Back end is built using Flask on Python 3.6+

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
  • Check if file already exists on rename
  • Prompt save if there are nodes on open
  • Fix loss of state on refresh bug
  • Icons
  • Put File details in File Browser
  • Pull PORT from Flask host
  • 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
  • Validate incoming WMLs (is there a need for this?)
  • Get default values
  • Pull parameters from parent classes
  • [?] Dedupe multi import operators - nothing preventing this but underlying issue is fixed
  • 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
  • Allow user specified Airflow Version - isolate to docker or something so we can run 2.7 if we want?

MVP Usage Pattern

To run as a user:

  1. Install with pip install airflow-windmill
  2. Run windmill init to create a local Windmill project
  3. Run windmill run from this folder to run the app locally

To run as a dev:

  1. Clone from git
  2. Run poetry install
  3. ?Run windmill-dev install-node-depts
  4. Run windmill-dev start to start a flask server and use parcel to serve frontend

Future Usage Patterns

  • Auto-sync for windmill project to git

Getting Started

This package can be installed and run using Pip:

pip install windmill-airflow

Deployment

# Run NPM build
cd windmill/http/app/
npm run-script build

# Update git ...
cd ../../../

# Poetry build
poetry build
poetry publish

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

windmill-airflow-0.0.2.tar.gz (1.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

windmill_airflow-0.0.2-py3-none-any.whl (1.5 MB view details)

Uploaded Python 3

File details

Details for the file windmill-airflow-0.0.2.tar.gz.

File metadata

  • Download URL: windmill-airflow-0.0.2.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.0b1 CPython/3.6.9 Linux/4.4.0-18362-Microsoft

File hashes

Hashes for windmill-airflow-0.0.2.tar.gz
Algorithm Hash digest
SHA256 3eda1c10d4022791235b30780843bb6468342c92ce374fc7530f4d677d89d200
MD5 5819d5d4810f7f83466d4581a89a9369
BLAKE2b-256 51ba1fefdd5f3d3be306bec01ccbe8fa963e097738f75efba87b7949d20657d6

See more details on using hashes here.

File details

Details for the file windmill_airflow-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: windmill_airflow-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.0b1 CPython/3.6.9 Linux/4.4.0-18362-Microsoft

File hashes

Hashes for windmill_airflow-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5d60e5d6b00a5bf2e3496707835f401468b6e22b0cedd76cc3604fe3a39405b2
MD5 19378566cd2e62419f54b6e5627c64ae
BLAKE2b-256 be8fcfc037c1332f6dd4faefd5a0a5d3cb2766fd0263797ae7d9ccececdfed2d

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.2 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page