<!DOCTYPE html>
<html>
{% include head.html %}

<body>
    {% include header.html %}
    <section class="hero is-large is-bold is-primary" {% if page.hero_image %}
        style="background: url('{{ page.hero_image }}') no-repeat center center; background-size: cover;" {% endif %}>
        <div class="hero-body">
            <div class="container has-text-centered">
                <p class="project-title title is-1 has-text-weight-medium"
                    style="padding-bottom: 2rem; font-size: 70px;">
                    Apache Pegasus
                </p>
                <p class="project-subtitle subtitle is-4 has-text-white-bis has-text-weight-light">
                    {% if site.active_lang == "en" %}
                    A horizontally scalable, strongly consistent and high-performance key-value store
                    {% else %}
                    可水平扩展、高性能、强一致的分布式Key-Value数据库
                    {% endif %}
                </p>
                <a style="padding-right: 0.5rem" href="https://www.apache.org/licenses/LICENSE-2.0">
                    <img alt="https://img.shields.io/github/license/xiaomi/pegasus.svg?style=flat-square&"
                        src="https://img.shields.io/github/license/xiaomi/pegasus.svg?style=flat-square&">
                </a>
                <a style="padding-right: 0.5rem" href="https://github.com/XiaoMi/pegasus">
                    <img alt="https://img.shields.io/github/stars/xiaomi/pegasus.svg?style=flat-square&"
                        src="https://img.shields.io/github/stars/xiaomi/pegasus.svg?style=flat-square&">
                </a>
                <br>
                <a style="padding-right: 0.5rem"
                    href="https://github.com/XiaoMi/pegasus/issues?utf8=%E2%9C%93&q=label%3Arelease-note">
                    <img alt="https://img.shields.io/github/release/xiaomi/pegasus.svg?style=flat-square&label=Pegasus"
                        src="https://img.shields.io/github/release/xiaomi/pegasus.svg?style=flat-square&label=Pegasus">
                </a>
                <a style="padding-right: 0.5rem" href="https://github.com/XiaoMi/pegasus-java-client/releases">
                    <img alt="https://img.shields.io/github/release/xiaomi/pegasus-java-client.svg?style=flat-square&label=Pegasus-Java-Client"
                        src="https://img.shields.io/github/release/xiaomi/pegasus-java-client.svg?style=flat-square&label=Pegasus-Java-Client">
                </a>
                <div style="padding-top: 2rem" class="buttons is-centered">
                    <a class="button is-light is-large front-start-button"
                        href="{{ site.baseurl }}/overview">
                        <span class="icon"><i class="fas fa-chevron-right"></i></span>
                        <span>
                            <span style="font-weight:lighter">Get</span>
                            <strong>Started</strong>
                        </span>
                    </a>
                    <a class="button is-dark is-large front-github-button" href="{{ site.pegasus_github_url }}">
                        <span class="icon"><i class="fab fa-github-alt"></i></span>
                    </a>
                </div>
            </div>
        </div>
        <footer class="footer">
            <div class="container">
                <div class="content is-small has-text-centered has-text-grey-dark">
                    <div style="margin-bottom: 20px;">
                        <a href="http://incubator.apache.org"><img src="{{ site.baseurl }}/assets/images/egg-logo.png"
                                alt="Apache Incubator" /></a>
                    </div>
                    Copyright &copy; 2020 <a href="http://www.apache.org">The Apache Software Foundation</a>.
                    Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version
                        2.0</a>.
                    <br><br>
                    {% if site.data.project.podling %}
                    Apache Pegasus is an effort undergoing incubation at The Apache Software Foundation (ASF),
                    sponsored by the Apache Incubator. Incubation is required of all newly accepted projects
                    until a further review indicates that the infrastructure, communications, and decision making process
                    have stabilized in a manner consistent with other successful ASF projects. While incubation status is
                    not necessarily a reflection of the completeness or stability of the code, it does indicate that the
                    project has yet to be fully endorsed by the ASF.
                    {% endif %}
                </div>
            </div>
        </footer>
    </section>
    <script src="{{ site.baseurl }}/assets/js/app.js" type="text/javascript"></script>
</body>

</html>