<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <!-- PAGE settings -->
  <link rel="icon" href="favicon.ico">
  <title>BlissRoms</title>
  <meta name="description" content="Open Source OS for all devices, based on AOSP">
  <meta name="keywords" content="blissroms, bliss, os, x86, aosp, android, rom, teambliss">
  <!-- CSS dependencies -->
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css"
    integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
  <script src="https://kit.fontawesome.com/7b4ed0a31a.js" crossorigin="anonymous"></script>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"
    type="text/css">
  <link href="https://fonts.googleapis.com/css?family=VT323" rel="stylesheet" type="text/css">
  <link rel="stylesheet" href="neon.css">
  <!-- Script: Make my navbar transparent when the document is scrolled to top -->
  <script src="js/navbar-ontop.js"></script>
  <link rel="stylesheet" href="css/animations.css">
  <link rel="stylesheet" href="css/style.css">
  <link rel="stylesheet" href="css/table.css">
  <script data-ad-client="ca-pub-7639560510014441" async=""
    src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
</head>

<body class="">
  <!-- Navbar -->
  <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark" style="padding-right: 41px;">
    <div class="container pt-6">
      <a class="navbar-brand" href="#"><img src="images/BlissIcon_Smal_wl.png" width="50"
          class="d-inline-block align-top" alt=""></a>
      <div class="row">
        <div class="col-md-12"><a class="navbar-brand" href="#"><b><b>BlissRoms</b></b></a></div>
      </div>
      <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse"
        data-target="#navbar2SupportedContent" aria-controls="navbar2SupportedContent" aria-expanded="true"
        aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button>
      <div class="navbar-collapse text-center justify-content-end collapse" id="navbar2SupportedContent">
        <ul class="navbar-nav">
          <li class="nav-item mx-2">
            <a class="nav-link" href="#features"><b><b>Features</b></b></a>
          </li>
          <li class="nav-item mx-2">
            <a class="nav-link" href="#team"><b><b>Team</b></b></a>
          </li>
          <li class="nav-item mx-2">
            <a class="nav-link" href="#gear"><b><b>Gear</b></b></a>
          </li>
          <li class="nav-item mx-2">
            <a class="nav-link external" href="https://blisslabs.org" target="_blank"><b><b>Non Profit</b></b></a>
          </li>
          <li class="nav-item mx-2">
            <a class="nav-link external" href="https://blog.blissroms.com" target="_blank"><b><b>Blog</b></b></a>
          </li>
        </ul>
        <a class="btn navbar-btn mx-2 btn-primary" href="#download"><b><b>Download</b></b></a>
      </div>
    </div>
  </nav>
  <!-- Cover -->
  <div class="section-fade-out pt-5 pb-5"
    style="background-image: url(&quot;images/bg.jpeg&quot;); background-position: center bottom;">
    <div class="container pt-5">
      <div class="row">
        <div class="col-md-5">
          <div class="col-md-12">
            <h1 class="display-3 mb-4">BlissRoms</h1>
            <p class="lead">An open-source operating system based on Android with customizations, options and added
              security features.&nbsp;<br></p>
            <div class="d-inline-flex justify-content-center align-items-center mx-auto">
              <a href="#download"
                class="btn btn-lg btn-primary d-inline-flex justify-content-center align-items-center mx-auto">Download
                Now</a>
            </div>
          </div>
        </div>
        <div class="d-flex justify-content-center align-items-center flex-grow-1" align="center"
          style="max-height: 100%;max-width: 100%;vertical-align: middle;display: inline-flex;float: none; margin-top: -8%;">
          <div class="d-inline-flex justify-content-center align-items-center">
            <div class="animation d-inline-flex justify-content-center align-items-center" data-animation-step="3">
              <img class="img-fluid my-auto" src="images/phone-launcher-shot.png" width="50%">
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
  <!-- Features Section -->
  <div class="section-fade-in py-5 bg-dark" id="features">
    <div class="container">
      <div class="row">
        <div class="col-12 text-center">
          <h3 class="display-3">Features</h3>
        </div>
      </div>
      <div class="row">
        <div class="align-self-center text-md-right text-center col-lg-4 col-md-6">
          <h4 class="text-primary"><b>Focus on design</b></h4>
          <p class="mb-5 text-white">We include many options for customization and theming throughout the OS</p>
          <h4 class="text-primary"><b>Customized settings</b></h4>
          <p class="mb-5 text-white">Choose settings depending on the criteria you value the most. With no limits.</p>
          <h4 class="text-primary"><b>Performance</b></h4>
          <p class="mb-5 text-white">Focused on speed and stability with tweaks to assist in the most demanding
            applications</p>
        </div>
        <div class="my-3 d-none d-lg-block animate-in-down col-md-4">
          <img class="img-fluid d-block" src="images/Phone_features_dark.png">
        </div>
        <div class="align-self-center text-md-left text-center col-lg-4 col-md-6">
          <h4 class="text-primary"><b>Battery-friendly</b></h4>
          <p class="mb-5 text-white">Extra options are provided to help tune battery consumption to the best levels</p>
          <h4 class="text-primary"><b>Added Security</b></h4>
          <p class="mb-5 text-white">Additional security options and features are found throughout the OS. And AOSP
            security updates are merged regularly.</p>
          <h4 class="text-primary"><b>Compatibility</b></h4>
          <p class="mb-5 text-white">We bring Bliss to every device we own. And our PC builds include extras for
            ARM/ARM64 app compatibility&nbsp;&nbsp;</p>
        </div>
      </div>
    </div>
  </div>
  <!-- 501(c3) Non-profit Notice Section -->
  <div class="section bg-dark">
    <div class="container d-flex justify-content-center align-items-center flex-grow-1 mx-auto w-75 py-4">
      <div class="row">
        <div class="col-md-6 text-left mx-auto flex-center">
          <div>
            <h2 class="my-3 highlight_secondary team-header text-white no-wrap">We volunteer our time.</h2>
            <p class="mb-3 body-font">We are a 501(c3) nonprofit, run by people that donate their free time towards the
              project. We do our best to bring a quality OS to your device, while working a real job on the side in most
              cases. Please consider showing us we're on the right track by clicking the button below and making a small
              contribution towards our efforts.</p> <a
              href="https://www.paypal.com/donate?hosted_button_id=J5SLZ7MQNCT24" target="_blank"
              class="btn btn-primary">Buy Us a Coffee</a>
          </div>
        </div>
        <div class="col-md-5 py-5 offset-1"><img
            class="img-fluid d-block d-flex align-items-center justify-content-center flex-grow-1 mx-auto animate-in-right"
            src="images/coffee-break.svg" width="300"></div>
      </div>
    </div>
  </div>
  <!-- Downloads Section -->
  <div class="download-section bg-light mb-0" id="download">
    <div class="container py-5">
      <div class="row">
        <div class="col-md-6 order-2 order-md-1"> <img class="img-fluid d-block mx-auto"
            src="images/phone-launcher-shot.png" width="50%"> </div>
        <div class="px-md-5 col-md-6 d-flex flex-column align-items-start justify-content-center order-1 order-md-2">
          <h3 class="display-3">Downloads</h3>
          <img
            src="https://img.shields.io/sourceforge/dm/blissroms.svg?style=for-the-badge&amp;logo=appveyor&amp;colorB=blue"
            max-width="160px" width="50%">
          <p class="mb-3">
          </p>
          <div id="demo">
            <br>
            <a class="btn btn-primary mx-1 mb-3" href="https://downloads.blissroms.org">Go to Downloads</a>
            <hr width="100%" size="8" align="left">
            <h2>Looking for our PC builds?</h2>
            <p>(Bliss OS (x86) &amp; Android-Generic builds)</p>
            <br>
            <a class="btn mb-3 btn-dark" target="_blank" href="https://blissos.org">Bliss OS</a>
            <a class="btn mb-3 btn-dark" target="_blank" href="https://android-generic.github.io">Android-Generic</a>
            <p></p>
            <hr width="100%" size="8" align="left">
            <h2>Legacy Downloads</h2>
            <br>
            <a class="btn btn-link" href="https://sourceforge.net/projects/blissroms/files/Q/">Android 10 (Q) device
              builds</a><br>
            <a class="btn btn-link" href="https://sourceforge.net/projects/blissroms/files/Pie/">Android 9 (Pie) device
              builds</a><br>
            <a class="btn btn-link" href="https://sourceforge.net/projects/blissroms/files/GSI/">Android 9 (Pie) GSI
              builds</a>
            <p></p>
          </div>
        </div>
      </div>
    </div>
  </div>
  <!-- Team Section -->
  <div class="py-5 bg-light" id="team">
    <div class="container">
      <div class="row">
        <div class="col-md-12">
          <div class="row">
            <div class="mx-auto col-md-12 text-center">
              <h3 class="display-3">The Team</h3>
            </div>
          </div>
          <ul class="nav nav-tabs nav-justified">
            <li class="nav-item mx-auto font-weight-bold"> <a class="active nav-link" href="" data-toggle="tab"
                data-target="#tabone">Core Members</a> </li>
            <li class="nav-item mx-auto font-weight-bold"> <a href="" class="nav-link" data-toggle="tab"
                data-target="#tabtwo">Maintainers</a> </li>
          </ul>
          <div class="tab-content mt-2">
            <div class="tab-pane fade show active" id="tabone" role="tabpanel">
              <section id="content" class="team_content"></section>
              <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
              <script>
                $.ajax({
                  type: "GET",
                  url: "https://api.blissroms.org/api/teambliss", // TeamBliss JSON
                  success: function (data) {
                    var newContent = ''; // Variable to hold HTML
                    for (var i = 0; i < data.length; i++) { // Loop through object
                      newContent += '<div id="event" class="team_item">';
                      newContent += '<img class="image crop" loading="lazy" style="min-height: 190px" src="' + data[i].avatar + '" ';
                      newContent += 'alt="' + data[i].member + '" />';
                      newContent += '<h3><b>' + data[i].member + '</b></h3>';
                      newContent += '<p class="team_data_text font-weight-bold">' + data[i].designation + '</p>';
                      // newContent += '<p class="team_data_text font-weight-bold"><i>&quot;' + data[i].email + '&quot;</i></p>';
                      newContent += '</div>';
                    }
                    // Update the page with the new content
                    document.getElementById('content').innerHTML = newContent;
                  }
                })
              </script>
            </div>
            <div class="tab-pane fade" id="tabtwo" role="tabpanel">
              <section id="content2" class="team_content"></section>
              <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
              <script>
                $.ajax({
                  type: "GET",
                  url: "https://blissapi.blissroms.com/blissinfra/public/allmaintainers", // TeamBliss JSON
                  success: function (data) {
                    var newContent = ''; // Variable to hold HTML
                    for (var i = 0; i < data.length; i++) { // Loop through object
                      newContent += '<div id="event" class="team_item">';
                      newContent += '<img class="image crop" src="' + data[i].image + '" ';
                      newContent += 'alt="' + data[i].mname + '" />';
                      newContent += '<h3><b>' + data[i].mname + '</b></h3>';
                      newContent += '<p class="team_data_text font-weight-bold">' + data[i].device + '</p>';
                      newContent += '<p class="team_data_text font-weight-bold"><i>&quot;' + data[i].codename + '&quot;</i></p>';
                      newContent += '</div>';
                    }
                    // Update the page with the new content
                    document.getElementById('content2').innerHTML = newContent;
                  }
                })
              </script>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
  <!-- Merch Section -->
  <div class="py-5 bg-primary" id="gear">
    <div class="container">
      <div class="row">
        <div class="col-md-12">
          <h1><b>A Little Bliss Gear</b></h1>
          <p class="lead mb-4"><b>Bliss Family of ROMs has put together a Teespring store as a start to bring some
              stylish merchandise to our users, and help raise money for our cause. Check out a few of our selections
              below and follow the link to our store for more</b></p>
        </div>
      </div>
      <div class="row d-flex justify-content-between">
        <div class="col-md-4 col-lg-3 p-4"> <img class="img-fluid d-block" width="1500"
            src="images/team-bliss-t-shirt.jpg">
          <h4 class="my-3"> <b>T-Shirts</b></h4>
          <p class="body-font"><b>Be the first one on your block to sport Bliss on your back. Various sizes and colors
              available.</b></p>
        </div>
        <div class="col-md-4 col-lg-3 p-4"> <img class="img-fluid d-block" src="images/team-bliss-hoodie.jpg"
            width="1500">
          <h4 class="my-3"> <b>Hoodies</b></h4>
          <p class="body-font"><b>Keep warm in style. We have hoodies and sweatshirts available. Various sizes and
              colors options too.</b></p>
        </div>
        <div class="col-md-4 col-lg-3 p-4"> <img class="img-fluid d-block" src="images/team-bliss-tank-top.jpg"
            width="1500">
          <h4 class="my-3"> <b>Tank Tops</b></h4>
          <p class="body-font"><b>It's all about the Bliss when you are wearing one of our tank tops. Various sizes and
              colors available.</b></p>
        </div>
      </div>
      <div class="row">
        <div class="col-md-12">
          <div class="card">
            <div class="card-body">
              <h4 class="card-title"><b>Want More?</b></h4>
              <p class="card-text body-font">We are constantly updating our selection of apparel, adding more cool
                designs and options as we go. So make sure you check back for any updates.&nbsp;</p> <a
                class="btn btn-primary" href="https://teespring.com/stores/bliss-family-store-2">Visit Our Teespring
                Store&nbsp;<i class="fa fa-shopping-cart fa-fw"></i></a>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
  <!-- BlissLabs Section -->
  <div class="py-5 text-light cover" style="background-color: rgb(52, 58, 64);">
    <div class="container" style="max-width: 100%;">
      <div class="row">
        <div class="col-md-12">
          <div class="row">
            <div
              class="d-flex flex-column justify-content-center p-3 col-md-8 offset-lg-1 align-items-start order-1 order-md-1">
              <h1 class="mb-3">A BlissLabs Project</h1>
              <p class="lead">We are part of a larger community of open-source projects called BlissLabs. Explore more
                about the other BlissLabs projects below:<br></p>
              <a class="btn btn-primary" target="_blank" href="https://blisslabs.org">Learn More</a>
            </div>
            <div class="col-md-4 col-lg-3 order-2 order-md-2 p-0"> <img
                class="img-fluid d-block justify-content-between align-items-center my-4"
                src="https://blisslabs.org/assets/images/bliss_labs_logo.svg" style="	width: 7.75rem;"> </div>
          </div>
        </div>
      </div>
      <div class="row">
        <div class="col-md-12">
          <div class="carousel slide" data-ride="carousel" id="carousel">
            <div class="carousel-inner">
              <div id="carousel-slider"> </div>
            </div>
            <a class="carousel-control-prev" href="#carousel" role="button" data-slide="prev">
              <span class="carousel-control-prev-icon"></span>
              <span class="sr-only">Previous</span>
            </a>
            <a class="carousel-control-next" href="#carousel" role="button" data-slide="next">
              <span class="carousel-control-next-icon"></span>
              <span class="sr-only">Next</span>
            </a>
          </div>
          <!---------------->
          <script>
            $.ajax({
              type: "GET",
              url: "https://api.blissroms.org/api/allprojects",
              contentType: "application/json",
              datatype: "json",
              data: {},
              success: function (data) {
                var newContent = ''; // Variable to hold HTML
                for (var i = 0; i < data.length; i++) { // Loop through object
                  if (data[i].project != null) {
                    if (i == 0) {
                      newContent += '<div class="carousel-item active" style="padding-block: 10vh;" >';
                    } else {
                      newContent += '<div class="carousel-item" >';
                    }
                    newContent += '<img class="d-block img-fluid" src="' + data[i].project_avatar + '" style="margin-left: 10%; height: 35vh;"';
                    newContent += 'alt="' + data[i].project + ' " style="padding-top: 1.5rem;"/>';
                    newContent += '<div class="carousel-caption" style="background: linear-gradient(#343a40 10%, #343a40 100%)!important; padding-top: 50vw; width: 50vw; margin-left: 30vw; bottom: 0px ">';
                    // newContent += '<div class="item-details">';
                    newContent += '<h3 class="zxc" ><b style="font-size: xx-large;">' + data[i].project + '</b></h3>';
                    newContent += '<h5 class="zxc" >Project Lead: ' + data[i].project_lead + '</h5>';
                    newContent += '<p class="card__text zxc" style=" margin-right: 1.7rem; margin-left: 1.7rem; ">' + data[i].project_description + '</p>';
                    if (data[i].project_github != null) {
                      newContent += '<a href="' + data[i].project_github + '" target="_blank"><i class="fab fa fa-git p-2" style="font-size: 300%;"></i></a>';
                    }
                    if (data[i].project_website != null) {
                      newContent += '<a href="' + data[i].project_website + '" target="_blank"><i class="fab fa p-2 fa-globe" style="font-size: 300%;"></i></a>';
                    }
                    // newContent += '</div>';
                    newContent += '</div>';
                    newContent += '</div>';
                  } else {
                    newContent = 'NONE';
                  }
                }
                // Update the page with the new content
                document.getElementById('carousel-slider').innerHTML = newContent;
              },
              error: function (jqXHR, status, err) {
                newContent = 'ERROR: NONE';
                document.getElementById('carousel-slider').innerHTML = newContent;
                alert("Status: " + textStatus);
                alert("Error: " + errorThrown);
              }
            })
          </script>
          <!---------------->
        </div>
      </div>
    </div>
  </div>
  <!-- Footer -->
  <div class="py-3 bg-dark">
    <div class="container">
      <div class="row">
        <div class="col-lg-3 col-6 p-3">
          <h5> <b>Socials</b></h5>
          <ul class="list-unstyled text-primary">
            <li class="text-primary"> <a href="https://t.me/Team_Bliss_Community">BlissRoms Telegram</a> </li>
            <li> <a href="https://t.me/blissx86">Bliss OS Telegram</a> </li>
            <li> <a href="https://www.facebook.com/BlissFamilyOfROMs/">Bliss Facebook</a> </li>
            <li> <a href="https://twitter.com/Bliss_Roms">Bliss Twitter</a> </li>
            <li> <a href="https://www.linkedin.com/company/stayblissful">Bliss LinkedIn</a> </li>
            <li> <a href="https://discord.gg/wwc4Aua4fp">Bliss Discord</a> </li>
          </ul>
        </div>
        <div class="col-lg-3 col-6 p-3">
          <h5> <b>Sources</b></h5>
          <ul class="list-unstyled">
            <li> <a href="https://review.blissroms.com">BlissRoms Gerrit Review</a> </li>
            <li> <a href="https://review-x86.blissroms.com">Bliss OS (x86) Gerrit Review</a> </li>
            <li> <a href="https://github.com/BlissRoms">BlissRoms GitHub</a> </li>
            <li> <a href="https://github.com/BlissRoms-Devices">BlissRoms-Devices GitHub</a> </li>
            <li> <a href="https://github.com/BlissRoms-x86">Bliss OS GitHub</a> </li>
            <li> <a href="https://github.com/BlissRoms-pine64">BlissRoms-PINE64 GitHub</a> </li>
          </ul>
        </div>
        <div class="col-lg-3 col-6 p-3">
          <h5>Subreddits</h5>
          <ul class="list-unstyled">
            <li> <a href="https://www.reddit.com/r/BlissRoms">BlissRoms</a> </li>
            <li> <a href="https://www.reddit.com/r/BlissOS">Bliss OS</a> </li>
            <li> <a href="https://www.reddit.com/r/TeamBliss">Team Bliss</a> </li>
          </ul>
        </div>
        <div class="col-lg-3 col-md-3 p-3">
          <h5> <b>Follow us</b> </h5>
          <div class="row">
            <div class="col-md-12 d-flex align-items-center my-2 justify-content-center"> <a
                href="https://www.facebook.com/BlissFamilyOfROMs/" class="">
                <i class="d-block fa fa-facebook-official text-muted mr-2 fa-2x"></i>
              </a> <a href="https://www.instagram.com/blissroms/">
                <i class="d-block fa fa-instagram text-muted mx-2 fa-2x"></i>
              </a><a href="https://github.com/BlissRoms">
                <i class="d-block fa fa-github text-muted text-muted mx-2 fa-2x"></i>
              </a><a href="https://www.linkedin.com/company/stayblissful">
                <i class="d-block fa fa-linkedin text-muted text-muted mx-2 fa-2x"></i>
              </a> <a href="https://www.reddit.com/r/BlissRoms">
                <i class="d-block fa fa-reddit text-muted mx-2 fa-2x"></i>
              </a> <a href="https://twitter.com/Bliss_Roms">
                <i class="d-block fa fa-twitter text-muted ml-2 fa-2x"></i>
              </a> </div>
          </div>
        </div>
      </div>
      <div class="row">
        <div class="col-md-12 text-center">
          <p class="mb-0 mt-2">© 2021 BlissLabs. All rights reserved</p>
        </div>
      </div>
    </div>
  </div>
  
  <!-- JavaScript dependencies -->
  <script src="js/mainani.js" type="text/javascript"></script>
  <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"
    integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
    crossorigin="anonymous"></script>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"
    integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
    crossorigin="anonymous"></script>
  <!-- Script: Smooth scrolling between anchors in the same page -->
  <script src="js/smooth-scroll.js"></script>
  <script src="js/conditionize.js"></script>

</body>

</html>