footer.footer
    .container.footer__top
        section.footer1 
            a(href="/features/").footer__title Features
            ul.footer__menu 
                li
                    a(href="/arch/multi-tier-storage.html") Multi-Tier Storage
                li
                    a(href="/arch/native-persistence.html") Native Persistence
                li
                    a(href="/features/sql.html") Distributed SQL
                li
                    a(href="/features/acid-transactions.html") ACID Transactions
                li
                    a(href="/features/key-value-apis.html") Key Value APIs
                li
                    a(href="/features/compute-apis.html") Compute APIs
                li
                    a(href="/features/machinelearning.html") Machine Learning
                li
                    a(href="/features/service-apis.html") Services
                li
                    a(href="/features/streaming.html") Real-Streaming APIs
                li
                    a(href="https://ignite.apache.org/docs/latest/key-value-api/continuous-queries") Continuous Queries
                li
                    a(href="https://ignite.apache.org/docs/latest/messaging") Messaging
        section.footer2
            a(href="/use-cases/").footer__title Use-Cases
            ul.footer__menu 
                li
                    a(href="/use-cases/in-memory-cache.html") In-Memory Cache
                li
                    a(href="/use-cases/in-memory-data-grid.html") In-Memory Data Grid
                li
                    a(href="/use-cases/in-memory-database.html") In-Memory Database
                li
                    a(href="/use-cases/high-performance-computing.html") High-Performance Computing
                li
                    a(href="/use-cases/digital-integration-hub.html") Digital Integration Hub
                li
                    a(href="/use-cases/key-value-store.html") Key-Value Store
                li
                    a(href="/use-cases/spark-acceleration.html") Apache Spark Acceleration
                li
                    a(href="/use-cases/hadoop-acceleration.html") Apache Hadoop Acceleration
        section.footer3
            a(href="/community.html").footer__title Community
            a(href="/resources.html").footer__title Resources
            a(href="/events.html").footer__title Events

        section.footer4
            .footer4__item Join Our <a href="mailto:dev@ignite.apache.org">Dev Mailing List</a>
            .footer4__item.pt-2 Or write your question
            .footer4__item.pt-1 user@ignite.apache.org
            .footer4__item.pt-5 Follow Us:
            .footer4__socwrap.flexi.pt-2
                a.footer4__soc(href="https://github.com/apache/ignite", target="_blank")
                    img(src="/img/icon-github.svg", alt="") 
                a.footer4__soc(href="https://www.linkedin.com/showcase/apache-ignite/", target="_blank")
                    img(src="/img/icon-linkedin.svg", alt="") 
                a.footer4__soc(href="https://twitter.com/apacheignite", target="_blank")
                    img(src="/img/icon-twitter.svg", alt="")
                a.footer4__soc(href="https://www.meetup.com/Apache-Ignite-Virtual-Meetup/", target="_blank")
                    img(src="/img/icon-meetup-black.png", alt="")
            a.footer4__button(href="https://ignite.apache.org/docs/latest/index").button Start Using Apache Ignite 
    .container.footer__bot
        p © 2015 - 2021 <a href="http://www.apache.org/">The Apache Software Foundation.</a>
        p.pt-1x Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are either registered trademarks or trademarks of The Apache Software Foundation
        p.pt-1x
            a(href="http://apache.org/foundation/policies/privacy.html") Privacy Policy