diff --git a/src/main/java/nl/utwente/mod4/pokemon/Utils.java b/src/main/java/nl/utwente/mod4/pokemon/Utils.java
index 01bc8da9bc03d5faeb6250e9d935ef16eb2dec38..7116843c607543e11b682763cdcb265b30e350b5 100644
--- a/src/main/java/nl/utwente/mod4/pokemon/Utils.java
+++ b/src/main/java/nl/utwente/mod4/pokemon/Utils.java
@@ -1,12 +1,14 @@
 package nl.utwente.mod4.pokemon;
 
+import java.nio.charset.StandardCharsets;
 import java.nio.file.Path;
 import java.util.List;
 
 public class Utils {
 
     public static String getAbsolutePathToResources() {
-        return Utils.class.getClassLoader().getResource("").getPath();
+        var patgh = Utils.class.getClassLoader().getResource("").getPath();
+        return java.net.URLDecoder.decode(patgh, StandardCharsets.UTF_8);
     }
 
     public static <T extends Comparable<T>> int compare(T o1, T o2) {
diff --git a/src/main/webapp/js/trainers.js b/src/main/webapp/js/trainers.js
new file mode 100644
index 0000000000000000000000000000000000000000..f9e8b9ca568cce0291cc8671bb5c9139eb3c66b8
--- /dev/null
+++ b/src/main/webapp/js/trainers.js
@@ -0,0 +1,59 @@
+let trainers = {};
+let tableParentId = 'table';
+let detailsParentId = 'details';
+
+function getRowId(resource) {
+    return `${resource.id}_row`
+}
+
+function updateDetails(trainerId) {
+    const trainer = trainers?.data?.find(item => item.id === trainerId);
+    const parent = document.getElementById(detailsParentId);
+
+    parent.innerHTML = `
+    <div class="card" id="${trainer.id}_card">
+      <img src="${trainer.profileUrl}" class="card-img-top" alt="${trainer.name}">
+      <div class="card-body">
+        <h5 class="card-title">${trainer.name}</h5>
+        <p class="card-text">
+            ID: ${trainer.id} </br>
+            Created: ${trainer.created} </br>
+            Last Update: ${trainer.lastUpDate}
+        </p>
+      </div>
+    </div>
+    `
+}
+
+function trainerToRow(trainer) {
+    return `
+    <tr id="${getRowId(trainer)}" onclick="updateDetails('${trainer?.id?.trim()}')">
+        <th scope="row">${trainer.id}</th>
+        <td>${trainer.name}</td>
+        <td>${trainer.created}</td>
+        <td>${trainer.lastUpDate}</td>
+    </tr>
+    `
+}
+
+function createTrainersTable() {
+    const tableParent = document.getElementById(tableParentId);
+    tableParent.innerHTML = `
+        <table class="table table-striped table-hover">
+            <thead>
+                <tr>
+                    <th scope="col">ID</th>
+                    <th scope="col">Name</th>
+                    <th scope="col">Created</th>
+                    <th scope="col">Last Update</th>
+                </tr>
+            </thead>
+            <tbody>
+                ${
+        trainers.data.map(resource => `${trainerToRow(resource)}`).join("\n")
+        || "no data"
+    }
+            </tbody>
+        </table>
+    `
+}
\ No newline at end of file
diff --git a/src/main/webapp/trainers.html b/src/main/webapp/trainers.html
new file mode 100644
index 0000000000000000000000000000000000000000..1255d6a609b66030ea2eba33950c1f2b12595460
--- /dev/null
+++ b/src/main/webapp/trainers.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <!-- Required meta tags -->
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+
+  <!-- Bootstrap CSS -->
+  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css"
+        integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
+
+  <title>Trainers</title>
+  <link rel="icon" type="image/x-icon" href="/pokemon/favicon.ico">
+</head>
+<body>
+
+<script src="js/trainers.js"></script>
+<script>
+  tableParentId = "tableDiv";
+  detailsParentId = "detailsDiv";
+
+  fetch('/pokemon/api/trainers')
+          .then(res => res.json())
+          .then(data => {
+            trainers = data;
+            createTrainersTable();
+          })
+          .catch(err => {
+            console.error(`Unable to fetch Trainers: ${err.status}`);
+            console.error(err);
+          });
+</script>
+
+<h1>Trainers</h1>
+
+<div class="container">
+  <div class="row">
+    <div id="tableDiv" class="col-8">No data</div>
+    <div id="detailsDiv" class="col-4">No data</div>
+  </div>
+</div>
+
+</body>
+</html>
\ No newline at end of file