Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 82 additions & 0 deletions Interact Page/Currentprojects.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
<h2 style="margin:0 0 12px;">Current Projects</h2>

<details>
<summary><strong>Project 1: Smart Bike VR</strong></summary>
<div style="margin:8px 0 16px 14px;">
<p><strong>Sub-teams:</strong> Sub Teams</p>
<p>Description</p>
Product Owner: Acting Company Director of Redback
This project aims to revolutionise indoor exercise by merging Virtual Reality (VR) and Smart Bike sensor
technologies, creating an immersive workout experience that transcends traditional fitness routines.
The Smart Bike serves as an intuitive controller within the VR environment, with IoT technology enabling
turning and movement based on the user's pedalling speed and in-game incline.

</div>
</details>

<details>
<summary><strong>Project 2: Lachesis</strong></summary>
<div style="margin:8px 0 16px 14px;">
<p><strong>Sub-teams:</strong> Sub Teams</p>
<p>Description</p>
Product Owner: Acting Company Director of Redback
This project is dedicated to harnessing the potential of wearable technology to significantly enhance the quality of
life for individuals. It employs advanced data analytics, innovative web platforms, and sophisticated mobile app
development tools to meet its goals.
Lachesis originally focused on a wearable hardware device with IoT capabilities, aimed at monitoring 30+ year olds
well-being and activity.
Initially hardware-centric, the project included a fall detection system, GPS tracking, and Bluetooth-connected
wearables. In 2025, Lachesis began pivoting toward a software-focused model, aiming to improve data intelligence,
prediction, and dashboard visualisation, minimising reliance on specific physical hardware
</div>
</details>

<details>
<summary><strong>Project 3: ReflexionPro</strong></summary>
<div style="margin:8px 0 16px 14px;">
<p><strong>Sub-teams:</strong> Sub Teams</p>
<p>Description</p>
Product Owner: Acting Company Director of Redback
The Athlete Wearable Tech initiative is dedicated to exploiting the vast potential of data derived from
wearable technology in various sports. This project aims at visualising athletic performance through
detailed data analytics and advanced predictive modelling. By leveraging sophisticated tools such as
Python and Power BI, the initiative delves deep into the essence of sports analytics, providing customised
insights to enhance training and performance across diverse solo sport disciplines.
This application is envisioned not only as a repository for analysis and insights but also as a dynamic tool
for planning and monitoring training and competition programs. It will enable athletes to upload their
data, marrying personal performance metrics with wider analytical findings.
</div>
</details>
<details>
<summary><strong>Project 4: Player Tracker</strong></summary>
<div style="margin:8px 0 16px 14px;">
<p><strong>Sub-teams:</strong> Sub Teams</p>
<p>Description</p>
Product Owner: Acting Company Director of Redback
Named after the astute hunter of Greek mythology and the constellation that illuminates our night sky, Project
Orion represents a pioneering venture poised to redefine our engagement with sports. Project Orion is a cuttingedge>
for his ability to never lose track of his target, perfectly embodies our mission.
Project Orion's primary objective is to forge an intelligent, real-time tracking system for athletes. By harmonisin>
sophisticated computer vision technology, Project Orion is set to profoundly enhance our comprehension of
athletes' movements, interactions, and overall performance on the field.
At the heart of Project Orion lies its formidable data analysis prowess. Utilising the power of machine learning
and predictive modelling, the project aims to transform complex streams of data into practical, actionable
insights. Whether it's foreseeing potential injuries or monitoring athletes' fatigue levels, Project Orion's predic>
capabilities are designed to convert raw data into essential knowledge. This knowledge will amplify performance
standards in various sports.
</div>
</details>
<details>
<summary><strong>Project 5: Bugbox</strong></summary>
<div style="margin:8px 0 0 14px;">
<p><strong>Sub-teams:</strong> Sub Teams</p>
<p>Description</p>
Bugbox has set ambitious goals for 2025, both technically and commercially. Capstone will focus on delivering the
Raspberry 5.0 features that is the final hardware component for our robotic ecosystem. The Raspberry 5.0 will
coordinate several ESP32 S3 robots to carry out tasks not achievable by a single robot, e.g. carry large objects. T>
project requires a passion and technical skills for IoT.
Additionally, Bugbox is also seeking students able to design and deploy a gamified world for students to explore.
This requires UI/UX design, front/back-end web dev, and data architecture with AI and Machine Learning
features.
</div>
</details>
178 changes: 178 additions & 0 deletions Interact Page/css.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
:root {
--primary-purple: #4b0055;
--accent-orange: #f26b4f;
--light-bg: #f0f4f8;
--button-hover: #6a1b9a;
--text-color: #333;
--disclaimer-bg: #f3f3f3;
}
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: var(--light-bg);
margin: 0;
padding: 40px;
color: var(--text-color);
}
.logo-header {
display: flex;
align-items: center;
gap: 15px;
margin-bottom: 10px;
}
.logo {
width: 60px;
height: auto;
border-radius: 10px;
}
.Header {
font-size: 2.5rem;
font-weight: bold;
color: var(--primary-purple);
}
hr {
margin: 30px 0;
border: 1px solid #ccc;
}
.SubHeadingButton {
display: inline-block;
background-color: var(--accent-orange);
color: white;
padding: 10px 20px;
font-size: 1rem;
font-weight: bold;
border: 2px solid var(--accent-orange);
border-radius: 6px;
text-decoration: none;
transition: background-color 0.3s ease, color 0.3s ease;
margin-right: 10px;
margin-bottom: 10px;
cursor: pointer;
}
.SubHeadingButton:hover {
background-color: transparent;
color: var(--accent-orange);
}
.input-field {
padding: 10px 14px;
font-size: 1rem;
border: 1px solid #ccc;
border-radius: 6px;
outline: none;
transition: border-color 0.3s ease, box-shadow 0.3s ease;
margin-right: 10px;
}
.input-field:focus {
border-color: var(--accent-orange);
box-shadow: 0 0 5px rgba(242, 107, 79, 0.4);
}
.project-list {
list-style: none;
padding-left: 0;
}
.project-toggle {
background-color: transparent;
border: none;
color: black;
font-size: 1rem;
font-weight: bold;
text-align: left;
cursor: pointer;
padding: 8px 0;
width: 100%;
}
.project-toggle:hover {
text-decoration: underline;
}
.project-details {
display: none;
padding: 10px 15px;
margin: 8px 0 20px 15px;
background-color: #eaf6ff;
border-left: 4px solid var(--primary-purple);
border-radius: 4px;
color: var(--text-color);
}
.disclaimer {
margin-top: 60px;
padding: 20px;
background-color: var(--disclaimer-bg);
border-top: 1px solid #ccc;
border-radius: 6px;
}
.disclaimer h4 {
margin-bottom: 8px;
color: var(--primary-purple);
font-weight: bold;
}
.card {
background: #fff;
border: 1px solid #e5e7eb;
border-radius: 12px;
box-shadow: 0 1px 3px rgba(0,0,0,.06);
}
details.rb-menu {
margin: 0 20px 18px;
}
details.rb-menu .rb-menu__summary {
list-style: none;
cursor: pointer;
padding: 14px 18px;
font-weight: 700;
color: var(--primary-purple);
display: flex;
align-items: center;
gap: 10px;
}
details.rb-menu .rb-menu__summary::-webkit-details-marker {
display: none;
}
details.rb-menu[open] .rb-menu__summary {
border-bottom: 1px solid #e5e7eb;
}
.rb-muted {
color: #6b7280;
font-size: .95rem;
}
.chev {
transition: transform .18s ease;
}
details[open] .chev {
transform: rotate(180deg);
}
nav.rb-items {
padding: 14px 18px;
display: grid;
gap: 14px;
}
nav.rb-items a {
text-decoration: none;
color: #111827;
padding: 2px 0;
border-radius: 8px;
}
nav.rb-items a:hover {
background: #f7f7fb;
}
nav.rb-items a.active {
background: #f1f5f9;
font-weight: 600;
}
.content-shell {
margin: 18px 20px 40px;
padding: 0;
overflow: hidden;
}
.content-header {
padding: 16px 18px 0;
}
.content-body {
padding: 10px 18px 18px;
color: #6b7280;
}
#rb-frame {
width: 100%;
height: 560px;
border: 0;
display: none;
background: #fff;
}
17 changes: 17 additions & 0 deletions Interact Page/dashboard.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<h2>Dashboard</h2>
<pre id="dashboardOutput">Loading…</pre>

<script>
function fetchDashboardData() {
fetch('dashboard.php')
.then(r => r.text())
.then(t => { document.getElementById('dashboardOutput').textContent = t; })
.catch(err => {
document.getElementById('dashboardOutput').textContent = 'Error fetching system info.';
console.error(err);
});
}
fetchDashboardData();
setInterval(fetchDashboardData, 10000); // refresh every 10s
</script>

19 changes: 19 additions & 0 deletions Interact Page/dashboard.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php
header("Content-Type: text/plain");

echo "System Uptime\n";
echo shell_exec("uptime -p");

echo "\nCPU Load\n";
echo shell_exec("top -bn1 | grep 'Cpu' | head -n 1");

echo "\nMemory Usage\n";
echo shell_exec("free -h");

echo "\nDisk Usage (/ partition)\n";
echo shell_exec("df -h /");

echo "\nSSH Login Attempts\n";
echo shell_exec("last -a | head -n 5");
?>

44 changes: 44 additions & 0 deletions Interact Page/firewall.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Redback Operations</title>
<link rel="stylesheet" href="CSS.css">
</head>
<body>
<div>
<h2>Firewall Status</h2>
<p style="color: green; font-weight: bold;"> UFW is running.</p>
<h3>Open Firewall Ports:</h3>
<table style="background-color: white; border-collapse: collapse;">
<thead>
<tr>
<th style="border: 1px solid #ccc; padding: 6px;">To</th>
<th style="border: 1px solid #ccc; padding: 6px;">Action</th>
<th style="border: 1px solid #ccc; padding: 6px;">From</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<br>
</ul>

<script>
function fetchFirewallStatus() {
fetch('firewall.php')
.then(response => response.text())
.then(data => {
document.getElementById('firewallOutput').innerHTML = data;
})
.catch(error => {
document.getElementById('firewallOutput').innerHTML = "Error fetching firewall status.";
console.error(error);
});
}
fetchFirewallStatus();
setInterval(fetchFirewallStatus, 5000);
</script>
</div>
</body>
</html>
32 changes: 32 additions & 0 deletions Interact Page/firewall.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php
header("Content-Type: text/html");
$output = shell_exec('sudo ufw status 2>&1');
if ($output === null) {
echo "<p class='status-warning'>⚠ Unable to retrieve UFW status.</p>";
exit;
}
$lines = explode("\n", trim($output));
$statusLine = $lines[0] ?? 'Unknown status';
if (stripos($statusLine, 'inactive') !== false) {
echo "<p class='status-bad'> UFW is not running.</p>";
} elseif (stripos($statusLine, 'active') !== false) {
echo "<p class='status-ok'> UFW is running.</p>";
echo "<p><strong>Open Firewall Ports:</strong></p>";
echo "<pre class='firewall-block'>";
foreach (array_slice($lines, 1) as $line) {
echo htmlspecialchars($line) . "\n";
}
echo "</pre>";
} else {
echo "<p class='status-warning'>Could not determine UFW status: $statusLine</p>";
}
$ip = shell_exec("hostname -I");
$gateway = shell_exec("ip route | grep default | awk '{print $3}'");
$dnsList = shell_exec("grep 'nameserver' /etc/resolv.conf | grep -v 127.0.0.53");
$dns = trim($dnsList) ?: "⚠ No external DNS server found.";
echo "<hr>";
echo '<div class="net-info">';
echo ' <h3>Network Configuration Details:</h3>';
echo ' <p> <strong>IP Address:</strong> ' . htmlspecialchars(trim($ip)) . '</p>';
echo '</div>';
?>
Loading