diff --git a/app/templates/corpora/corpus.html.j2 b/app/templates/corpora/corpus.html.j2
index 89a2d49b50afae01ce14a5fb0ab9e05e6a31df58..c07323ccc5070b59e860d374fd03801c15df9921 100644
--- a/app/templates/corpora/corpus.html.j2
+++ b/app/templates/corpora/corpus.html.j2
@@ -1,10 +1,80 @@
 {% extends "limited_width.html.j2" %}
 
 {% block page_content %}
+<script>
+  var corpus_user_id = {{ corpus.user_id }}
+  socket.emit('inspect_user', corpus_user_id);
+</script>
+<script>
+  var CORPUS_ID = {{ corpus.id }}
+  var foreignCorpusFlag;
+  {% if current_user.id == corpus.user_id %}
+  foreignCorpusFlag = false;
+  {% else %}
+  foreignCorpusFlag = true;
+  {% endif %}
+
+  class InformationUpdater {
+    constructor(corpusId) {
+      this.corpusId = corpusId;
+      if (foreignCorpusFlag) {
+        foreignCorporaSubscribers.push(this);
+      } else {
+        corporaSubscribers.push(this);
+      }
+    }
+
+    _init() {
+      if (foreignCorpusFlag) {
+        this.corpus = foreignCorpora[this.corpusId];
+      } else {
+        this.corpus = corpora[this.corpusId];
+      }
+
+      // Status
+      this.setStatus(this.corpus.status);
+    }
+
+    _update(patch) {
+      var pathArray;
+
+      for (let operation of patch) {
+        /* "/corpusId/valueName" -> ["corpusId", "valueName"] */
+        pathArray = operation.path.split("/").slice(1);
+        if (pathArray[0] != this.corpusId) {continue;}
+        switch(operation.op) {
+          case "add":
+            break;
+          case "delete":
+            location.reload();
+            break;
+          case "replace":
+            if (pathArray[1] === "status") {
+              this.setStatus(operation.value);
+            }
+            break;
+          default:
+            break;
+        }
+      }
+    }
+
+    setStatus(status) {
+      var statusElement;
+      statusElement = document.getElementById("status");
+      statusElement.classList.remove(...Object.values(CorpusList.STATUS_COLORS));
+      statusElement.classList.add(CorpusList.STATUS_COLORS[status] || CorpusList.STATUS_COLORS['default']);
+      statusElement.innerText = status;
+    }
+  }
+
+  var informationUpdater = new InformationUpdater(CORPUS_ID);
+</script>
+
 <div class="col s12 m4">
   <h3 id="title">{{ corpus.title }}</h3>
   <p id="description">{{ corpus.description }}</p>
-  <a class="waves-effect waves-light btn">{{ corpus.status }}</a>
+  <a class="waves-effect waves-light btn" id="status">{{ corpus.status }}</a>
 </div>
 
 <div class="col s12 m8">