Skip to main content

Drag'N'Drop Web Frontend for Building and Managing Airflow DAGs

Project description

Windmill

Build Status

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

  1. Install with pip install airflow-windmill
    1. Airflow is expected to be installed on the system. This allows Windmill to run with arbitrary versions of Airflow
    2. Otherwise it can be packaged with windmill using pip install airflow-windmill[airflow]. The version is defined in pyproject.toml
  2. Run windmill init to create a local Windmill project
  3. cd windmill-project
  4. 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
  • Make save/load more efficient by removing non-essential values
  • Switch nav menu to icons
  • Add convert DAG call
  • Add hotkeys to menu functions
  • Make input/output nodes more clear
  • 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 Browse
  • Make Flask Backend URI configurable
  • Add a last saved time to NavBar
  • Add error handling to backend calls
  • Add tests
  • Get task descriptions from Operator list

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
  • Convert WML into Python DAG
  • API Endpoint to trigger WML -> DAG
  • Edge cases for WML -> 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) - allow either a import ref or an inline statement
  • Backport existing Python DAGs to WMLs
  • Allow DAG updates to propogate to WMLs
  • Add tests for different airflow version

Other features

  • Validate on backend or front end or both?
  • Doco
  • Add permission restrictions for valid tags

Dev User Guide

To run as a dev:

  1. Clone from git
  2. Run poetry install -E airflow
  3. Run windmill-dev start-backend
  4. Run windmill-dev start-frontend

Future Usage Patterns

  • Auto-sync for windmill project to git

Deployment

Deployment to PyPi is managed using Travis and should be done in the following steps:

  1. Run poetry version {patch|minor|major}
  2. Increment the version number in windmill/__init__.py
  3. Commit and merge code into the master branch
  4. Ensure that the travis build is green
  5. Create a git tag for the new build
  6. Push the tag to origin

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.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.

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: airflow-windmill-0.0.2.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/0.12.17 CPython/3.7.1 Linux/4.15.0-1028-gcp

File hashes

Hashes for airflow-windmill-0.0.2.tar.gz
Algorithm Hash digest
SHA256 56a05a048d32e2537654521a9b7a2fd13519306b576a6ca25b99fa90c967e799
MD5 30f56976387eb44481c2dda0534068bb
BLAKE2b-256 a38168ce98632e4563203bb4def4959da0e0edaf65004b8db8609a41c0d0e7c1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: airflow_windmill-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/0.12.17 CPython/3.7.1 Linux/4.15.0-1028-gcp

File hashes

Hashes for airflow_windmill-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 fd96f1797759210073bd5cce65284ff43d651c7ae0cc62a1b297a3b0edb74493
MD5 50e5b38623a665e630f40bb41222c7d0
BLAKE2b-256 7a1ef59d8da19c362598b050939ec1731120861b34c7eff857a454ef71687fa4

See more details on using hashes here.

Supported by

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