NicholaiVogel 633ef418d1 feat: implement complete Biohazard VFX website with all pages and components
- Add all shadcn/ui components (button, card, form, dialog, navigation-menu, etc.)
- Create main layout with navigation header and footer
- Implement homepage with hero, showreel, featured projects, and capabilities
- Build about page with studio origins, values, and capabilities
- Create services page with detailed service offerings
- Implement portfolio page with masonry grid for varying aspect ratios
- Build contact page with 4-step multistep form
- Add project and service data structures with placeholder content
- Configure SEO metadata, canonical links, and JSON-LD schema
- Add font preloading and image lazy-loading for performance
- Configure Next.js Image for Unsplash remote patterns
- Fix Navigation component to use modern Link pattern (remove legacyBehavior)
- Add comprehensive README with project documentation
2025-10-12 03:47:12 -06:00

79 lines
2.3 KiB
TypeScript

import type { Metadata } from "next";
import { Geist, Geist_Mono } from "next/font/google";
import "./globals.css";
import { Navigation } from "@/components/Navigation";
import { Footer } from "@/components/Footer";
const geistSans = Geist({
variable: "--font-geist-sans",
subsets: ["latin"],
display: "swap",
preload: true,
});
const geistMono = Geist_Mono({
variable: "--font-geist-mono",
subsets: ["latin"],
display: "swap",
preload: true,
});
export const metadata: Metadata = {
title: "Biohazard VFX - Professional Visual Effects Studio",
description: "Creating stunning visual effects for film, television, and digital media. Expert VFX, motion graphics, compositing, and 3D animation services.",
metadataBase: new URL("https://biohazardvfx.com"),
alternates: {
canonical: "/",
},
openGraph: {
title: "Biohazard VFX - Professional Visual Effects Studio",
description: "Creating stunning visual effects for film, television, and digital media.",
type: "website",
locale: "en_US",
siteName: "Biohazard VFX",
},
twitter: {
card: "summary_large_image",
title: "Biohazard VFX - Professional Visual Effects Studio",
description: "Creating stunning visual effects for film, television, and digital media.",
},
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
const jsonLd = {
"@context": "https://schema.org",
"@type": "Organization",
name: "Biohazard VFX",
description: "Professional visual effects studio specializing in film, television, and digital media",
url: "https://biohazardvfx.com",
logo: "https://biohazardvfx.com/logo.png",
sameAs: [],
};
return (
<html lang="en">
<head>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossOrigin="anonymous" />
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
/>
</head>
<body
className={`${geistSans.variable} ${geistMono.variable} antialiased`}
>
<Navigation />
<main className="min-h-screen">
{children}
</main>
<Footer />
</body>
</html>
);
}