Files
tm-landing/app/(home)/page.tsx
T
AmirReza Jamali a78726303a refactor(seo): Improve page metadata and HTML semantics
This commit updates the page metadata (title and description) from the default Next.js placeholders to be descriptive of the Opp lens application, improving SEO.

Additionally, it refactors the HTML structure for better semantics and accessibility:
- Replaced generic `div` and fragment tags with appropriate semantic elements like `main`, `article`, `li`, and `small`.
- Corrected the heading hierarchy for better document structure.
- Fixed image source paths by making them absolute to prevent broken images.
2025-10-26 10:38:46 +03:30

101 lines
3.6 KiB
TypeScript

import { Metadata } from "next";
import Image from "next/image";
export const metadata: Metadata = {
title: "Opp lens - AI-Powered Tender Management for SMEs | Win More Tenders",
description:
"Automated tender management platform for SMEs. Find tailored tenders, automate document handling, and get real-time alerts. Win more opportunities with less effort.",
keywords:
"tender management, AI tender search, SME tenders, public procurement, automated bidding, tender alerts",
authors: [{ name: "PBL Partners AB" }],
openGraph: {
title: "Opp lens - AI-Powered Tender Management",
description: "Win more tenders automatically with our AI-powered platform",
type: "website",
locale: "en_US",
siteName: "Opp lens",
},
icons: {
icon: "/fav-icon.svg",
},
};
export default function Home() {
const advItems = [
{
title: "user",
amount: 200,
description:
"lacking the time, dedicated staff, and expertise to constantly monitor the market and prepare high-quality bids.",
},
{
title: "contract",
amount: 520,
description:
"Navigating complex requirements and processes designed for large corporations with dedicated tender departments.",
},
{
title: "tenders",
amount: 1500,
description:
"Did you know 68% of SMEs in Sweden rarely or never win public tenders? It's time to change that.",
},
];
return (
<main>
<section className="md:flex md:flex-row justify-around items-center">
<div className=" md:ml-28 w-full md:w-1/2 flex flex-col gap-10">
<h1 className="font-black text-8xl text-[#013280]">AI-Powered</h1>
<h2 className="font-black text-(--primary) text-5xl leading-14">
Tender
<br />
Management
</h2>
<div className="flex flex-col gap-6 ">
<h3 className="font-black text-3xl text-[#222]">
Win more tenders, automatically!
</h3>
<p className="font-normal text-[#777]">
Our platform finds tenders tailored to your business, automates
document handling, and sends real-time alerts. Win more
opportunities with less effort and zero manual search.
</p>
</div>
</div>
<div className="m-auto mt-5 w-xs -z-20 relative flex justify-center h-[650px] md:h-[750px] md:w-auto">
<Image
src={"/dynamic-island.svg"}
alt="dynamic island"
width={75}
height={22}
className="absolute top-4 left-1/2 -translate-x-1/2"
/>
<Image
className="-z-10 border-8 border-black rounded-4xl overflow-hidden h-full w-full"
src="/mobile.gif"
width={300}
height={920}
loading="lazy"
alt="phone"
/>
</div>
</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 md:p-14 -mt-16 z-20 md:ml-28">
<div className="md:flex gap-5 text-center">
{advItems.map((item) => (
<article
key={item.title}
className="flex flex-col gap-4">
<p className="font-black text-[90px]">{item.amount}</p>
<h3 className="font-semibold text-3xl capitalize text-[#99dde5]">
{item.title}
</h3>
<p className="font-normal text-[16px]">{item.description}</p>
</article>
))}
</div>
</section>
</main>
);
}