diff --git a/.bazelversion b/.bazelversion
index 25939d3..3eefcb9 100644
--- a/.bazelversion
+++ b/.bazelversion
@@ -1 +1 @@
-0.29.1
+1.0.0
diff --git a/.gitignore b/.gitignore
index 72d1580..a4ec9de 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,7 +2,6 @@
 /.project
 /.settings
 /bazel-bin
-/bazel-genfiles
 /bazel-out
 /bazel-lfs
 /bazel-testlogs
diff --git a/src/main/java/com/googlesource/gerrit/plugins/lfs/HttpModule.java b/src/main/java/com/googlesource/gerrit/plugins/lfs/HttpModule.java
index f8c219a..2bd7091 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/lfs/HttpModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/lfs/HttpModule.java
@@ -62,8 +62,12 @@
       populateRepository(backend);
     }
 
+    // Only for GWT-UI
     DynamicSet.bind(binder(), WebUiPlugin.class)
         .toInstance(new JavaScriptPlugin("lfs-project-info.js"));
+
+    // Only for PolyGerrit-UI
+    DynamicSet.bind(binder(), WebUiPlugin.class).toInstance(new JavaScriptPlugin("gr-lfs.html"));
   }
 
   private void populateRepository(LfsBackend backend) {
diff --git a/src/main/resources/Documentation/build.md b/src/main/resources/Documentation/build.md
index f71464f..c2d0532 100644
--- a/src/main/resources/Documentation/build.md
+++ b/src/main/resources/Documentation/build.md
@@ -16,7 +16,7 @@
 The output is created in
 
 ```
-  bazel-genfiles/@PLUGIN@.jar
+  bazel-bin/@PLUGIN@.jar
 ```
 
 To execute the tests run:
@@ -45,7 +45,7 @@
 The output is created in
 
 ```
-  bazel-genfiles/plugins/@PLUGIN@/@PLUGIN@.jar
+  bazel-bin/plugins/@PLUGIN@/@PLUGIN@.jar
 ```
 
 This project can be imported into the Eclipse IDE.
diff --git a/src/main/resources/static/gr-lfs-project-info.html b/src/main/resources/static/gr-lfs-project-info.html
new file mode 100644
index 0000000..4008f89
--- /dev/null
+++ b/src/main/resources/static/gr-lfs-project-info.html
@@ -0,0 +1,48 @@
+<!--
+@license
+Copyright (C) 2019 The Android Open Source Project
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<dom-module id="gr-lfs-project-info">
+  <template>
+    <style include="shared-styles"></style>
+    <style include="gr-form-styles"></style>
+    <style>
+      .sectionTitle {
+        padding-top: 2em;
+      }
+    </style>
+    <fieldset id="lfsProjectInfo" class="gr-form-styles">
+      <h2 class="sectionTitle">LFS Info</h2>
+      <section>
+        <span class="title">Enabled</span>
+        <span class="value">[[_appliedConfig.enabled]]</span>
+      </section>
+      <section>
+        <span class="title">Max Object Size</span>
+        <span class="value">[[_appliedConfig.max_object_size]]</span>
+      </section>
+      <section>
+        <span class="title">Read Only</span>
+        <span class="value">[[_appliedConfig.read_only]]</span>
+      </section>
+      <section hidden="[[!_appliedConfig.backend]]">
+        <span class="title">Backend</span>
+        <span class="value">[[_appliedConfig.backend]]</span>
+      </section>
+    </fieldset>
+  </template>
+  <script src="gr-lfs-project-info.js"></script>
+</dom-module>
diff --git a/src/main/resources/static/gr-lfs-project-info.js b/src/main/resources/static/gr-lfs-project-info.js
new file mode 100644
index 0000000..ce733b9
--- /dev/null
+++ b/src/main/resources/static/gr-lfs-project-info.js
@@ -0,0 +1,43 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the 'License');
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an 'AS IS' BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+(function () {
+  'use strict';
+
+  Polymer({
+    is: 'gr-lfs-project-info',
+
+    properties: {
+      repoName: String,
+      _appliedConfig: Object,
+    },
+
+    attached() {
+      this._getPreferences()
+    },
+
+    _getPreferences() {
+      return this.plugin.restApi('/projects/')
+        .get(`${this.repoName}/${this.plugin.getPluginName()}~lfs:config-project`)
+        .then(config => {
+          if (!config || Object.entries(config).length === 0) {
+            this.$.lfsProjectInfo.hidden = true;
+            return;
+          }
+
+          this._appliedConfig = config
+        })
+    },
+  });
+})();
diff --git a/src/main/resources/static/gr-lfs.html b/src/main/resources/static/gr-lfs.html
new file mode 100644
index 0000000..8493051
--- /dev/null
+++ b/src/main/resources/static/gr-lfs.html
@@ -0,0 +1,28 @@
+<!--
+@license
+Copyright (C) 2019 The Android Open Source Project
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<link rel="import" href="./gr-lfs-project-info.html">
+
+<dom-module id="gr-lfs">
+  <script>
+    Gerrit.install(plugin => {
+      if (!window.Polymer) { return; }
+
+      plugin.registerCustomComponent('repo-config', 'gr-lfs-project-info');
+    });
+  </script>
+</dom-module>
diff --git a/src/main/resources/static/lfs-project-info.js b/src/main/resources/static/lfs-project-info.js
index b514822..f81f975 100644
--- a/src/main/resources/static/lfs-project-info.js
+++ b/src/main/resources/static/lfs-project-info.js
@@ -13,6 +13,11 @@
 // limitations under the License.
 
 Gerrit.install(function(self) {
+
+  if (window.Polymer) { return; }
+
+  // The code below is only used by the GWT-UI
+
   function toUpperCamel(str) {
     var words = str.split('_');
     for (i=0; i<words.length; i++) {
@@ -66,4 +71,4 @@
   }
 
   self.panel('PROJECT_INFO_SCREEN_BOTTOM', onProjectInfo);
-  });
\ No newline at end of file
+  });
