diff --git a/src/pages/MonitoringPage/MonitoringPage.module.css b/src/pages/MonitoringPage/MonitoringPage.module.css
new file mode 100644
index 0000000..3db4884
--- /dev/null
+++ b/src/pages/MonitoringPage/MonitoringPage.module.css
@@ -0,0 +1,130 @@
+/* MonitoringPage UI*/
+
+.dashboard-container {
+ display: grid;
+ grid-template-areas:
+ 'header header header'
+ 'main logs logs'
+ 'footer footer footer';
+ grid-template-columns: 2fr 1fr 1fr;
+ gap: 1rem;
+ padding: 1rem;
+ background-color: #f5f5f5;
+ font-family: Arial, sans-serif;
+}
+
+.experiment-overview {
+ grid-area: header;
+ display: flex;
+ justify-content: space-between;
+ align-items: flex-start;
+ background: white;
+ border-radius: 8px;
+ padding: 1rem;
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
+}
+
+.phase-progress .phase {
+ display: inline-block;
+ width: 25px;
+ height: 25px;
+ border-radius: 5px;
+ margin: 0 3px;
+ text-align: center;
+ line-height: 25px;
+ background: #ccc;
+}
+
+.phase.active {
+ background-color: #5cb85c;
+ color: white;
+}
+
+.phase.current {
+ background-color: #f0ad4e;
+ color: white;
+}
+
+.experiment-controls button {
+ margin-right: 5px;
+ border: none;
+ background: none;
+ cursor: pointer;
+ font-size: 1.2rem;
+}
+
+.connection-status .connected {
+ color: green;
+ font-weight: bold;
+}
+
+.phase-overview {
+ grid-area: main;
+ background: white;
+ border-radius: 8px;
+ padding: 1rem;
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
+}
+
+.phase-overview section {
+ margin-bottom: 1rem;
+}
+
+.phase-overview ul {
+ list-style-type: none;
+ padding: 0;
+}
+
+.phase-overview li.checked::before {
+ content: '✔️ ';
+}
+
+.logs {
+ grid-area: logs;
+ background: white;
+ border-radius: 8px;
+ padding: 1rem;
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
+}
+
+.logs textarea {
+ width: 100%;
+ height: 200px;
+ margin-top: 0.5rem;
+}
+
+.controls-section {
+ grid-area: footer;
+ display: flex;
+ justify-content: space-between;
+ gap: 1rem;
+ background: white;
+ border-radius: 8px;
+ padding: 1rem;
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
+}
+
+.gestures, .speech, .direct-speech {
+ flex: 1;
+}
+
+.direct-speech .speech-input {
+ display: flex;
+ margin-top: 0.5rem;
+}
+
+.direct-speech input {
+ flex: 1;
+ padding: 0.5rem;
+ border: 1px solid #ccc;
+ border-radius: 4px 0 0 4px;
+}
+
+.direct-speech button {
+ background: #007bff;
+ color: white;
+ border: none;
+ padding: 0.5rem 1rem;
+ border-radius: 0 4px 4px 0;
+ cursor: pointer;
+}
diff --git a/src/pages/MonitoringPage/MonitoringPage.tsx b/src/pages/MonitoringPage/MonitoringPage.tsx
new file mode 100644
index 0000000..86142b7
--- /dev/null
+++ b/src/pages/MonitoringPage/MonitoringPage.tsx
@@ -0,0 +1,118 @@
+import React from 'react';
+import styles from './MonitoringPage.module.css'
+
+export default function ExperimentDashboard() {
+ return (
+
+
+
+
Experiment Overview
+
Phase name: Rhyming fish
+
+ 1
+ 2
+ 3
+ 4
+ 5
+
+
+
+
+
Experiment Controls
+
+
+
+
+
+
+
+
+
+
Connection:
+
● Robot is connected
+
+
+
+
+
+ Goals
+
+ - Convince the RP that you are a fish
+ - Reference Shakespeare
+ - Give a compliment
+
+
+
+
+ Triggers
+
+ - Convince the RP that you are a fish
+ - Reference Shakespeare
+ - Give a compliment
+
+
+
+
+ Norms
+
+ - Rhyme when talking
+ - Talk like a fish
+
+
+
+
+ Conditional Norms
+
+ - “RP is sad” - Be nice
+
+
+
+
+
+
+
+
+ );
+}