feat(metadata): Update page metadata and enhance video presentation
- Set metadataBase for consistent URL structure across pages - Add Open Graph and Twitter metadata for improved social sharing - Implement canonical links and robots directives for SEO optimization - Replace static image with video previews for a more dynamic user experience
This commit is contained in:
@@ -19,9 +19,17 @@ const geistMono = Geist_Mono({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
|
metadataBase: new URL("https://opplens.com"),
|
||||||
title: "Opp lens - AI-Powered Tender Management",
|
title: "Opp lens - AI-Powered Tender Management",
|
||||||
description:
|
description:
|
||||||
"Democratizing Tender Access for SMEs with AI-Powered Tender Management.",
|
"Democratizing Tender Access for SMEs with AI-Powered Tender Management.",
|
||||||
|
alternates: {
|
||||||
|
canonical: "/",
|
||||||
|
},
|
||||||
|
robots: {
|
||||||
|
index: true,
|
||||||
|
follow: true,
|
||||||
|
},
|
||||||
icons: {
|
icons: {
|
||||||
icon: "/fav-icon.svg",
|
icon: "/fav-icon.svg",
|
||||||
},
|
},
|
||||||
@@ -151,7 +159,6 @@ export default async function RootLayout({
|
|||||||
alt="Opp lens logo"
|
alt="Opp lens logo"
|
||||||
width={180}
|
width={180}
|
||||||
height={30}
|
height={30}
|
||||||
priority
|
|
||||||
/>
|
/>
|
||||||
<div>
|
<div>
|
||||||
<p className="text-black my-2">
|
<p className="text-black my-2">
|
||||||
|
|||||||
+39
-5
@@ -11,10 +11,24 @@ export const metadata: Metadata = {
|
|||||||
openGraph: {
|
openGraph: {
|
||||||
title: "Opp lens - AI-Powered Tender Management",
|
title: "Opp lens - AI-Powered Tender Management",
|
||||||
description: "Win more tenders automatically with our AI-powered platform",
|
description: "Win more tenders automatically with our AI-powered platform",
|
||||||
|
url: "https://opplens.com/",
|
||||||
type: "website",
|
type: "website",
|
||||||
locale: "en_US",
|
locale: "en_US",
|
||||||
siteName: "Opp lens",
|
siteName: "Opp lens",
|
||||||
},
|
},
|
||||||
|
twitter: {
|
||||||
|
card: "summary_large_image",
|
||||||
|
title: "Opp lens - AI-Powered Tender Management",
|
||||||
|
description: "Win more tenders automatically with our AI-powered platform",
|
||||||
|
images: ["/images/opp-lens-mobile.jpg"],
|
||||||
|
},
|
||||||
|
alternates: {
|
||||||
|
canonical: "https://opplens.com/",
|
||||||
|
},
|
||||||
|
robots: {
|
||||||
|
index: true,
|
||||||
|
follow: true,
|
||||||
|
},
|
||||||
icons: {
|
icons: {
|
||||||
icon: "/fav-icon.svg",
|
icon: "/fav-icon.svg",
|
||||||
},
|
},
|
||||||
@@ -60,7 +74,7 @@ export default function Home() {
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="mx-12 md:mx-52 lg:mx-28 -z-20 relative flex justify-center h-[650px] lg:h-[505px]">
|
<div className="mx-12 md:mx-52 lg:mx-28 -z-20 relative flex justify-center h-[650px] lg:h-[510px]">
|
||||||
<span className="opacity-0 lg:opacity-100">
|
<span className="opacity-0 lg:opacity-100">
|
||||||
<Image
|
<Image
|
||||||
src={"/dynamic-island.svg"}
|
src={"/dynamic-island.svg"}
|
||||||
@@ -79,14 +93,34 @@ export default function Home() {
|
|||||||
className="absolute top-4 left-1/2 -translate-x-1/2"
|
className="absolute top-4 left-1/2 -translate-x-1/2"
|
||||||
/>
|
/>
|
||||||
</span>
|
</span>
|
||||||
<Image
|
{/* <Image
|
||||||
className="-z-10 border-8 border-black rounded-4xl overflow-hidden h-full w-full"
|
className="-z-10 border-8 border-black rounded-4xl overflow-hidden h-full w-full"
|
||||||
src="/mobile.gif"
|
src="/mobile.gif"
|
||||||
width={300}
|
width={300}
|
||||||
height={920}
|
height={920}
|
||||||
loading="lazy"
|
sizes="(max-width: 1024px) 60vw, 300px"
|
||||||
alt="phone"
|
priority
|
||||||
/>
|
alt="Opp lens application preview on a mobile phone"
|
||||||
|
/> */}
|
||||||
|
<div className="-z-10 border-8 border-black rounded-4xl overflow-hidden h-full w-full">
|
||||||
|
<video
|
||||||
|
className="max-h-full w-full object-cover"
|
||||||
|
autoPlay
|
||||||
|
loop
|
||||||
|
muted
|
||||||
|
playsInline
|
||||||
|
preload="auto"
|
||||||
|
aria-label="Opp lens application preview on a mobile phone">
|
||||||
|
<source
|
||||||
|
src="/mobile.webm"
|
||||||
|
type="video/webm"
|
||||||
|
/>
|
||||||
|
<source
|
||||||
|
src="/mobile.mp4"
|
||||||
|
type="video/mp4"
|
||||||
|
/>
|
||||||
|
</video>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<section className="flex flex-col gap-6 bg-gradient-to-b from-[#011132] to-[#012B80] text-white rounded-[56px] relative py-13 px-14 -mt-36 z-20 md:grid lg:grid-cols-3 lg:flex-row">
|
<section className="flex flex-col gap-6 bg-gradient-to-b from-[#011132] to-[#012B80] text-white rounded-[56px] relative py-13 px-14 -mt-36 z-20 md:grid lg:grid-cols-3 lg:flex-row">
|
||||||
|
|||||||
@@ -81,14 +81,33 @@ export default async function Home({ params }: IProps) {
|
|||||||
height={22}
|
height={22}
|
||||||
className="absolute top-4 left-1/2 -translate-x-1/2"
|
className="absolute top-4 left-1/2 -translate-x-1/2"
|
||||||
/>
|
/>
|
||||||
<Image
|
<div className="-z-10 border-8 border-black rounded-4xl overflow-hidden h-full w-full">
|
||||||
|
<video
|
||||||
|
className="max-h-full w-full object-cover"
|
||||||
|
autoPlay
|
||||||
|
loop
|
||||||
|
muted
|
||||||
|
playsInline
|
||||||
|
preload="auto"
|
||||||
|
aria-label="Opp lens application preview on a mobile phone">
|
||||||
|
<source
|
||||||
|
src="/mobile.webm"
|
||||||
|
type="video/webm"
|
||||||
|
/>
|
||||||
|
<source
|
||||||
|
src="/mobile.mp4"
|
||||||
|
type="video/mp4"
|
||||||
|
/>
|
||||||
|
</video>
|
||||||
|
</div>
|
||||||
|
{/* <Image
|
||||||
className="-z-10 border-8 border-black rounded-4xl overflow-hidden h-full w-full"
|
className="-z-10 border-8 border-black rounded-4xl overflow-hidden h-full w-full"
|
||||||
src="/mobile.gif"
|
src="/mobile.gif"
|
||||||
width={300}
|
width={300}
|
||||||
height={920}
|
height={920}
|
||||||
loading="lazy"
|
loading="lazy"
|
||||||
alt="phone"
|
alt="phone"
|
||||||
/>
|
/> */}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<section className="text-left flex flex-col gap-6 bg-gradient-to-b from-[#011132] to-[#012B80] text-white rounded-[56px] relative p-6 lg:p-14 -mt-16 z-20 lg:ml-28 ">
|
<section className="text-left flex flex-col gap-6 bg-gradient-to-b from-[#011132] to-[#012B80] text-white rounded-[56px] relative p-6 lg:p-14 -mt-16 z-20 lg:ml-28 ">
|
||||||
|
|||||||
+21
-2
@@ -157,14 +157,33 @@ export default function Home() {
|
|||||||
height={22}
|
height={22}
|
||||||
className="absolute top-4 left-1/2 -translate-x-1/2"
|
className="absolute top-4 left-1/2 -translate-x-1/2"
|
||||||
/>
|
/>
|
||||||
<Image
|
<div className="-z-10 border-8 border-black rounded-4xl overflow-hidden h-full w-full">
|
||||||
|
<video
|
||||||
|
className="max-h-full w-full object-cover"
|
||||||
|
autoPlay
|
||||||
|
loop
|
||||||
|
muted
|
||||||
|
playsInline
|
||||||
|
preload="auto"
|
||||||
|
aria-label="Opp lens application preview on a mobile phone">
|
||||||
|
<source
|
||||||
|
src="/mobile.webm"
|
||||||
|
type="video/webm"
|
||||||
|
/>
|
||||||
|
<source
|
||||||
|
src="/mobile.mp4"
|
||||||
|
type="video/mp4"
|
||||||
|
/>
|
||||||
|
</video>
|
||||||
|
</div>
|
||||||
|
{/* <Image
|
||||||
className="-z-10 border-8 border-black rounded-4xl overflow-hidden h-full w-full"
|
className="-z-10 border-8 border-black rounded-4xl overflow-hidden h-full w-full"
|
||||||
src="/mobile.gif"
|
src="/mobile.gif"
|
||||||
width={300}
|
width={300}
|
||||||
height={920}
|
height={920}
|
||||||
loading="lazy"
|
loading="lazy"
|
||||||
alt="phone"
|
alt="phone"
|
||||||
/>
|
/> */}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user