extend ../_components/base.pug

block pagetitle
    title Proven Business Cases - Apache Ignite in Use
    meta(name="description", content="All publicly disclosed business cases of Apache Ignite. Explore dozens of Ignite case-studies across various industries.")
    link(rel="canonical", href="https://ignite.apache.org/use-cases/provenusecases.html")

    meta(property="og:title", content="Proven Business Cases - Apache Ignite in Use")
    meta(property="og:type", content="article")
    meta(property="og:url", content="https://ignite.apache.org/use-cases/provenusecases.html")
    meta(property="og:image", content="/img/og-pic.png")
    meta(property="og:description", content="All publicly disclosed business cases of Apache Ignite. Explore dozens of Ignite case-studies across various industries.")

block css 
    link(rel="stylesheet", href="../css/usecases.css?ver=" + config.version)


block main
    - global.pageHref = "use-cases/provenusecases.html"
    - config.hdrClassName = "hdr__grey hdr__white"
    include ../_components/header.pug


    section.grayhero 
        .container 
            h1.grayhero__h1.h1.
                Apache Ignite Is Chosen
                By&nbsp;Leading Companies
                Across The World
            .grayhero__logos.flexi
                span.grayhero__logo
                    img(src="/img/poweredby/logos/microsoft.svg", alt="") 
                span.grayhero__logo
                    img(src="/img/poweredby/logos/netflix.svg", alt="") 
                span.grayhero__logo
                    img(src="/img/poweredby/logos/apple.png", alt="") 
                span.grayhero__logo
                    img(src="/img/poweredby/logos/dreamworks.png", alt="") 
                span.grayhero__logo
                    img(src="/img/poweredby/logos/yahoo.svg", alt="") 
                span.grayhero__logo
                    img(src="/img/poweredby/logos/bloomberg.svg", alt="")
                span.grayhero__logo
                    img(src="/img/poweredby/logos/sberbank.svg", alt="") 
                span.grayhero__logo
                    img(src="/img/poweredby/logos/paypal.svg", alt="") 
                span.grayhero__logo
                    img(src="/img/poweredby/logos/banco-do-brasil.svg", alt="")
    // /.grayhero



    section.powered2.container
        h2.h4 Explore Featured Stories
        p.powered2__descr.h5.pt-2 You can find dozens of&nbsp;Apache Ignite case-studies across various industries:
        .powered2__grid.pt-5
            .powered2item eCommerce
            .powered2item Pharma & Healthcare
            .powered2item Financial Services
            .powered2item Banking
            .powered2item Internet of things
            .powered2item Logistics & Transportation
            .powered2item Retail
            .powered2item Leisure & Hospitality
            .powered2item Entertainment
            .powered2item Defense
            .powered2item Gaming
            .powered2item Biotech
            .powered2item Software & SaaS
            .powered2item Telecommunications
    // /.powered2

    section.poweredbanner.container
        .poweredbanner__bg.flexi
            .poweredbanner__left.flexi 
                p.h4 
                    strong Do&nbsp;you have an&nbsp;Apache Ignite use-case to&nbsp;share?
                p.pt-1.fz20 Reach&nbsp;us out on&nbsp;the Ignite dev list, and we&rsquo;ll add it&nbsp;to&nbsp;this page
            .poweredbanner__right
                //- a.button(href="#").poweredbanner__button Lets go
    // /.poweredbanner


    include ../_components/powered-videos.pug




            
