+ {navigationItems.slice(1, 7).map((item) => {
const Icon = item.icon;
const active = isActive(item.href);
@@ -201,7 +207,8 @@ export default function MobileNavigation() {
key={item.name}
to={item.href}
className={`flex flex-col items-center py-2 px-1 transition-colors ${
- active ? "text-green-600" : "text-gray-500"
+ active
+ ? "text-green-600" : "text-gray-500 hover:bg-gray-100 hover:shadow-md hover:scale-[1.02] hover:ring-gray-200"
}`}
>
diff --git a/26_T1/afl_player_tracking_and_crowd_monitoring/frontend/client/pages/About.tsx b/26_T1/afl_player_tracking_and_crowd_monitoring/frontend/client/pages/About.tsx
new file mode 100644
index 000000000..546d68667
--- /dev/null
+++ b/26_T1/afl_player_tracking_and_crowd_monitoring/frontend/client/pages/About.tsx
@@ -0,0 +1,121 @@
+import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
+import MobileNavigation from "@/components/MobileNavigation";
+
+export default function About() {
+ return (
+
+
+
+
+ {/* Title */}
+
About the Project
+
+ {/* Overview */}
+
+
+ Project Overview
+
+
+
+ Project 4, RedBack Orion is one of our company's initiatives aimed
+ at redefining sports engagement.
+
+
+ The system focuses on building an intelligent, real-time tracking
+ platform for athletes across multiple sports—especially AFL
+ (Footy), one of Australia’s most popular sports.
+
+
+ It tracks player performance live while also monitoring crowd
+ density in stadiums to ensure audience safety during peak times.
+
+
+
+
+ {/* Features */}
+
+
+ Features
+
+
+
+ {/* Player Performance */}
+
+
+ Player Performance
+
+
+
+ - Live stats: active players, goals, efficiency, disposals
+ - Player info: name, age, team, position
+ - Detailed stats: kicks, handballs, tackles
+ - Performance ratings
+ - Heatmaps and analytics
+ - Player comparison
+
+
+
+
+ {/* Crowd Monitoring */}
+
+
+ Crowd Monitoring
+
+
+
+ - Total attendance and density tracking
+ - Real-time stadium heatmap
+ - Zone analytics (capacity, flow)
+ - Wait times and movement
+ - Safety alerts and risk detection
+
+
+
+
+ {/* Analytics */}
+
+
+ Analytics
+
+
+
+ - Upload AFL or crowd footage
+ - Automated video analysis
+ - Generated reports
+ - Processing queue tracking
+
+
+
+
+ {/* Reports */}
+
+
+ Reports
+
+
+
+ - Download reports
+ - Quick report generation
+ - Custom report builder
+
+
+
+
+ {/* API Diagnostics */}
+
+
+ API Diagnostics
+
+
+
+ Monitor system performance and debug API interactions in real-time.
+
+
+
+
+
+
+
+
+ );
+ }
\ No newline at end of file
diff --git a/26_T1/afl_player_tracking_and_crowd_monitoring/frontend/client/pages/CrowdMonitor.tsx b/26_T1/afl_player_tracking_and_crowd_monitoring/frontend/client/pages/CrowdMonitor.tsx
index 8192889d9..6530752df 100644
--- a/26_T1/afl_player_tracking_and_crowd_monitoring/frontend/client/pages/CrowdMonitor.tsx
+++ b/26_T1/afl_player_tracking_and_crowd_monitoring/frontend/client/pages/CrowdMonitor.tsx
@@ -43,7 +43,7 @@ const generateCrowdData = () => {
capacity: 15000,
current: 13200,
color: "#ef4444", // red-500
- coordinates: { x: 50, y: 20, width: 40, height: 15 },
+ coordinates: { x: 50, y: 12, width: 40, height: 12 },
entryPoints: ["Gate A", "Gate B"],
facilities: ["Toilets", "Food Court", "Merchandise"],
temperature: 24,
@@ -55,19 +55,24 @@ const generateCrowdData = () => {
capacity: 8000,
current: 6800,
color: "#f97316", // orange-500
- coordinates: { x: 50, y: 10, width: 40, height: 10 },
+ coordinates: { x: 50, y: 0, width: 40, height: 12 },
entryPoints: ["Gate A-Upper"],
facilities: ["Toilets", "Bar"],
temperature: 26,
safety: "normal",
},
+
+
+
+
+
{
id: 3,
name: "Southern Stand - Lower",
capacity: 12000,
current: 11400,
color: "#dc2626", // red-600
- coordinates: { x: 50, y: 75, width: 40, height: 15 },
+ coordinates: { x: 50, y: 76, width: 40, height: 12 },
entryPoints: ["Gate C", "Gate D"],
facilities: ["Toilets", "Food Court", "First Aid"],
temperature: 23,
@@ -79,7 +84,7 @@ const generateCrowdData = () => {
capacity: 6000,
current: 5700,
color: "#dc2626", // red-600
- coordinates: { x: 50, y: 90, width: 40, height: 10 },
+ coordinates: { x: 50, y: 88, width: 40, height: 12 },
entryPoints: ["Gate C-Upper"],
facilities: ["Premium Bar"],
temperature: 25,
@@ -115,7 +120,7 @@ const generateCrowdData = () => {
capacity: 2000,
current: 1850,
color: "#dc2626", // red-600
- coordinates: { x: 50, y: 35, width: 30, height: 8 },
+ coordinates: { x: 50, y: 25, width: 30, height: 12 },
entryPoints: ["Premium Entrance"],
facilities: ["VIP Lounge", "Premium Dining"],
temperature: 21,
@@ -127,7 +132,7 @@ const generateCrowdData = () => {
capacity: 1500,
current: 1425,
color: "#dc2626", // red-600
- coordinates: { x: 50, y: 57, width: 30, height: 8 },
+ coordinates: { x: 50, y: 63, width: 30, height: 12 },
entryPoints: ["Premium Entrance"],
facilities: ["VIP Lounge", "Premium Bar"],
temperature: 21,
@@ -349,10 +354,16 @@ export default function CrowdMonitor() {