extend ../_components/base.pug

block pagetitle
    | Powered By 

block css 
    link(rel="stylesheet", href="../css/usecases.css")


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="/public/img/poweredby/logos/microsoft.svg", alt="") 
                span.grayhero__logo
                    img(src="/public/img/poweredby/logos/netflix.svg", alt="") 
                span.grayhero__logo
                    img(src="/public/img/poweredby/logos/apple.png", alt="") 
                span.grayhero__logo
                    img(src="/public/img/poweredby/logos/dreamworks.png", alt="") 
                span.grayhero__logo
                    img(src="/public/img/poweredby/logos/yahoo.svg", alt="") 
                span.grayhero__logo
                    img(src="/public/img/poweredby/logos/bloomberg.svg", alt="")
                span.grayhero__logo
                    img(src="/public/img/poweredby/logos/sberbank.svg", alt="") 
                span.grayhero__logo
                    img(src="/public/img/poweredby/logos/paypal.svg", alt="") 
                span.grayhero__logo
                    img(src="/public/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 
                h3.h4 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




            
