This is an automated email from the ASF dual-hosted git repository.

kparisa pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iggy-website.git


The following commit(s) were added to refs/heads/main by this push:
     new d76449bc Add Community section and sub pages for Team, How to 
Contribute, Become a Committer, How to Release, Brand Kit
d76449bc is described below

commit d76449bc9fabe8a4e3103d477895cf7189071bcb
Author: kparisa <[email protected]>
AuthorDate: Fri Jul 31 21:54:21 2026 -0700

    Add Community section and sub pages for Team, How to Contribute, Become
    a Committer, How to Release, Brand Kit
---
 package.json                                       |   1 +
 .../community/_components/community-layout.tsx     | 114 ++++++++++++++
 .../(site)/community/become-a-committer/page.tsx   |  80 ++++++++++
 src/app/(site)/community/brand-kit/page.tsx        | 117 ++++++++++++++
 .../(site)/community/how-to-contribute/page.tsx    |  95 +++++++++++
 src/app/(site)/community/how-to-release/page.tsx   |  85 ++++++++++
 src/app/(site)/community/page.tsx                  |  60 +++++++
 src/app/(site)/community/team/page.tsx             | 174 +++++++++++++++++++++
 src/components/community-dropdown.tsx              |  89 +++++++++++
 src/lib/layout.shared.tsx                          |  24 +++
 10 files changed, 839 insertions(+)

diff --git a/package.json b/package.json
index cc1c0dcf..f5dcc95e 100644
--- a/package.json
+++ b/package.json
@@ -3,6 +3,7 @@
   "version": "0.1.0",
   "private": true,
   "scripts": {
+    "predev": "node scripts/fetch-github-stars.mjs",
     "dev": "next dev",
     "prebuild": "node scripts/fetch-github-stars.mjs",
     "build": "next build",
diff --git a/src/app/(site)/community/_components/community-layout.tsx 
b/src/app/(site)/community/_components/community-layout.tsx
new file mode 100644
index 00000000..205eced6
--- /dev/null
+++ b/src/app/(site)/community/_components/community-layout.tsx
@@ -0,0 +1,114 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import Link from "next/link";
+
+export const communityPages = [
+  {
+    title: "Team",
+    href: "/community/team",
+    description: "Meet the people stewarding Apache Iggy.",
+  },
+  {
+    title: "Brand Kit",
+    href: "/community/brand-kit",
+    description: "Use Apache Iggy names and marks correctly.",
+  },
+  {
+    title: "Become a Committer",
+    href: "/community/become-a-committer",
+    description: "Understand the path from contributor to committer.",
+  },
+  {
+    title: "How to Contribute",
+    href: "/community/how-to-contribute",
+    description: "Find the right first issue, discussion or doc task.",
+  },
+  {
+    title: "How to Release",
+    href: "/community/how-to-release",
+    description: "Follow the release-manager checklist.",
+  },
+];
+
+export function CommunityLayout({
+  children,
+}: {
+  children: React.ReactNode;
+}) {
+  return (
+    <main className="min-h-screen px-6 py-20 md:px-12">
+      <div className="mx-auto grid max-w-6xl gap-12 lg:grid-cols-[16rem_1fr]">
+        <aside className="lg:sticky lg:top-24 lg:self-start">
+          <Link
+            href="/community"
+            className="mb-5 block text-sm font-semibold uppercase 
tracking-wide text-fd-muted-foreground transition-colors 
hover:text-fd-foreground"
+          >
+            Community
+          </Link>
+          <nav className="space-y-1">
+            {communityPages.map((page) => (
+              <Link
+                key={page.href}
+                href={page.href}
+                className="block rounded-lg px-3 py-2 text-sm 
text-fd-muted-foreground transition-colors hover:bg-fd-accent/60 
hover:text-fd-foreground"
+              >
+                {page.title}
+              </Link>
+            ))}
+          </nav>
+        </aside>
+        <div className="min-w-0">{children}</div>
+      </div>
+    </main>
+  );
+}
+
+export function CommunityHeader({
+  title,
+  description,
+}: {
+  title: string;
+  description: string;
+}) {
+  return (
+    <header className="mb-12">
+      <h1 className="mb-4 text-4xl font-extrabold tracking-tight 
text-fd-foreground md:text-5xl">
+        {title}
+      </h1>
+      <p className="max-w-3xl text-lg leading-relaxed 
text-fd-muted-foreground">
+        {description}
+      </p>
+    </header>
+  );
+}
+
+export function ExternalLink({
+  href,
+  children,
+}: {
+  href: string;
+  children: React.ReactNode;
+}) {
+  return (
+    <Link href={href} className="text-fd-primary hover:underline">
+      {children}
+    </Link>
+  );
+}
diff --git a/src/app/(site)/community/become-a-committer/page.tsx 
b/src/app/(site)/community/become-a-committer/page.tsx
new file mode 100644
index 00000000..f8ed32b8
--- /dev/null
+++ b/src/app/(site)/community/become-a-committer/page.tsx
@@ -0,0 +1,80 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import type { Metadata } from "next";
+import {
+  CommunityHeader,
+  CommunityLayout,
+  ExternalLink,
+} from "../_components/community-layout";
+
+export const metadata: Metadata = {
+  title: "Become a Committer",
+  description: "How contributors become Apache Iggy committers.",
+};
+
+const practices = [
+  "Contribute useful changes over time: code, tests, documentation, examples, 
benchmarks, reviews or release help.",
+  "Discuss decisions in public on issues, pull requests and the dev mailing 
list.",
+  "Review other contributors' work and help keep conversations constructive.",
+  "Show good judgment around compatibility, licensing, security and release 
quality.",
+];
+
+export default function BecomeACommitterPage() {
+  return (
+    <CommunityLayout>
+      <CommunityHeader
+        title="Become a Committer"
+        description="Committership is granted by the project when someone has 
earned trust through sustained, constructive contributions."
+      />
+
+      <p className="mb-8 max-w-3xl text-base leading-relaxed 
text-fd-muted-foreground">
+        There is no application form, checklist or required timeline. The PPMC
+        looks for contributors who make the project healthier and who can be
+        trusted with repository write access.
+      </p>
+
+      <h2 className="mb-4 text-2xl font-bold text-fd-foreground">
+        What Helps
+      </h2>
+      <ul className="list-disc space-y-2 pl-6 text-base leading-relaxed 
text-fd-muted-foreground">
+        {practices.map((practice) => (
+          <li key={practice}>{practice}</li>
+        ))}
+      </ul>
+
+      <h2 className="mb-4 mt-12 text-2xl font-bold text-fd-foreground">
+        How It Works
+      </h2>
+      <p className="max-w-3xl text-base leading-relaxed 
text-fd-muted-foreground">
+        Existing PPMC members privately discuss and vote on new committers. If
+        the vote passes and the contributor accepts, Apache account setup and
+        project access follow the ASF process.
+      </p>
+
+      <p className="mt-6 max-w-3xl text-sm leading-relaxed 
text-fd-muted-foreground">
+        For broader ASF guidance, read Apache Community Development&apos;s{" "}
+        <ExternalLink 
href="https://community.apache.org/contributors/becomingacommitter.html";>
+          Becoming a Committer
+        </ExternalLink>{" "}
+        page.
+      </p>
+    </CommunityLayout>
+  );
+}
diff --git a/src/app/(site)/community/brand-kit/page.tsx 
b/src/app/(site)/community/brand-kit/page.tsx
new file mode 100644
index 00000000..b94db237
--- /dev/null
+++ b/src/app/(site)/community/brand-kit/page.tsx
@@ -0,0 +1,117 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import Image from "next/image";
+import type { Metadata } from "next";
+import {
+  CommunityHeader,
+  CommunityLayout,
+  ExternalLink,
+} from "../_components/community-layout";
+
+export const metadata: Metadata = {
+  title: "Brand Kit",
+  description: "Apache Iggy logo assets and brand guidance.",
+};
+
+const logoAssets = [
+  {
+    title: "Dark background",
+    src: "/img/apache-iggy-color-darkbg0.5x.png",
+    href: "/img/apache-iggy-color-darkbg0.5x.png",
+  },
+  {
+    title: "Light background",
+    src: "/img/apache-iggy-color-lightbg0.5x.png",
+    href: "/img/apache-iggy-color-lightbg0.5x.png",
+  },
+  {
+    title: "SVG mark",
+    src: "/img/iggy-apache-color-darkbg.svg",
+    href: "/img/iggy-apache-color-darkbg.svg",
+  },
+];
+
+export default function BrandKitPage() {
+  return (
+    <CommunityLayout>
+      <CommunityHeader
+        title="Brand Kit"
+        description="Use these resources when presenting, writing about or 
linking to Apache Iggy. Please follow Apache trademark and branding policy when 
using project marks."
+      />
+
+      <div className="grid gap-4 md:grid-cols-3">
+        {logoAssets.map((asset) => (
+          <a
+            key={asset.href}
+            href={asset.href}
+            className="rounded-xl border border-fd-border bg-fd-card p-5 
transition-colors hover:bg-fd-accent/60"
+          >
+            <div className="mb-4 flex h-28 items-center justify-center 
rounded-lg bg-fd-background p-4">
+              <Image
+                src={asset.src}
+                alt={asset.title}
+                width={220}
+                height={72}
+                className="max-h-20 w-auto object-contain"
+                unoptimized
+              />
+            </div>
+            <h2 className="text-base font-bold text-fd-foreground">
+              {asset.title}
+            </h2>
+          </a>
+        ))}
+      </div>
+
+      <h2 className="mb-4 mt-12 text-2xl font-bold text-fd-foreground">
+        Naming
+      </h2>
+      <ul className="list-disc space-y-2 pl-6 text-base leading-relaxed 
text-fd-muted-foreground">
+        <li>
+          Use <strong className="text-fd-foreground">Apache Iggy</strong> on
+          first mention.
+        </li>
+        <li>
+          While the project is incubating, use{" "}
+          <strong className="text-fd-foreground">
+            Apache Iggy (Incubating)
+          </strong>{" "}
+          where formal ASF context is needed.
+        </li>
+        <li>
+          Do not imply that non-release artifacts, nightly builds or downstream
+          packages are official Apache releases.
+        </li>
+      </ul>
+
+      <h2 className="mb-4 mt-12 text-2xl font-bold text-fd-foreground">
+        Trademark Guidance
+      </h2>
+      <p className="max-w-3xl text-base leading-relaxed 
text-fd-muted-foreground">
+        Apache project names and logos are trademarks of the Apache Software
+        Foundation. For complete guidance, see the{" "}
+        <ExternalLink href="https://www.apache.org/foundation/marks/";>
+          ASF trademark policy
+        </ExternalLink>
+        .
+      </p>
+    </CommunityLayout>
+  );
+}
diff --git a/src/app/(site)/community/how-to-contribute/page.tsx 
b/src/app/(site)/community/how-to-contribute/page.tsx
new file mode 100644
index 00000000..3968c277
--- /dev/null
+++ b/src/app/(site)/community/how-to-contribute/page.tsx
@@ -0,0 +1,95 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import type { Metadata } from "next";
+import {
+  CommunityHeader,
+  CommunityLayout,
+  ExternalLink,
+} from "../_components/community-layout";
+
+export const metadata: Metadata = {
+  title: "How to Contribute",
+  description: "Start contributing to Apache Iggy.",
+};
+
+const contributionAreas = [
+  "Fix bugs or improve performance in the server, SDKs, connectors or 
tooling.",
+  "Improve documentation, examples, diagrams and release notes.",
+  "Report reproducible issues with version, platform, logs and a minimal test 
case.",
+  "Review pull requests and help validate behavior across supported 
transports.",
+  "Join design discussions and propose changes before starting large work.",
+];
+
+export default function HowToContributePage() {
+  return (
+    <CommunityLayout>
+      <CommunityHeader
+        title="How to Contribute"
+        description="Apache Iggy welcomes contributions from people using, 
testing, documenting and building the project."
+      />
+
+      <h2 className="mb-4 text-2xl font-bold text-fd-foreground">
+        Good Places to Start
+      </h2>
+      <ul className="list-disc space-y-2 pl-6 text-base leading-relaxed 
text-fd-muted-foreground">
+        {contributionAreas.map((area) => (
+          <li key={area}>{area}</li>
+        ))}
+      </ul>
+
+      <h2 className="mb-4 mt-12 text-2xl font-bold text-fd-foreground">
+        Project Channels
+      </h2>
+      <div className="grid gap-4 md:grid-cols-2">
+        <section className="rounded-xl border border-fd-border bg-fd-card p-5">
+          <h3 className="mb-2 text-lg font-bold text-fd-foreground">Code</h3>
+          <p className="text-sm leading-relaxed text-fd-muted-foreground">
+            Use the{" "}
+            <ExternalLink href="https://github.com/apache/iggy";>
+              Apache Iggy repository
+            </ExternalLink>{" "}
+            for source code, pull requests and issue tracking.
+          </p>
+        </section>
+        <section className="rounded-xl border border-fd-border bg-fd-card p-5">
+          <h3 className="mb-2 text-lg font-bold text-fd-foreground">
+            Discussion
+          </h3>
+          <p className="text-sm leading-relaxed text-fd-muted-foreground">
+            Use <code>[email protected]</code> for project decisions and{" 
"}
+            <ExternalLink href="https://discord.gg/apache-iggy";>
+              Discord
+            </ExternalLink>{" "}
+            for informal conversation.
+          </p>
+        </section>
+      </div>
+
+      <h2 className="mb-4 mt-12 text-2xl font-bold text-fd-foreground">
+        Before Opening a Pull Request
+      </h2>
+      <p className="max-w-3xl text-base leading-relaxed 
text-fd-muted-foreground">
+        Keep changes focused, explain why the change matters, include tests or
+        reproduction notes when possible, and make sure any large design change
+        has been discussed publicly first.
+      </p>
+    </CommunityLayout>
+  );
+}
diff --git a/src/app/(site)/community/how-to-release/page.tsx 
b/src/app/(site)/community/how-to-release/page.tsx
new file mode 100644
index 00000000..86168042
--- /dev/null
+++ b/src/app/(site)/community/how-to-release/page.tsx
@@ -0,0 +1,85 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import type { Metadata } from "next";
+import {
+  CommunityHeader,
+  CommunityLayout,
+  ExternalLink,
+} from "../_components/community-layout";
+
+export const metadata: Metadata = {
+  title: "How to Release",
+  description: "Release guidance for Apache Iggy release managers.",
+};
+
+const releaseSteps = [
+  "Prepare the release candidate from a clean source state and update 
versioned metadata.",
+  "Build source artifacts, checksums and OpenPGP signatures.",
+  "Verify licenses, NOTICE files, dependency metadata and source-only release 
contents.",
+  "Call a vote on the dev mailing list and allow the required voting period.",
+  "After approval, publish artifacts to Apache distribution infrastructure and 
update the website.",
+  "Announce the release only after mirrors and public metadata have settled.",
+];
+
+export default function HowToReleasePage() {
+  return (
+    <CommunityLayout>
+      <CommunityHeader
+        title="How to Release"
+        description="Apache releases are source releases voted on by the 
project community. This page gives release managers a high-level checklist for 
Apache Iggy."
+      />
+
+      <h2 className="mb-4 text-2xl font-bold text-fd-foreground">
+        Release Checklist
+      </h2>
+      <ol className="list-decimal space-y-2 pl-6 text-base leading-relaxed 
text-fd-muted-foreground">
+        {releaseSteps.map((step) => (
+          <li key={step}>{step}</li>
+        ))}
+      </ol>
+
+      <h2 className="mb-4 mt-12 text-2xl font-bold text-fd-foreground">
+        Required Reading
+      </h2>
+      <ul className="list-disc space-y-2 pl-6 text-base leading-relaxed 
text-fd-muted-foreground">
+        <li>
+          <ExternalLink 
href="https://incubator.apache.org/guides/releasemanagement.html";>
+            Apache Incubator release management
+          </ExternalLink>
+        </li>
+        <li>
+          <ExternalLink 
href="https://www.apache.org/legal/release-policy.html";>
+            ASF release policy
+          </ExternalLink>
+        </li>
+        <li>
+          <ExternalLink href="https://www.apache.org/dev/release-distribution";>
+            ASF release distribution
+          </ExternalLink>
+        </li>
+      </ul>
+
+      <p className="mt-8 max-w-3xl text-sm leading-relaxed 
text-fd-muted-foreground">
+        Because Apache Iggy is incubating, release managers should make sure 
the
+        release follows both project practice and Apache Incubator policy.
+      </p>
+    </CommunityLayout>
+  );
+}
diff --git a/src/app/(site)/community/page.tsx 
b/src/app/(site)/community/page.tsx
new file mode 100644
index 00000000..c1d41bb5
--- /dev/null
+++ b/src/app/(site)/community/page.tsx
@@ -0,0 +1,60 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import Link from "next/link";
+import type { Metadata } from "next";
+import {
+  CommunityHeader,
+  CommunityLayout,
+  communityPages,
+} from "./_components/community-layout";
+
+export const metadata: Metadata = {
+  title: "Community",
+  description:
+    "Join the Apache Iggy community and learn how to contribute, release and 
use project brand resources.",
+};
+
+export default function CommunityPage() {
+  return (
+    <CommunityLayout>
+      <CommunityHeader
+        title="Community"
+        description="Apache Iggy is built in the open by contributors, 
committers, mentors and users. These pages collect the people, practices and 
resources that keep the project moving."
+      />
+
+      <div className="grid gap-4 md:grid-cols-2">
+        {communityPages.map((page) => (
+          <Link
+            key={page.href}
+            href={page.href}
+            className="rounded-xl border border-fd-border bg-fd-card p-5 
transition-colors hover:bg-fd-accent/60"
+          >
+            <h2 className="mb-2 text-xl font-bold text-fd-foreground">
+              {page.title}
+            </h2>
+            <p className="text-sm leading-relaxed text-fd-muted-foreground">
+              {page.description}
+            </p>
+          </Link>
+        ))}
+      </div>
+    </CommunityLayout>
+  );
+}
diff --git a/src/app/(site)/community/team/page.tsx 
b/src/app/(site)/community/team/page.tsx
new file mode 100644
index 00000000..34b0abaf
--- /dev/null
+++ b/src/app/(site)/community/team/page.tsx
@@ -0,0 +1,174 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import type { Metadata } from "next";
+import {
+  CommunityHeader,
+  CommunityLayout,
+  ExternalLink,
+} from "../_components/community-layout";
+
+export const metadata: Metadata = {
+  title: "Team",
+  description: "Apache Iggy PPMC members, mentors and committers.",
+};
+
+const members = [
+  { name: "Grzegorz Koszyk", apacheId: "gkoszyk", roles: ["PPMC Member"] },
+  { name: "Hubert Gruszecki", apacheId: "hgruszecki", roles: ["PPMC Member"] },
+  { name: "Hulk Lin", apacheId: "hulk", roles: ["Mentor", "PPMC Member"] },
+  { name: "Kranti Parisa", apacheId: "kranti", roles: ["PPMC Member"] },
+  { name: "Patryk Huzarski", apacheId: "patryk", roles: ["PPMC Member"] },
+  { name: "Piotr Gankiewicz", apacheId: "piotr", roles: ["PPMC Member"] },
+  { name: "Zili Chen", apacheId: "tison", roles: ["Mentor", "PPMC Member"] },
+  { name: "Hao Ding", apacheId: "xuanwo", roles: ["Mentor", "PPMC Member"] },
+  {
+    name: "Yonik Seeley",
+    apacheId: "yonik",
+    roles: ["Champion", "Mentor", "PPMC Member"],
+  },
+  { name: "Atharva Lade", apacheId: "atharva", roles: ["Committer"] },
+  {
+    name: "Bakytgerey Ashirbekov",
+    apacheId: "bashirbekov",
+    roles: ["Committer"],
+  },
+  { name: "Bartosz Ciesla", apacheId: "bciesla", roles: ["Committer"] },
+  { name: "Kyle Downey", apacheId: "kdowney", roles: ["Committer"] },
+  { name: "Krishna Vishal", apacheId: "krishna", roles: ["Committer"] },
+  { name: "Lukasz Zborek", apacheId: "lzborek", roles: ["Committer"] },
+  { name: "Maciej Modzelewski", apacheId: "maciej", roles: ["Committer"] },
+  {
+    name: "Raveendra Yerraguntla",
+    apacheId: "raviyerraguntla",
+    roles: ["Committer"],
+  },
+  { name: "Rimuksh Kansal", apacheId: "rimuksh", roles: ["Committer"] },
+  { name: "Thibaut Lambert", apacheId: "t1b0", roles: ["Committer"] },
+];
+
+const roleDescriptions = [
+  {
+    title: "Champion",
+    body: "The champion helps introduce the podling to the Apache Incubator 
and supports the project through incubation.",
+  },
+  {
+    title: "Mentor",
+    body: "Mentors are experienced Apache members who guide the podling on 
Apache governance, releases, community health and ASF policy.",
+  },
+  {
+    title: "PPMC Member",
+    body: "The Podling Project Management Committee stewards the project while 
it is in incubation, including community growth, releases and project 
oversight.",
+  },
+  {
+    title: "Committer",
+    body: "Committers have write access to project repositories and help 
review, merge, test, document and discuss project work in public.",
+  },
+];
+
+export default function TeamPage() {
+  return (
+    <CommunityLayout>
+      <CommunityHeader
+        title="Team"
+        description="We would like to thank the members, mentors and 
committers who help build Apache Iggy and guide the project through incubation."
+      />
+
+      <p className="mb-8 max-w-3xl text-base leading-relaxed 
text-fd-muted-foreground">
+        This page mirrors the public Apache roster for convenience. The 
canonical
+        project roster is maintained by the Apache Software Foundation on{" "}
+        <ExternalLink 
href="https://people.apache.org/phonebook.html?podling=iggy";>
+          people.apache.org
+        </ExternalLink>
+        .
+      </p>
+
+      <h2 className="mb-4 text-2xl font-bold text-fd-foreground">Members</h2>
+      <div className="overflow-x-auto rounded-xl border border-fd-border">
+        <table className="w-full text-left text-sm text-fd-foreground">
+          <thead>
+            <tr className="bg-fd-accent/60">
+              <th className="border-b border-fd-border px-5 py-3.5 text-xs 
font-semibold uppercase tracking-wide text-fd-muted-foreground">
+                Public Name
+              </th>
+              <th className="border-b border-fd-border px-5 py-3.5 text-xs 
font-semibold uppercase tracking-wide text-fd-muted-foreground">
+                Apache ID
+              </th>
+              <th className="border-b border-fd-border px-5 py-3.5 text-xs 
font-semibold uppercase tracking-wide text-fd-muted-foreground">
+                Role(s)
+              </th>
+            </tr>
+          </thead>
+          <tbody>
+            {members.map((member) => (
+              <tr
+                key={member.apacheId}
+                className="border-b border-fd-border/50 transition-colors 
last:border-b-0 hover:bg-fd-accent/30"
+              >
+                <td className="px-5 py-4 font-semibold">{member.name}</td>
+                <td className="px-5 py-4">
+                  <ExternalLink
+                    
href={`https://people.apache.org/committer-index.html#${member.apacheId}`}
+                  >
+                    {member.apacheId}
+                  </ExternalLink>
+                </td>
+                <td className="px-5 py-4 text-fd-muted-foreground">
+                  {member.roles.join(", ")}
+                </td>
+              </tr>
+            ))}
+          </tbody>
+        </table>
+      </div>
+
+      <h2 className="mb-4 mt-12 text-2xl font-bold text-fd-foreground">
+        Roles
+      </h2>
+      <div className="grid gap-4 md:grid-cols-2">
+        {roleDescriptions.map((role) => (
+          <section
+            key={role.title}
+            className="rounded-xl border border-fd-border bg-fd-card p-5"
+          >
+            <h3 className="mb-2 text-lg font-bold text-fd-foreground">
+              {role.title}
+            </h3>
+            <p className="text-sm leading-relaxed text-fd-muted-foreground">
+              {role.body}
+            </p>
+          </section>
+        ))}
+      </div>
+
+      <h2 className="mb-4 mt-12 text-2xl font-bold text-fd-foreground">
+        Contributors
+      </h2>
+      <p className="max-w-3xl text-base leading-relaxed 
text-fd-muted-foreground">
+        Many more people contribute through issues, pull requests, discussions,
+        testing, documentation and community support. You can find a broader
+        contributor list in the{" "}
+        <ExternalLink 
href="https://github.com/apache/iggy/graphs/contributors";>
+          Apache Iggy GitHub repository
+        </ExternalLink>
+        .
+      </p>
+    </CommunityLayout>
+  );
+}
diff --git a/src/components/community-dropdown.tsx 
b/src/components/community-dropdown.tsx
new file mode 100644
index 00000000..944435d1
--- /dev/null
+++ b/src/components/community-dropdown.tsx
@@ -0,0 +1,89 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+"use client";
+
+import { useEffect, useRef, useState } from "react";
+import Link from "next/link";
+
+export const communityLinks = [
+  { text: "Team", url: "/community/team" },
+  { text: "How to Contribute", url: "/community/how-to-contribute" },
+  { text: "Become a Committer", url: "/community/become-a-committer" },
+  { text: "How to Release", url: "/community/how-to-release" },
+  { text: "Brand Kit", url: "/community/brand-kit" },
+];
+
+export function CommunityDropdown() {
+  const [open, setOpen] = useState(false);
+  const ref = useRef<HTMLDivElement>(null);
+
+  useEffect(() => {
+    function handleClick(e: MouseEvent) {
+      if (ref.current && !ref.current.contains(e.target as Node)) {
+        setOpen(false);
+      }
+    }
+
+    document.addEventListener("mousedown", handleClick);
+    return () => document.removeEventListener("mousedown", handleClick);
+  }, []);
+
+  return (
+    <div ref={ref} className="relative">
+      <button
+        onClick={() => setOpen(!open)}
+        className="inline-flex items-center gap-1 rounded-md px-2.5 py-1.5 
text-sm font-medium text-fd-muted-foreground transition-colors 
hover:text-fd-foreground"
+        aria-expanded={open}
+      >
+        Community
+        <svg
+          width="10"
+          height="10"
+          viewBox="0 0 10 10"
+          className={`transition-transform ${open ? "rotate-180" : ""}`}
+          aria-hidden="true"
+        >
+          <path
+            d="M2 4l3 3 3-3"
+            fill="none"
+            stroke="currentColor"
+            strokeLinecap="round"
+            strokeLinejoin="round"
+            strokeWidth="1.5"
+          />
+        </svg>
+      </button>
+      {open && (
+        <div className="absolute left-0 top-full z-50 mt-1 min-w-[190px] 
rounded-lg border border-fd-border bg-fd-popover py-1 shadow-lg">
+          {communityLinks.map((link) => (
+            <Link
+              key={link.url}
+              href={link.url}
+              className="block px-3.5 py-1.5 text-sm text-fd-muted-foreground 
transition-colors hover:bg-fd-accent hover:text-fd-foreground"
+              onClick={() => setOpen(false)}
+            >
+              {link.text}
+            </Link>
+          ))}
+        </div>
+      )}
+    </div>
+  );
+}
diff --git a/src/lib/layout.shared.tsx b/src/lib/layout.shared.tsx
index f9ce32d5..cdbd4f28 100644
--- a/src/lib/layout.shared.tsx
+++ b/src/lib/layout.shared.tsx
@@ -23,11 +23,29 @@ import { Logo } from "@/components/logo";
 import { GitHubStars } from "@/components/github-stars";
 import { ASFDropdown } from "@/components/asf-dropdown";
 import { ASFMobileLinks } from "@/components/asf-mobile-links";
+import {
+  CommunityDropdown,
+  communityLinks,
+} from "@/components/community-dropdown";
+
+const communityMobileMenu = {
+  type: "menu" as const,
+  text: "Community",
+  url: "/community",
+  on: "menu" as const,
+  items: communityLinks,
+};
 
 const sharedLinks: BaseLayoutProps["links"] = [
   { text: "Docs", url: "/docs" },
   { text: "Blogs", url: "/blogs" },
   { text: "Downloads", url: "/downloads" },
+  {
+    type: "custom",
+    on: "nav",
+    children: <CommunityDropdown />,
+  },
+  communityMobileMenu,
   {
     text: "Benchmarks",
     url: "https://benchmarks.iggy.apache.org";,
@@ -96,6 +114,12 @@ export function docsOptions(): BaseLayoutProps {
       { text: "Home", url: "/" },
       { text: "Blogs", url: "/blogs" },
       { text: "Downloads", url: "/downloads" },
+      {
+        type: "custom",
+        on: "nav",
+        children: <CommunityDropdown />,
+      },
+      communityMobileMenu,
       {
         type: "custom",
         on: "nav",

Reply via email to