Skip to main content

📅 Airflow Calendar

PyPI version License Downloads PyPI - Python Version Airflow Airflow

A modern and intuitive calendar interface for visualizing your DAG schedules in Apache Airflow. Transform complex cron expressions into a clear and searchable time grid inspired by the Google Calendar experience.

Airflow Calendar GIF


🎯 Why Airflow Calendar?

Imagine the following scenario: You have to deploy some new critical pipelines in production, but your Airflow environment is already loaded with a dozen of DAGs.

Then, the following question arises: will your new DAG scheduled at */45 2-6 * * 1-5 collide with that heavy Spark job running every 40 minutes?

This is where Airflow Calendar comes in. It provides a visual timeline of all your DAG schedules, allowing you to see at a glance when each DAG is set to run, identify potential overlaps, and avoid resource conflicts, making workflow orchestration human-readable.

You can check more details about the project in the Medium article.

✨ Key Features

Manage complex production environments is easier with Airflow Calendar. Here are some of the key features.

Informative Metadata Modal

Clicking on any event in the calendar opens an informative pop-up card with important details about your DAG.

It allows you to have a snapshot of everything you need to know about that specific DAG without navigating away to look up more information:

  • Duration: Shows the average execution time of the DAG based on past successful runs. This duration also defines how long the event block looks on your calendar.
  • Structural context: View the Cron string or timedelta interval, alongside the total task count.
  • Recent run history: A small timeline displaying the status of the last 5 executions so you can evaluate stability at a glance.

Informative modal

Native UI Navigation

A major annoyance with third-party dashboards is having to manually search for a pipeline once you find an issue. The plugin solves this by embedding a direct shortcut inside the metadata modal.

That said, if a DAG needs further attention, just click the event and hit the "Open DAG" button.

Menu deep linking GIF

Intuitive Grid View with Live Execution Status

In addition to showing when a DAG is scheduled to run, it also overlays the real-time execution status right on the calendar interface.

By leveraging color-coded borders, you can instantly see the health of your past and current runs:

  • Green Borders: Successful runs.
  • Red Borders: Failed runs that require your attention.
  • Blue Borders: Jobs that are in execution at the moment.
  • Gray Borders: Future scheduled runs or jobs currently in queue.

Event border colors

Custom Event Coloring

When managing complex production environments, it's common to have pipelines with different levels of criticality and use cases.

To address this, the Airflow Calendar also supports custom event coloring, allowing you to visually group certain pipelines together.

Custom Event Coloring GIF


🚀 Installation

The recommended way to install Airflow Calendar is via pip. In the environment where Airflow is installed, run the following command:

pip install airflow-calendar

Otherwise, you can also clone this repository and install it manually by moving the airflow_calendar directory to your Airflow plugins folder.

Note: You may need to restart your Airflow Webserver after installation for the plugin to be picked up.

Verifying Installation on Airflow 2

If everything is set up correctly, you should see a new "Calendar" option under the "Browse" menu in the Airflow UI:

Calendar Menu Option

Verifying Installation on Airflow 3

If you're using Airflow 3, you will notice a brand-new "Calendar" icon sitting in your main navigation bar. Click on it, and your visual schedule will instantly render:

Calendar Icon Airflow 3

⚙️ Configuration & Permissions

If the plugin is loaded but the Calendar option is not visible under the Browse menu, you likely need to grant permissions to your user role:

  1. Navigate to Security > List Roles.
  2. Edit your specific role (e.g., Admin, Op, or Viewer).
  3. Add the permission: menu access on Calendar.
  4. Save and refresh the page.

🔍 Troubleshooting

If the "Calendar" option still doesn't show up in the menu:

  • Check Plugin Status: Go to Admin > Plugins. You should see airflow_calendar listed there.
  • Logs: If it's not listed, check your webserver logs.
  • CLI: Run airflow plugins in your terminal to verify if the package was loaded correctly into the environment and check for any errors during loading.

🛠️ Roadmap

This project is a continuous work in progress. Feel free to suggest new features or report issues!

The upcoming features include:

  • Airflow 3 Compatibility: Support for the next generation of Airflow.
  • Dynamic Styling: Background colors for events based on DAG tags.
  • Search functionality: Quickly find specific events within the calendar.

🤝 Contributing

This project is open to contributions! Whether it's reporting a bug, suggesting a feature, or submitting a Pull Request:

  1. Open an issue to discuss the change you wish to make.
  2. Fork the repository and create your feature branch.
  3. Commit your changes with clear descriptions.
  4. Push to the branch and open a Pull Request.

Metadata

Release files for airflow-calendar 0.10.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for airflow-calendar 0.10.0
File Size Uploaded Provenance Actions
airflow_calendar-0.10.0.tar.gz 122.2 kB Without provenance Details for airflow_calendar-0.10.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for airflow-calendar 0.10.0
File Interpreter ABI Platform Actions
airflow_calendar-0.10.0-py3-none-any.whl Python 3 none any Details for airflow_calendar-0.10.0-py3-none-any.whl

Total release size: 332.7 kB

Release files / airflow_calendar-0.10.0.tar.gz

Download URL airflow_calendar-0.10.0.tar.gz
Size 122.2 kB
Tags Source
SHA-256 checksum
How to use checksums
e8e834ca8862d05971e3325ce4aa487ea426f8c3ad8c43306b13c010f0904938
BLAKE2b-256 checksum
How to use checksums
6bc5388f1f8efe7ab85725171f70feb67ffd4b7824b843fb425f038fa616b871
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.11.9

Release files / airflow_calendar-0.10.0-py3-none-any.whl

Download URL airflow_calendar-0.10.0-py3-none-any.whl
Size 210.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7c2ded1389a8a246a99bd7c048a530fb3f141b6bbb94165da9f94dd6f04c5e4f
BLAKE2b-256 checksum
How to use checksums
7a8a10e4a0941a9d336b943fd7c6861d49240772e23cea7e634c410382739fa0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.11.9

Security for airflow-calendar 0.10.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page