diff --git a/src/app/events/[eventID]/page.tsx b/src/app/events/[eventID]/page.tsx
new file mode 100644
index 0000000..4248d7a
--- /dev/null
+++ b/src/app/events/[eventID]/page.tsx
@@ -0,0 +1,175 @@
+'use client';
+
+import React from 'react';
+import { usePathname } from 'next/navigation';
+import Logo from '@/components/misc/logo';
+import { ThemePicker } from '@/components/misc/theme-picker';
+import { Card, CardContent, CardHeader } from '@/components/ui/card';
+import { Label } from '@/components/ui/label';
+import { useGetApiEventEventID } from '@/generated/api/event/event';
+import { useGetApiUserMe } from '@/generated/api/user/user';
+import { RedirectButton } from '@/components/buttons/redirect-button';
+import { useSession } from 'next-auth/react';
+import ParticipantListEntry from '@/components/custom-ui/participant-list-entry';
+
+export default function ShowEvent() {
+ const session = useSession();
+ const pathname = usePathname();
+
+ // Extract eventId from URL like /events/[eventId]
+ const eventId = pathname.split('/').pop() || '';
+
+ // Fetch event data
+ const { data: eventData, isLoading, error } = useGetApiEventEventID(eventId);
+ const { data: userData, isLoading: userLoading } = useGetApiUserMe();
+
+ if (isLoading || userLoading) {
+ return (
+
+ Loading...
+
+ );
+ }
+ if (error || !eventData?.data?.event) {
+ return (
+
+ Error loading event.
+
+ );
+ }
+
+ const event = eventData.data.event;
+ const organiserName = userData?.data.user?.name || 'Unknown User';
+
+ // Format dates & times for display
+ const formatDate = (isoString?: string) => {
+ if (!isoString) return '-';
+ return new Date(isoString).toLocaleDateString();
+ };
+ const formatTime = (isoString?: string) => {
+ if (!isoString) return '-';
+ return new Date(isoString).toLocaleTimeString([], {
+ hour: '2-digit',
+ minute: '2-digit',
+ });
+ };
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {event.title || 'Untitled Event'}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{' '}
+
+ {event.participants?.map((user) => (
+
+ ))}
+
+
+
+
+
+
+ {session.data?.user?.id === event.organizer.id ? (
+
+ ) : null}
+
+
+
+
+
+
+
+ );
+}