blob: b2db60f3540e0d4a5850cd21ba0a84bb20266f16 [file] [log] [blame]
{{/*
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
*/}}
{{ define "animation-header" }}
<section id="header">
<div id="header-canvas">
<div class="text-area">
<h2 class="text-area--header" id="header-title">Apache Airflow</h2>
<h5 class="text-area--subheader" id="header-lead">
Airflow is a platform created by the community to programmatically author, schedule and monitor
workflows.
</h5>
{{/*
TODO: Temporary solution. Replace the link to docs with commented code when texts on install page are ready.
<a href="/install/" id="header-button">
{{ partial "buttons/button-filled" (dict "text" "Install") }}
</a>
*/}}
<a href="/docs/stable/start.html" id="header-button">
{{ partial "buttons/button-filled" (dict "text" "Install") }}
</a>
</div>
</div>
</section>
{{ end }}
{{ define "main" }}
<div>
<h4 class="page-header principles-header">Principles</h4>
<div class="text-with-icon-list">
{{ partial "text-with-icon" (dict "logo_path" "icons/scalable-icon.svg" "header" "Scalable" "text" "Airflow has a modular architecture and uses a message queue to orchestrate an arbitrary number of workers. Airflow is ready to scale to infinity.") }}
{{ partial "text-with-icon" (dict "logo_path" "icons/dynamic-icon.svg" "header" "Dynamic" "text" "Airflow pipelines are defined in Python, allowing for dynamic pipeline generation. This allows for writing code that instantiates pipelines dynamically.") }}
{{ partial "text-with-icon" (dict "logo_path" "icons/extensible-icon.svg" "header" "Extensible" "text" "Easily define your own operators and extend libraries to fit the level of abstraction that suits your environment.") }}
{{ partial "text-with-icon" (dict "logo_path" "icons/elegant-icon.svg" "header" "Elegant" "text" "Airflow pipelines are lean and explicit. Parametrization is built into its core using the powerful Jinja templating engine.") }}
</div>
</div>
<div>
<h4 class="page-header">Features</h4>
<div class="features-list">
{{ partial "feature" (dict "logo_path" "icons/pure-python-icon.svg" "header" "Pure Python" "text" "No more command-line or XML black-magic! Use standard Python features to create your workflows, including date time formats for scheduling and loops to dynamically generate tasks. This allows you to maintain full flexibility when building your workflows.") }}
{{ partial "feature" (dict "logo_path" "icons/useful-ui-icon.svg" "header" "Useful UI" "text" "Monitor, schedule and manage your workflows via a robust and modern web application. No need to learn old, cron-like interfaces. You always have full insight into the status and logs of completed and ongoing tasks.") }}
{{ partial "feature" (dict "logo_path" "icons/integrations-icon.svg" "header" "Robust Integrations" "text" "Airflow provides many plug-and-play operators that are ready to execute your tasks on Google Cloud Platform, Amazon Web Services, Microsoft Azure and many other third-party services. This makes Airflow easy to apply to current infrastructure and extend to next-gen technologies.") }}
{{ partial "feature" (dict "logo_path" "icons/easy-use-icon.svg" "header" "Easy to Use" "text" "Anyone with Python knowledge can deploy a workflow. Apache Airflow does not limit the scope of your pipelines; you can use it to build ML models, transfer data, manage your infrastructure, and more.") }}
{{ partial "feature" (dict "logo_path" "icons/open-source-icon.svg" "header" "Open Source" "text" "Wherever you want to share your improvement you can do this by opening a PR. It’s simple as that, no barriers, no prolonged procedures. Airflow has many active users who willingly share their experiences. Have any questions? Check out our buzzing slack.") }}
</div>
</div>
<div>
<h4 class="page-header integrations-header">Integrations</h4>
<div id="integrations">
<script type="application/x-template" id="integration-template">
<a class="list-item" href="">
<div class="card">
<div class="box-event box-event__integration">
<img src="" alt="" data-name="logo" class="box-event__integration--logo"/>
<span class="box-event__integration--name" data-name="name"></span>
</div>
</div>
</a>
</script>
<form class="search-form">
<input class="search-form__input" placeholder="Search" name="q" type="search" size="16"/>
<button class="search-form__button" type="submit">
{{ with resources.Get "icons/search-icon.svg" }}
{{ .Content | safeHTML }}
{{ end }}
</button>
</form>
<div id="integrations-container" class="list-items">
{{ range $elem_index, $elem_val := (shuffle .Site.Data.integrations) }}
{{ if lt $elem_index 8 }}
<a class="list-item" href="{{ $elem_val.url }}">
{{ partial "boxes/integration" $elem_val }}
</a>
{{ end}}
{{ end }}
</div>
<div class="loading" style="display: none">Loading..</div>
<div class="show-more-button">
{{ partial "buttons/button-filled" (dict "text" "Show more" "id" "show-more-integration")}}
</div>
</div>
</div>
{{ end }}