diff --git a/pages/appolo.vue b/pages/appolo.vue
index 9534389a44926df729673bd6b7c3a3b83074a0e2..cd778e48768d9087515b2d8697aba91a699307ce 100644
--- a/pages/appolo.vue
+++ b/pages/appolo.vue
@@ -32,7 +32,7 @@
                 'table-warning' : member.status == 'MISSING',
             }">
               <th scope="row">{{ member.uid }}</th>
-              <td class="d-none d-xl-table-cell">{{ member.pubkey }}</td>
+              <td class="d-none d-xl-table-cell"><a :href="'hash/' + member.hash">{{ member.pubkey }}</a></td>
               <td class="d-none d-sm-table-cell">{{ member.status }}</td>
             </tr>
           </tbody>
@@ -63,7 +63,7 @@ export default {
       ],
       // Requête graphQL
       query: gql`{version}`,
-      param: '4Fge'
+      param: '4Fge',
     }
   },
   // Fonctions locales
@@ -78,6 +78,7 @@ export default {
             pubkey
             uid
             status
+            hash
           }
         }
       } `,
diff --git a/pages/hash/:hash.vue b/pages/hash/:hash.vue
new file mode 100644
index 0000000000000000000000000000000000000000..c40847669df59ddb8cf64ace623468d72c4e5908
--- /dev/null
+++ b/pages/hash/:hash.vue
@@ -0,0 +1,171 @@
+<template>
+  <main class="content">
+    <div
+      class="spinner-border text-primary mx-auto d-block mb-3"
+      role="status"
+      v-if="$apollo.queries.idFromHash.loading"
+    >
+      <span class="sr-only">Loading...</span>
+    </div>
+    <div v-if="!$apollo.queries.idFromHash.loading">
+      <h2 class="display-2 text-center mb-5">{{ idFromHash.uid }}</h2>
+      <div class="row">
+        <div class="col-8 m-auto">
+          <div class="table-responsive">
+            <table class="table striped">
+              <tr>
+                <td>uid</td>
+                <td>{{ idFromHash.uid }}</td>
+              </tr>
+              <tr>
+                <td>pubkey</td>
+                <td>{{ idFromHash.pubkey }}</td>
+              </tr>
+              <tr>
+                <td>status</td>
+                <td>{{ idFromHash.status }}</td>
+              </tr>
+              <tr>
+                <td>membership_pending</td>
+                <td>{{ idFromHash.membership_pending }}</td>
+              </tr>
+              <tr>
+                <td>membership_pending_block</td>
+                <td>{{ idFromHash.membership_pending_block }}</td>
+              </tr>
+              <tr>
+                <td>membership_pending_limitDate</td>
+                <td>{{ idFromHash.membership_pending_limitDate }}</td>
+              </tr>
+              <tr>
+                <td>id_written_block</td>
+                <td>{{ idFromHash.id_written_block.number }}</td>
+              </tr>
+              <tr>
+                <td>lastApplication</td>
+                <td>{{ idFromHash.lastApplication.number }}</td>
+              </tr>
+              <tr>
+                <td>limitDate</td>
+                <td>{{ idFromHash.limitDate }}</td>
+              </tr>
+              <tr>
+                <td>isLeaving</td>
+                <td>{{ idFromHash.isLeaving }}</td>
+              </tr>
+              <tr>
+                <td>sentry</td>
+                <td>{{ idFromHash.sentry }}</td>
+              </tr>
+              <tr>
+                <td>received_certifications</td>
+                <td>{{ idFromHash.received_certifications.limit }}</td>
+              </tr>
+              <tr>
+                <td>distance</td>
+                <td>{{ idFromHash.distance.value.ratio }}</td>
+              </tr>
+              <tr>
+                <td>distanceE</td>
+                <td>{{ idFromHash.distanceE.value.ratio }}</td>
+              </tr>
+              <tr>
+                <td>quality</td>
+                <td>{{ idFromHash.quality.ratio }}</td>
+              </tr>
+              <tr>
+                <td>qualityE</td>
+                <td>{{ idFromHash.qualityE.ratio }}</td>
+              </tr>
+              <tr>
+                <td>minDate</td>
+                <td>{{ idFromHash.minDate }}</td>
+              </tr>
+              <tr>
+                <td>minDatePassed</td>
+                <td>{{ idFromHash.minDatePassed }}</td>
+              </tr>
+            </table>
+          </div>
+        </div>
+      </div>
+    </div>
+  </main>
+</template>
+
+
+<script>
+import gql from "graphql-tag";
+
+export default {
+  data() {
+    // Variables locales
+    return {};
+  },
+  // Fonctions locales
+  methods: {},
+  apollo: {
+    idFromHash: {
+      query: gql`
+        query Search($hash: Hash!) {
+          idFromHash(hash: $hash) {
+            pubkey
+            uid
+            status
+            hash
+            membership_pending
+            membership_pending_block {
+              number
+            }
+            membership_pending_limitDate
+            id_written_block {
+              number
+            }
+            lastApplication {
+              number
+            }
+            limitDate
+            isLeaving
+            sentry
+            received_certifications {
+              limit
+            }
+            distance {
+              value {
+                ratio
+              }
+            }
+            distanceE {
+              value {
+                ratio
+              }
+            }
+            quality {
+              ratio
+            }
+            qualityE {
+              ratio
+            }
+            minDate
+            minDatePassed
+          }
+        }
+      `,
+      variables() {
+        return { hash: this.$route.params.hash };
+      },
+      skip() {
+        return false;
+      },
+    },
+  },
+  mounted() {
+    // Mise à jour du fil d'ariane au chargement
+    $nuxt.$emit("changeRoute", this.breadcrumb);
+  },
+};
+</script>
+
+<style lang="sass" scoped>
+// CSS Lié au composant
+</style>
\ No newline at end of file