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
31 changes: 31 additions & 0 deletions app/(app)/speakers/_client.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import { SpeakerForm } from "@/components/Speaker/SpeakerForm";

export function SpeakersClient() {
return (
<div className="bg-black">
<div className="mx-auto max-w-3xl px-4 py-16 sm:px-6 sm:py-24 lg:px-8">
<header className="mb-10">
<p className="mb-4 inline-block rounded-full bg-gradient-to-r from-orange-400/20 to-pink-600/20 px-3 py-1 text-xs font-semibold uppercase tracking-wide text-orange-300">
Speak at Codú
</p>
<h1 className="text-3xl font-extrabold tracking-tight text-white sm:text-4xl">
Pitch a talk at a Codú meetup
</h1>
<p className="mt-4 text-lg leading-relaxed text-neutral-300">
Codú runs regular meetups across Ireland and we&apos;re always
looking for speakers. Whether it&apos;s your first talk or your
fiftieth, we&apos;d love to hear your pitch. Propose a talk (or up
to three) and we&apos;ll be in touch.
</p>
</header>

<SpeakerForm />

<p className="mt-6 text-center text-sm text-neutral-400">
Takes about 3 minutes. First-time speakers welcome — we&apos;ll help
you prep.
</p>
</div>
</div>
);
}
37 changes: 37 additions & 0 deletions app/(app)/speakers/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import type { Metadata } from "next";
import { SpeakersClient } from "./_client";

const PAGE_URL = "https://www.codu.co/speakers";
const PAGE_TITLE = "Speak at Codú — Pitch a Talk for Our Meetups";
const PAGE_DESCRIPTION =
"Pitch a talk at a Codú meetup. First-time speakers welcome. We run regular developer meetups across Ireland and are always looking for people to share what they've built, learned, or broken.";

export const metadata: Metadata = {
title: PAGE_TITLE,
description: PAGE_DESCRIPTION,
keywords: [
"Codú speaker",
"tech meetup speaker Ireland",
"developer meetup Dublin",
"first time speaker",
"web development talk",
"speak at meetup Ireland",
],
alternates: { canonical: PAGE_URL },
robots: { index: true, follow: true },
openGraph: {
title: "Speak at Codú",
description: PAGE_DESCRIPTION,
url: PAGE_URL,
type: "website",
},
twitter: {
card: "summary_large_image",
title: "Speak at Codú",
description: PAGE_DESCRIPTION,
},
};

export default function SpeakersPage() {
return <SpeakersClient />;
}
31 changes: 31 additions & 0 deletions app/(app)/volunteer/_client.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import { VolunteerForm } from "@/components/Volunteer/VolunteerForm";

export function VolunteerClient() {
return (
<div className="bg-black">
<div className="mx-auto max-w-3xl px-4 py-16 sm:px-6 sm:py-24 lg:px-8">
<header className="mb-10">
<p className="mb-4 inline-block rounded-full bg-gradient-to-r from-orange-400/20 to-pink-600/20 px-3 py-1 text-xs font-semibold uppercase tracking-wide text-orange-300">
Volunteer with Codú
</p>
<h1 className="text-3xl font-extrabold tracking-tight text-white sm:text-4xl">
Help us build Ireland&apos;s largest web dev community
</h1>
<p className="mt-4 text-lg leading-relaxed text-neutral-300">
Codú is Ireland&apos;s largest web dev community — thousands of
developers, regular meetups, and a newsletter across the Irish tech
ecosystem. We&apos;re opening volunteer spots for people interested
in marketing and events.
</p>
</header>

<VolunteerForm />

<p className="mt-6 text-center text-sm text-neutral-400">
Takes about 3 minutes. We read every application and reply within 2
weeks.
</p>
</div>
</div>
);
}
39 changes: 39 additions & 0 deletions app/(app)/volunteer/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import type { Metadata } from "next";
Comment thread
coderabbitai[bot] marked this conversation as resolved.
import { VolunteerClient } from "./_client";

const PAGE_URL = "https://www.codu.co/volunteer";
const PAGE_TITLE =
"Volunteer with Codú — Help Build Ireland's Largest Dev Community";
const PAGE_DESCRIPTION =
"Join the team behind Codú. We're recruiting volunteer marketers and event organisers to help run meetups, newsletters, partnerships, and socials across the Irish tech ecosystem.";

export const metadata: Metadata = {
title: PAGE_TITLE,
description: PAGE_DESCRIPTION,
keywords: [
"Codú volunteer",
"volunteer developer community",
"Ireland tech community",
"web developer volunteer",
"tech meetup organiser Ireland",
"marketing volunteer",
"events volunteer",
],
alternates: { canonical: PAGE_URL },
robots: { index: true, follow: true },
openGraph: {
title: "Volunteer with Codú",
description: PAGE_DESCRIPTION,
url: PAGE_URL,
type: "website",
},
twitter: {
card: "summary_large_image",
title: "Volunteer with Codú",
description: PAGE_DESCRIPTION,
},
};

export default function VolunteerPage() {
return <VolunteerClient />;
}
2 changes: 2 additions & 0 deletions app/sitemap.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ const ROUTES_TO_INDEX = [
"/feed",
"/advertise",
"/code-of-conduct",
"/volunteer",
"/speakers",
];

export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
Expand Down
Loading
Loading