Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions app/(app)/company/[slug]/config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
export const companies = [
{
slug: "ninedots",
name: "Ninedots",
bio: "Trusted talent partner based in Dublin and Bahrain. We specialise in everything within the tech ecosystem, including marketing and tech sales. However, if we can’t assist, we won’t tell you we can. What we CAN do is steer you in the right direction - we believe it doesn’t cost to be helpful!",
note: "We’re incredibly grateful to Ninedots for supporting our tech community since April! Your generosity has helped us grow, bring people together, and create amazing learning opportunities through events, workshops, and networking sessions. Your support means the world to us, and we couldn’t do this without you.Thanks for believing in our mission and being a part of our journey—we’re excited for what’s ahead!",
image: "/images/sponsors/ninedots.png",
url: "https://ninedots.io",
},
];
76 changes: 76 additions & 0 deletions app/(app)/company/[slug]/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
import { notFound } from "next/navigation";
import { companies } from "./config";

export const metadata = {
title: "Ninedots Recruitment | Codu",
description:
"Explore our community sponsors. Ninedots Recruitment connects top talent with leading companies in the tech industry.",
};
Comment on lines +4 to +8
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Make metadata dynamic based on company slug

The metadata is currently hardcoded for Ninedots, but this is a dynamic page that could support multiple companies. Consider making the metadata dynamic based on the company found by the slug.

-export const metadata = {
-  title: "Ninedots Recruitment | Codu",
-  description:
-    "Explore our community sponsors. Ninedots Recruitment connects top talent with leading companies in the tech industry.",
-};

+export async function generateMetadata({ params }: Props) {
+  const { slug } = params;
+  const company = companies.find((item) => item.slug === slug.toLowerCase());
+  
+  if (!company) return {};
+  
+  return {
+    title: `${company.name} | Codu`,
+    description: `Explore our community sponsors. ${company.name} ${company.bio.substring(0, 100)}...`,
+  };
+}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
export const metadata = {
title: "Ninedots Recruitment | Codu",
description:
"Explore our community sponsors. Ninedots Recruitment connects top talent with leading companies in the tech industry.",
};
export async function generateMetadata({ params }: Props) {
const { slug } = params;
const company = companies.find((item) => item.slug === slug.toLowerCase());
if (!company) return {};
return {
title: `${company.name} | Codu`,
description: `Explore our community sponsors. ${company.name} ${company.bio.substring(0, 100)}...`,
};
}


type Props = { params: { slug: string } };

export default async function Page({ params }: Props) {
const { slug } = params;

const company = companies.find((item) => item.slug === slug.toLowerCase());

if (!company) return notFound();

return (
<div className="mx-auto w-full max-w-4xl px-4 py-8 sm:px-6 lg:px-8">
<div className="overflow-hidden rounded-lg bg-white shadow dark:bg-neutral-800">
{/* Sponsor Header */}
<div className="border-b border-neutral-200 p-6 dark:border-neutral-700">
<div className="flex flex-col items-center gap-6 sm:flex-row">
<div className="flex h-24 w-24 flex-shrink-0 items-center justify-center rounded-md bg-neutral-700 p-2">
<img
src={company.image}
alt={`${company.name} logo`}
className="max-h-full max-w-full object-contain"
/>
</div>

<div className="flex-1 text-center sm:text-left">
<h1 className="text-2xl font-bold text-neutral-900 dark:text-white">
{company.name}
</h1>
<p className="mt-2 text-neutral-600 dark:text-neutral-300">
{company.bio}
</p>

{company.url && (
<a
href={company.url}
className="mt-4 inline-flex items-center text-sm font-medium text-pink-600 hover:text-pink-500 dark:text-pink-600 dark:hover:text-pink-500"
target="_blank"
rel="noopener noreferrer"
>
Visit website
<svg
className="ml-1 h-4 w-4"
fill="currentColor"
viewBox="0 0 20 20"
>
<path
fillRule="evenodd"
d="M10.293 5.293a1 1 0 011.414 0l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414-1.414L12.586 11H5a1 1 0 110-2h7.586l-2.293-2.293a1 1 0 010-1.414z"
clipRule="evenodd"
/>
</svg>
</a>
)}
</div>
</div>
</div>
<div className="border-neutral-200 bg-neutral-100 p-4 dark:border-neutral-700 dark:bg-neutral-800">
<a
href="/sponsorship"
className="text-sm font-medium text-neutral-500 hover:text-neutral-700 dark:text-neutral-400 dark:hover:text-neutral-300"
>
← Back to all sponsors
</a>
</div>
</div>
</div>
);
}
14 changes: 9 additions & 5 deletions app/(app)/sponsorship/page.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import Link from "next/link";

export const metadata = {
title: "Sponsor Codú - And Reach More Developers!",
description:
Expand Down Expand Up @@ -60,11 +62,13 @@ const Sponsorship = () => {
<div className="mt-8 flow-root lg:mt-10">
<div className="-ml-8 -mt-4 flex flex-wrap justify-between lg:-ml-4">
<div className="ml-8 mt-4 flex flex-shrink-0 flex-grow lg:ml-4 lg:flex-grow-0">
<img
className="my-auto h-16"
src="/images/sponsors/harveynash.png"
alt="StaticKit"
/>
<Link href="/company/ninedots">
<img
className="my-auto h-16"
src="/images/sponsors/ninedots.png"
alt="StaticKit"
/>
</Link>
</div>
<div className="ml-8 mt-4 flex flex-shrink-0 flex-grow lg:ml-4 lg:flex-grow-0">
<img
Expand Down
Binary file added public/images/sponsors/ninedots.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading