From 3cb3585d989f437f154d79bcd0a048c8d825bd77 Mon Sep 17 00:00:00 2001 From: Jake Date: Sat, 13 Sep 2025 15:25:44 +0200 Subject: [PATCH 1/2] Event / Project consistency --- src/app/{event => events}/[slug]/page.tsx | 0 src/app/projects/[slug]/page.tsx | 170 ++++++++++++---------- src/app/sitemap.ts | 2 +- src/components/Events/EventCard.tsx | 2 +- src/components/StructuredData.tsx | 2 +- 5 files changed, 100 insertions(+), 76 deletions(-) rename src/app/{event => events}/[slug]/page.tsx (100%) diff --git a/src/app/event/[slug]/page.tsx b/src/app/events/[slug]/page.tsx similarity index 100% rename from src/app/event/[slug]/page.tsx rename to src/app/events/[slug]/page.tsx diff --git a/src/app/projects/[slug]/page.tsx b/src/app/projects/[slug]/page.tsx index d4079dd..74b0a65 100644 --- a/src/app/projects/[slug]/page.tsx +++ b/src/app/projects/[slug]/page.tsx @@ -1,8 +1,8 @@ import { supabase } from '@/lib/supabaseClient'; -import Link from 'next/link'; import Image from 'next/image'; import { routes } from '@/lib/routes'; import { ProjectAnalytics } from '@/components/ProjectAnalytics'; +import { Hero } from '@/components/Hero'; const DUMMY_IMAGE = 'https://images.unsplash.com/photo-1506744038136-46273834b3fb?auto=format&fit=crop&w=900&q=80'; @@ -15,8 +15,23 @@ export default async function ProjectDetailPage({ params }: { params: Promise<{ .eq('slug', slug) .single(); - if (error || !project) { - return
Project not found.
; + if (error) { + console.error(error); + return ( +
+ Failed to load project +
+ {error?.message || "Error fetching project"} +
+ ); + } + + if (!project) { + return ( +
+ Project Not Found +
+ ); } const { data: category } = await supabase @@ -32,87 +47,96 @@ export default async function ProjectDetailPage({ params }: { params: Promise<{ categoryName={category?.name || 'N/A'} projectSlug={slug} /> -
- {/* hero section */} -
-

{project.name}

- - Back to all Projects - -
-
- {/* main image */} -
- {project.name} -
-
- {/* description */} -
-
-

The Problem

-

{project.problem}

-
-
-

Tech4R's Solution

-

{project.solution}

-
-
-

Outcome

-

{project.outcome}

-
+ +
+
+ {/* main image */} +
+ {project.name} +
+
+
+

+ {project.name} +

+
+
+

The Problem

+

{project.problem}

+
+
+

Tech4R's Solution

+

{project.solution}

+
+
+

Outcome

+

{project.outcome}

+
+
- {/* sub information */} - +
-
-
+ ); } \ No newline at end of file diff --git a/src/app/sitemap.ts b/src/app/sitemap.ts index b09488c..ee9cbc0 100644 --- a/src/app/sitemap.ts +++ b/src/app/sitemap.ts @@ -88,7 +88,7 @@ export default async function sitemap(): Promise { if (events) { eventPages = events.map((event) => ({ - url: `${baseUrl}/event/${event.slug}`, + url: `${baseUrl}/events/${event.slug}`, lastModified: new Date(event.date), changeFrequency: 'monthly' as const, priority: 0.5, diff --git a/src/components/Events/EventCard.tsx b/src/components/Events/EventCard.tsx index ee32115..f152f20 100644 --- a/src/components/Events/EventCard.tsx +++ b/src/components/Events/EventCard.tsx @@ -5,7 +5,7 @@ const EventCard = ({ event }: { event: Event }) => { const { name, description, date } = event; return (
- +

{new Date(date).toLocaleDateString("en-US", { diff --git a/src/components/StructuredData.tsx b/src/components/StructuredData.tsx index 721e1b3..0bd5ba4 100644 --- a/src/components/StructuredData.tsx +++ b/src/components/StructuredData.tsx @@ -80,7 +80,7 @@ export function StructuredData({ type, data }: StructuredDataProps) { }, eventStatus: 'https://schema.org/EventScheduled', eventAttendanceMode: 'https://schema.org/OfflineEventAttendanceMode', - url: `${baseUrl}/event/${eventData.slug}`, + url: `${baseUrl}/events/${eventData.slug}`, ...(eventData.event_categories && { category: eventData.event_categories.name, }), From 85c085b2a73bd77517ba71929365c83fc111e112 Mon Sep 17 00:00:00 2001 From: Jake Date: Sat, 13 Sep 2025 15:28:38 +0200 Subject: [PATCH 2/2] Update toLocaleDateString usage --- src/app/events/[slug]/page.tsx | 2 +- src/app/projects/[slug]/page.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/events/[slug]/page.tsx b/src/app/events/[slug]/page.tsx index 0dff7a4..7eeab97 100644 --- a/src/app/events/[slug]/page.tsx +++ b/src/app/events/[slug]/page.tsx @@ -84,7 +84,7 @@ export default async function EventPage({ Date

- {new Date(event.date).toLocaleDateString("en-US", { + {new Date(event.date).toLocaleDateString(navigator.language, { day: "numeric", month: "long", year: "numeric", diff --git a/src/app/projects/[slug]/page.tsx b/src/app/projects/[slug]/page.tsx index 74b0a65..08260c1 100644 --- a/src/app/projects/[slug]/page.tsx +++ b/src/app/projects/[slug]/page.tsx @@ -113,7 +113,7 @@ export default async function ProjectDetailPage({ params }: { params: Promise<{ Date Completed

- {new Date(project.completion_date).toLocaleDateString('en-US', { + {new Date(project.completion_date).toLocaleDateString(navigator.language, { day: 'numeric', month: 'long', year: 'numeric'