import type { Metadata } from "next"; import Link from "next/link"; import { notFound } from "next/navigation"; import { IconArrowNarrowLeft, IconExternalLink } from "@tabler/icons-react"; import Hero from "@/components/content/Hero"; import SectionLabel from "@/components/layout/SectionLabel"; import { colors, projects } from "@/constants"; import ProjectCarousel from "@/components/content/ProjectCarousel"; export function generateStaticParams() { return projects.map((project) => ({ slug: project.slug })); } export async function generateMetadata({ params, }: { params: Promise<{ slug: string }>; }): Promise { const { slug } = await params; const project = projects.find((p) => p.slug === slug); if (!project) return { title: "Project — Angel Mankel" }; return { title: `${project.title} — Angel Mankel`, description: project.description, }; } export default async function ProjectPage({ params, }: { params: Promise<{ slug: string }>; }) { const { slug } = await params; const project = projects.find((p) => p.slug === slug); if (!project) notFound(); return (
All projects

{project.year} — {project.stack.join(" · ")}

Open live app
{/* Screenshots */} {project.screenshots.length > 0 && ( )} {/* Overview */}
{project.overview[0]}
{/* Problem Solved */}
{project.overview[1]}
{/* What I learned */}
    {project.learned.map((item) => (
  • {item}
  • ))}
{/* What I'd do differently */}
    {project.improvements.map((item) => (
  • {item}
  • ))}
); }