diff --git a/src/site/SF-Pro-Rounded-Light.otf b/src/site/SF-Pro-Rounded-Light.otf
new file mode 100755
index 0000000..94584f4
Binary files /dev/null and b/src/site/SF-Pro-Rounded-Light.otf differ
diff --git a/src/site/fetchLogsAndGenerateTable.js b/src/site/fetchLogsAndGenerateTable.js
new file mode 100644
index 0000000..3574655
--- /dev/null
+++ b/src/site/fetchLogsAndGenerateTable.js
@@ -0,0 +1,52 @@
+
+let indicentLogs = [
+  {
+    id: 1,
+    date: new Date('2020/05/30 01:20:38').toISOString(),
+    message: 'Vi har en feil i mobilnettet på denne adressen. Vi jobber med å løse problemet.',
+    duration: '6d 4t 32min'
+  }, {
+    id: 2,
+    date: new Date('2020/04/22 13:47:25').toISOString(),
+    message: 'Vi har en feil i internett på denne adressen. Vi jobber med å løse problemet.',
+    duration: '1d 2t 54min'
+  }
+]
+indicentLogs = indicentLogs.reverse()
+
+const newDiv = () => document.createElement('div');
+
+const closePopover = () => document.getElementById('popover').remove();
+
+const tableRowFromLog = (log, table) => {
+  const row = table.insertRow(0);
+  row.setAttribute('incident-id', log.id)
+  row.onclick = clickRowPopupIncident;
+  row.insertCell(0).innerHTML = log.date;
+  row.insertCell(1).innerHTML = log.message;
+  row.insertCell(2).innerHTML = log.duration;
+}
+
+const clickRowPopupIncident = (event) => {
+  const cell = event.toElement;
+  const row = cell.parentElement;
+  const indicentId = row.getAttribute('incident-id');
+
+  const popover = newDiv()
+  const container = newDiv()
+  popover.id = 'popover'
+  popover.onclick = closePopover;
+  container.className = 'container'
+  container.innerText = Object.values(indicentLogs[indicentId]).join('\n')
+  popover.appendChild(container)
+  document.body.appendChild(popover);
+}
+
+function fetchLogsAndGenerateTable() {
+  const table = document.getElementById('log-table');
+  const tableBody = table.tBodies[0];
+
+  indicentLogs.map(log => tableRowFromLog(log, tableBody))
+}
+
+fetchLogsAndGenerateTable()
\ No newline at end of file
diff --git a/src/site/fetchUptimeAndGenerateBarGraph.js b/src/site/fetchUptimeAndGenerateBarGraph.js
new file mode 100644
index 0000000..ef1adbc
--- /dev/null
+++ b/src/site/fetchUptimeAndGenerateBarGraph.js
@@ -0,0 +1,28 @@
+
+const createEvent = () => {
+  const event = document.createElement('div')
+  event.className = 'event';
+  const tooltip = document.createElement('span');
+  tooltip.className = 'tooltip';
+  const tooltipContent = new Date().toLocaleString()
+  tooltip.innerText = tooltipContent;
+
+  event.appendChild(tooltip);
+  return event;
+}
+
+function fetchUptimeAndGenerateBarGraph(instances=10) {
+  const graph = document.getElementById('bar-graph');
+
+  const event = createEvent()
+
+  for (var i = instances; i >= 0; i--) {
+    const clone = event.cloneNode(true)
+    Math.random() > 0.95 ? clone.className += ' error' : null;
+    graph.appendChild(clone)
+  }
+}
+
+
+// fetchUptimeAndGenerateBarGraph(20)
+fetchUptimeAndGenerateBarGraph(60)
\ No newline at end of file
diff --git a/src/site/index.html b/src/site/index.html
new file mode 100644
index 0000000..3ce12dd
--- /dev/null
+++ b/src/site/index.html
@@ -0,0 +1,57 @@
+
+
+
+  
+    
Oppetid
+    
+      
+    
+
+    
+      
+      Uptime
+
+      
+      Downtime
+    
+    
+
+    
Indicent log
+    
+      
+        
+          | Date+ | Incident message+ | Duration+ | 
+
+        
+          | 31 Mai 2020 22:34+ | OK+ | 6d 4t 32min+ | 
+        
+          | 31 Mai 2020 22:34+ | OK+ | 6d 4t 32min+ | 
+        
+          | 31 Mai 2020 22:34+ | OK+ | 6d 4t 32min+ | 
+      
+    
+
+