diff --git a/frontend/my-react-app/src/api/events.api.ts b/frontend/my-react-app/src/api/events.api.ts
index be8ce5dc..cd3df311 100644
--- a/frontend/my-react-app/src/api/events.api.ts
+++ b/frontend/my-react-app/src/api/events.api.ts
@@ -10,7 +10,7 @@ export const getAllEvents = async (): Promise => {
title: event.title,
description: event.description,
category: event.eventType,
- image: event.imageUrl ? [event.imageUrl] : ['/src/images/samantha-gades-fIHozNWfcvs-unsplash.jpg'],
+ image: event.imageUrl ? [`http://localhost:8080${event.imageUrl}`] : [],
price: event.price || 0,
startDate: new Date(event.startDateTime),
endDate: new Date(event.endDateTime),
@@ -30,7 +30,7 @@ export const getEventById = async (eventId: number): Promise => {
title: event.title,
description: event.description,
category: event.eventType,
- image: event.imageUrl ? [event.imageUrl] : ['/src/images/samantha-gades-fIHozNWfcvs-unsplash.jpg'],
+ image: event.imageUrl ? [`http://localhost:8080${event.imageUrl}`] : [],
price: event.price || 0,
startDate: new Date(event.startDateTime),
endDate: new Date(event.endDateTime),
@@ -39,10 +39,10 @@ export const getEventById = async (eventId: number): Promise => {
};
};
-export const addEvent = async (formData: FormData) => {
- const response = await axiosInstance.post('/events/add', formData, {
+export const addEvent = async (eventData: any) => {
+ const response = await axiosInstance.post('/events/add', eventData, {
headers: {
- 'Content-Type': 'multipart/form-data',
+ 'Content-Type': 'application/json',
},
});
return response.data;
diff --git a/frontend/my-react-app/src/api/savedEvents.api.ts b/frontend/my-react-app/src/api/savedEvents.api.ts
index c7d736b3..48ee29b8 100644
--- a/frontend/my-react-app/src/api/savedEvents.api.ts
+++ b/frontend/my-react-app/src/api/savedEvents.api.ts
@@ -20,7 +20,7 @@ export const getSavedEvents = async (): Promise => {
title: event.title,
description: event.description,
category: event.eventType,
- image: event.imageUrl ? [event.imageUrl] : ['/src/images/samantha-gades-fIHozNWfcvs-unsplash.jpg'],
+ image: event.imageUrl ? [`http://localhost:8080${event.imageUrl}`] : [],
price: event.price || 0,
startDate: new Date(event.startDateTime),
endDate: new Date(event.endDateTime),
diff --git a/frontend/my-react-app/src/pages/EventsPage.tsx b/frontend/my-react-app/src/pages/EventsPage.tsx
index 28716ed2..19cd862d 100644
--- a/frontend/my-react-app/src/pages/EventsPage.tsx
+++ b/frontend/my-react-app/src/pages/EventsPage.tsx
@@ -52,7 +52,7 @@ function EventsPage() {
title: event.title,
description: event.description,
category: event.eventType,
- image: event.imageUrl ? [event.imageUrl] : ['/src/images/samantha-gades-fIHozNWfcvs-unsplash.jpg'],
+ image: event.imageUrl ? (event.imageUrl.startsWith('http') || event.imageUrl.startsWith('https') ? [event.imageUrl] : [`http://localhost:8080${event.imageUrl}`]) : [],
price: event.price || 0,
startDate: new Date(event.startDateTime),
endDate: new Date(event.endDateTime),
@@ -250,7 +250,7 @@ function EventsPage() {
{/* Filters and Search */}
-
+
-
+ Category
-
+ Sort By
-
+
Price Range: {priceRange[0] === 0 ? 'Free' : `$${priceRange[0]}`} - {priceRange[1] === 0 ? 'Free' : `$${priceRange[1]}`}
@@ -326,7 +326,7 @@ function EventsPage() {
{/* Events Grid */}
{filteredAndSortedEvents.map((event) => (
-
+
Date: Sun, 2 Nov 2025 12:46:02 -0500
Subject: [PATCH 05/14] Hid the "Create an Event" button so that only
"organizer" accounts can see it, and fixed issues in CreateData, EventsPage
and Login
---
.vscode/settings.json | 3 ++-
frontend/my-react-app/src/App.tsx | 20 ++++++++++++++++---
frontend/my-react-app/src/CreateData.tsx | 1 +
.../my-react-app/src/pages/EventsPage.tsx | 4 ++++
.../my-react-app/src/types/user.interfaces.ts | 2 +-
5 files changed, 25 insertions(+), 5 deletions(-)
diff --git a/.vscode/settings.json b/.vscode/settings.json
index c5f3f6b9..b84f89c3 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,3 +1,4 @@
{
- "java.configuration.updateBuildConfiguration": "interactive"
+ "java.configuration.updateBuildConfiguration": "interactive",
+ "java.compile.nullAnalysis.mode": "automatic"
}
\ No newline at end of file
diff --git a/frontend/my-react-app/src/App.tsx b/frontend/my-react-app/src/App.tsx
index 53545258..1b516c8e 100644
--- a/frontend/my-react-app/src/App.tsx
+++ b/frontend/my-react-app/src/App.tsx
@@ -1,5 +1,6 @@
// src/App.tsx
import {Routes, Route, useNavigate, Outlet} from 'react-router-dom';
+import { useAuth } from './contexts/AuthContext';
import {
AppBar,
Toolbar,
@@ -47,6 +48,7 @@ function BlankLayout() {
function Home() {
const navigate = useNavigate();
+ const { user } = useAuth();
return (
<>
@@ -60,8 +62,23 @@ function Home() {
and track attendance for their events. They can also gain valuable insights for their events via our analytics dashboards. We are also welcoming
campus administrators, who can oversee organizations and moderate all content. Linkt is our brand-new system that connects students with campus life
while providing essential tools for hosting and administrating events!
+ {user?.userType == 'organizer' && ( )}
+ {user?.userType == 'organizer' && ( )}
+
+ {user?.userType == 'organizer' && (
+
+ Hey! We noticed that you're an organizer! Feel free to add your event to our page!
+ )}
+
+ {user?.userType == 'organizer' && (
+ )}
+
+
+
{/*
@@ -116,9 +133,6 @@ function Home() {
-
>
);
diff --git a/frontend/my-react-app/src/CreateData.tsx b/frontend/my-react-app/src/CreateData.tsx
index 6057c799..a391a6ff 100644
--- a/frontend/my-react-app/src/CreateData.tsx
+++ b/frontend/my-react-app/src/CreateData.tsx
@@ -94,6 +94,7 @@ export default function AddEvent() {
+
Please enter an image link online for your event!
([minPrice, maxPrice]);
+ useEffect(() => {
+ setPriceRange([minPrice, maxPrice]);
+ }, [minPrice, maxPrice]);
+
// Get unique categories
const categories = useMemo(() => {
const cats = new Set(events.map(event => event.category));
diff --git a/frontend/my-react-app/src/types/user.interfaces.ts b/frontend/my-react-app/src/types/user.interfaces.ts
index c5c96183..61c93e99 100644
--- a/frontend/my-react-app/src/types/user.interfaces.ts
+++ b/frontend/my-react-app/src/types/user.interfaces.ts
@@ -5,7 +5,7 @@ export interface User {
firstName : string;
lastName : string;
email : string;
- phoneNumber : string;
+ phoneNumber?: string;
userType?: string;
}
From d9b8c5fef8ba79d904b9712a228741d3411d0b85 Mon Sep 17 00:00:00 2001
From: Darcy Loane-Billings <122037471+DudeNamedDarcy@users.noreply.github.com>
Date: Sun, 2 Nov 2025 16:52:02 -0500
Subject: [PATCH 06/14] Fixed Logout Issue and fixed homepage bug
---
frontend/my-react-app/src/App.tsx | 16 +---------------
frontend/my-react-app/src/components/Header.tsx | 1 +
2 files changed, 2 insertions(+), 15 deletions(-)
diff --git a/frontend/my-react-app/src/App.tsx b/frontend/my-react-app/src/App.tsx
index 7f4c97cc..f612dc63 100644
--- a/frontend/my-react-app/src/App.tsx
+++ b/frontend/my-react-app/src/App.tsx
@@ -77,21 +77,7 @@ function Home() {
{user?.userType == 'organizer' && (
)}
-
- {user?.userType == 'organizer' && ( )}
- {user?.userType == 'organizer' && ( )}
-
- {user?.userType == 'organizer' && (
-
- Hey! We noticed that you're an organizer! Feel free to add your event to our page!
- )}
-
- {user?.userType == 'organizer' && (
- )}
-
+ )}
diff --git a/frontend/my-react-app/src/components/Header.tsx b/frontend/my-react-app/src/components/Header.tsx
index 298a45f7..e8a48338 100644
--- a/frontend/my-react-app/src/components/Header.tsx
+++ b/frontend/my-react-app/src/components/Header.tsx
@@ -59,6 +59,7 @@ const Header: React.FC = () => {
const handleLogout = () => {
logout();
handleClose();
+ navigate('/');
};
const handleLogin = () => {
From 08b0909b570d36e91032f201c8fbf6695cd70942 Mon Sep 17 00:00:00 2001
From: Darcy Loane-Billings <122037471+DudeNamedDarcy@users.noreply.github.com>
Date: Sun, 2 Nov 2025 16:55:37 -0500
Subject: [PATCH 07/14] Removed Accidental Duplicate Line from Merge Fixing in
App.tsx
---
frontend/my-react-app/src/App.tsx | 1 -
1 file changed, 1 deletion(-)
diff --git a/frontend/my-react-app/src/App.tsx b/frontend/my-react-app/src/App.tsx
index f612dc63..53995b4f 100644
--- a/frontend/my-react-app/src/App.tsx
+++ b/frontend/my-react-app/src/App.tsx
@@ -166,7 +166,6 @@ function App() {
}/>
}/>
}/>
- }/>
}/>
From dd7abbdb21ee432e0d747d03eac7b6d28a73319b Mon Sep 17 00:00:00 2001
From: Darcy Loane-Billings <122037471+DudeNamedDarcy@users.noreply.github.com>
Date: Sun, 2 Nov 2025 17:23:27 -0500
Subject: [PATCH 08/14] Added a Password Length Alert to the SignUp page!
---
frontend/my-react-app/src/SignUp.tsx | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/frontend/my-react-app/src/SignUp.tsx b/frontend/my-react-app/src/SignUp.tsx
index ac40084d..9ea44cd7 100644
--- a/frontend/my-react-app/src/SignUp.tsx
+++ b/frontend/my-react-app/src/SignUp.tsx
@@ -11,11 +11,18 @@ export default function SignUp() {
const [password, setPassword] = useState('');
const [userType, setUserType] = useState<'student' | 'org'>('student');
const [organizationName, setOrganizationName] = useState('');
+ const [error, setError] = useState(''); // Added error state
const navigate = useNavigate();
const { login } = useAuth();
const handleSubmit = async (e: React.FormEvent) => {
e.preventDefault();
+ setError(''); // Clear previous errors
+
+ if (password.length < 7) {
+ alert('ERROR: Password must be at least 7 characters long. Please enter a longer password.'); //setError does not work here, make it an alert!
+ return;
+ }
try {
const response = await signUp({
From b2f62f0a595252229d2b9cb3840dc00c07ee7f86 Mon Sep 17 00:00:00 2001
From: Darcy Loane-Billings <122037471+DudeNamedDarcy@users.noreply.github.com>
Date: Sun, 2 Nov 2025 17:33:14 -0500
Subject: [PATCH 09/14] Added a text requirement for the Password Length in the
SignUp file.
---
frontend/my-react-app/src/SignUp.tsx | 1 +
1 file changed, 1 insertion(+)
diff --git a/frontend/my-react-app/src/SignUp.tsx b/frontend/my-react-app/src/SignUp.tsx
index 9ea44cd7..c5afc2bc 100644
--- a/frontend/my-react-app/src/SignUp.tsx
+++ b/frontend/my-react-app/src/SignUp.tsx
@@ -93,6 +93,7 @@ export default function SignUp() {
+
Date: Mon, 17 Nov 2025 17:52:15 -0500
Subject: [PATCH 10/14] Began CSS Changes to Front Page, Sign Up, Log In, My
Events and Browse Events pages
---
frontend/my-react-app/package-lock.json | 7 +-
frontend/my-react-app/package.json | 1 +
frontend/my-react-app/src/App.css | 26 ++++
frontend/my-react-app/src/App.tsx | 83 ++++++-----
frontend/my-react-app/src/Login.tsx | 13 +-
frontend/my-react-app/src/SignUp.css | 136 ++++++++++++++++++
frontend/my-react-app/src/SignUp.tsx | 99 ++++---------
.../Montserrat-Italic-VariableFont_wght.ttf | Bin 0 -> 701156 bytes
.../Montserrat-VariableFont_wght.ttf | Bin 0 -> 688600 bytes
.../src/assets/fonts/Montserrat/OFL.txt | 93 ++++++++++++
.../src/assets/fonts/Montserrat/README.txt | 81 +++++++++++
.../Montserrat/static/Montserrat-Black.ttf | Bin 0 -> 343296 bytes
.../static/Montserrat-BlackItalic.ttf | Bin 0 -> 348396 bytes
.../Montserrat/static/Montserrat-Bold.ttf | Bin 0 -> 335788 bytes
.../static/Montserrat-BoldItalic.ttf | Bin 0 -> 342016 bytes
.../static/Montserrat-ExtraBold.ttf | Bin 0 -> 344052 bytes
.../static/Montserrat-ExtraBoldItalic.ttf | Bin 0 -> 348532 bytes
.../static/Montserrat-ExtraLight.ttf | Bin 0 -> 330488 bytes
.../static/Montserrat-ExtraLightItalic.ttf | Bin 0 -> 336808 bytes
.../Montserrat/static/Montserrat-Italic.ttf | Bin 0 -> 337132 bytes
.../Montserrat/static/Montserrat-Light.ttf | Bin 0 -> 330888 bytes
.../static/Montserrat-LightItalic.ttf | Bin 0 -> 337208 bytes
.../Montserrat/static/Montserrat-Medium.ttf | Bin 0 -> 330872 bytes
.../static/Montserrat-MediumItalic.ttf | Bin 0 -> 337092 bytes
.../Montserrat/static/Montserrat-Regular.ttf | Bin 0 -> 330948 bytes
.../Montserrat/static/Montserrat-SemiBold.ttf | Bin 0 -> 333988 bytes
.../static/Montserrat-SemiBoldItalic.ttf | Bin 0 -> 339028 bytes
.../Montserrat/static/Montserrat-Thin.ttf | Bin 0 -> 329864 bytes
.../static/Montserrat-ThinItalic.ttf | Bin 0 -> 336148 bytes
.../my-react-app/src/components/Settings.tsx | 6 +-
frontend/my-react-app/src/index.css | 5 +-
.../my-react-app/src/pages/EventsPage.tsx | 11 +-
.../my-react-app/src/pages/MyEventsPage.tsx | 12 +-
33 files changed, 443 insertions(+), 130 deletions(-)
create mode 100644 frontend/my-react-app/src/SignUp.css
create mode 100644 frontend/my-react-app/src/assets/fonts/Montserrat/Montserrat-Italic-VariableFont_wght.ttf
create mode 100644 frontend/my-react-app/src/assets/fonts/Montserrat/Montserrat-VariableFont_wght.ttf
create mode 100644 frontend/my-react-app/src/assets/fonts/Montserrat/OFL.txt
create mode 100644 frontend/my-react-app/src/assets/fonts/Montserrat/README.txt
create mode 100644 frontend/my-react-app/src/assets/fonts/Montserrat/static/Montserrat-Black.ttf
create mode 100644 frontend/my-react-app/src/assets/fonts/Montserrat/static/Montserrat-BlackItalic.ttf
create mode 100644 frontend/my-react-app/src/assets/fonts/Montserrat/static/Montserrat-Bold.ttf
create mode 100644 frontend/my-react-app/src/assets/fonts/Montserrat/static/Montserrat-BoldItalic.ttf
create mode 100644 frontend/my-react-app/src/assets/fonts/Montserrat/static/Montserrat-ExtraBold.ttf
create mode 100644 frontend/my-react-app/src/assets/fonts/Montserrat/static/Montserrat-ExtraBoldItalic.ttf
create mode 100644 frontend/my-react-app/src/assets/fonts/Montserrat/static/Montserrat-ExtraLight.ttf
create mode 100644 frontend/my-react-app/src/assets/fonts/Montserrat/static/Montserrat-ExtraLightItalic.ttf
create mode 100644 frontend/my-react-app/src/assets/fonts/Montserrat/static/Montserrat-Italic.ttf
create mode 100644 frontend/my-react-app/src/assets/fonts/Montserrat/static/Montserrat-Light.ttf
create mode 100644 frontend/my-react-app/src/assets/fonts/Montserrat/static/Montserrat-LightItalic.ttf
create mode 100644 frontend/my-react-app/src/assets/fonts/Montserrat/static/Montserrat-Medium.ttf
create mode 100644 frontend/my-react-app/src/assets/fonts/Montserrat/static/Montserrat-MediumItalic.ttf
create mode 100644 frontend/my-react-app/src/assets/fonts/Montserrat/static/Montserrat-Regular.ttf
create mode 100644 frontend/my-react-app/src/assets/fonts/Montserrat/static/Montserrat-SemiBold.ttf
create mode 100644 frontend/my-react-app/src/assets/fonts/Montserrat/static/Montserrat-SemiBoldItalic.ttf
create mode 100644 frontend/my-react-app/src/assets/fonts/Montserrat/static/Montserrat-Thin.ttf
create mode 100644 frontend/my-react-app/src/assets/fonts/Montserrat/static/Montserrat-ThinItalic.ttf
diff --git a/frontend/my-react-app/package-lock.json b/frontend/my-react-app/package-lock.json
index 7afc0137..31c1b170 100644
--- a/frontend/my-react-app/package-lock.json
+++ b/frontend/my-react-app/package-lock.json
@@ -26,6 +26,7 @@
"@types/react-dom": "^19.2.1",
"@types/react-router-dom": "^5.3.3",
"@vitejs/plugin-react": "^5.0.0",
+ "baseline-browser-mapping": "^2.8.29",
"eslint": "^9.33.0",
"eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-react-refresh": "^0.4.20",
@@ -2268,9 +2269,9 @@
"license": "MIT"
},
"node_modules/baseline-browser-mapping": {
- "version": "2.8.4",
- "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.4.tgz",
- "integrity": "sha512-L+YvJwGAgwJBV1p6ffpSTa2KRc69EeeYGYjRVWKs0GKrK+LON0GC0gV+rKSNtALEDvMDqkvCFq9r1r94/Gjwxw==",
+ "version": "2.8.29",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.29.tgz",
+ "integrity": "sha512-sXdt2elaVnhpDNRDz+1BDx1JQoJRuNk7oVlAlbGiFkLikHCAQiccexF/9e91zVi6RCgqspl04aP+6Cnl9zRLrA==",
"dev": true,
"license": "Apache-2.0",
"bin": {
diff --git a/frontend/my-react-app/package.json b/frontend/my-react-app/package.json
index ebae31ae..b31867b8 100644
--- a/frontend/my-react-app/package.json
+++ b/frontend/my-react-app/package.json
@@ -28,6 +28,7 @@
"@types/react-dom": "^19.2.1",
"@types/react-router-dom": "^5.3.3",
"@vitejs/plugin-react": "^5.0.0",
+ "baseline-browser-mapping": "^2.8.29",
"eslint": "^9.33.0",
"eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-react-refresh": "^0.4.20",
diff --git a/frontend/my-react-app/src/App.css b/frontend/my-react-app/src/App.css
index 88f67968..aeeb7ba7 100644
--- a/frontend/my-react-app/src/App.css
+++ b/frontend/my-react-app/src/App.css
@@ -6,6 +6,32 @@
min-height: 100vh;
}
+
+
+@keyframes titleAnimation {
+ 50% {transform: scale(1.4);
+}
+}
+
+h2.title
+{
+ font-family: 'Montserrat';
+ font-weight: 800;
+ animation-name: titleAnimation;
+ animation-duration: 3s;
+ animation-direction: reverse;
+ animation-iteration-count: infinite;
+ display: inline-block; /* makes it ONLY dynamically move! */
+ transform-origin: center;
+}
+
+h3.smallertitle
+{
+ font-family: 'Montserrat';
+ font-weight: 600;
+ font-style: italic;
+}
+
body {
margin: 0;
padding: 0;
diff --git a/frontend/my-react-app/src/App.tsx b/frontend/my-react-app/src/App.tsx
index 3a0f9c07..1b237702 100644
--- a/frontend/my-react-app/src/App.tsx
+++ b/frontend/my-react-app/src/App.tsx
@@ -2,7 +2,7 @@
import {Routes, Route, useNavigate, Outlet, Navigate} from 'react-router-dom';
import { useAuth } from './contexts/AuthContext';
import { Toolbar, Box, Typography } from "@mui/material";
-//import '@fontsource-variable/cabin';
+
import './App.css';
import SignUp from './SignUp';
import Login from './Login';
@@ -51,28 +51,52 @@ function Home() {
- Linkt
- Welcome to our comprehensive campus Events & Ticketing service, designed to streamline event management and boost student engagement for students!
+ Linkt
+
+
+ Welcome to our comprehensive campus Events & Ticketing service, designed to streamline event management and boost student engagement for students!
We allow students to easily discover and search for events using comprehensive filters, save them to their personal calendar, and claim digital, QR-coded
tickets (free or mock paid) for check-in! If you are an organizer, then you are welcome too! Organizers benefit from the ability to create, manage,
and track attendance for their events. They can also gain valuable insights for their events via our analytics dashboards. We are also welcoming
campus administrators, who can oversee organizations and moderate all content. Linkt is our brand-new system that connects students with campus life
while providing essential tools for hosting and administrating events!
- {user?.userType == 'organizer' && ( )}
- {user?.userType == 'organizer' && ( )}
-
- {user?.userType == 'organizer' && (
-
- Hey! We noticed that you're an organizer! Feel free to add your event to our page!
- )}
-
- {user?.userType == 'organizer' && (
- )}
+
+ Ready To Interact?
+ {user?.userType == 'organizer' && (
+
+ Hey! We noticed that you're an organizer! Feel free to add your event to our page!
+ )}
+
+ {user?.userType == 'organizer' && (
+ )}
+ {user?.userType == 'organizer' && ( )}
+ {user?.userType == 'organizer' && ( )}
+
+
+
+
+
+
+
+
+
+
+
@@ -86,7 +110,7 @@ function Home() {
*/}
- Top Events
+ Top Events Backend for this hasn't been implemented yet! Frosh Night
@@ -103,33 +127,6 @@ function Home() {
-
-
- Ready To Interact?
- {/*
-
-