import { notFound } from "next/navigation"; import Link from "next/link"; import Image from "next/image"; import { ArrowLeft, ArrowRight, ExternalLink } from "lucide-react"; import { projects, getProjectBySlug } from "@/data/projects"; export function generateStaticParams() { return projects.map((project) => ({ slug: project.slug, })); } export async function generateMetadata({ params, }: { params: Promise<{ slug: string }>; }) { const { slug } = await params; const project = getProjectBySlug(slug); if (!project) return { title: "Project Not Found" }; return { title: `${project.client} | Zachary Gaetano`, description: project.summary, openGraph: { title: `${project.client} | Zachary Gaetano`, description: project.summary, images: [{ url: project.thumbnail }], }, }; } export default async function ProjectPage({ params, }: { params: Promise<{ slug: string }>; }) { const { slug } = await params; const project = getProjectBySlug(slug); if (!project) { notFound(); } // Find previous and next projects for navigation const currentIndex = projects.findIndex((p) => p.slug === project.slug); const prevProject = currentIndex > 0 ? projects[currentIndex - 1] : null; const nextProject = currentIndex < projects.length - 1 ? projects[currentIndex + 1] : null; return (
{/* Header bar */} {/* Hero area */}
{project.category} {project.year}

{project.client}

{project.summary}

{/* Project image */}
{project.title}
{/* Content */}
{/* Main content */}

Overview

{project.description.map((paragraph: string, i: number) => (

{paragraph}

))}
{/* Highlights */}

Key Highlights

    {project.highlights.map((highlight: string, i: number) => (
  • {highlight}
  • ))}
{/* CTA */}

Interested in a similar project?

I bring the same engineering discipline and attention to detail to every facility I design. Let's discuss how I can help with your project.

Get in Touch
{/* Sidebar */}

Client

{project.client}

Year

{project.year}

Scope of Work

{project.scope.map((item: string) => ( {item} ))}

Technologies

{project.technologies.map((tech: string) => ( {tech} ))}
{/* Quick nav to other projects */}

Other Projects

{projects .filter((p) => p.slug !== project.slug) .slice(0, 4) .map((p) => ( {p.client} ))}
{/* Prev / Next navigation */}
{prevProject ? (

Previous

{prevProject.client}

) : (
)} {nextProject ? (

Next

{nextProject.client}

) : (
)}
{/* Footer */}
); }