diff --git a/src/app/(main)/community/team/page.tsx b/src/app/(main)/community/team/page.tsx new file mode 100644 index 0000000000..0fa9e92a0c --- /dev/null +++ b/src/app/(main)/community/team/page.tsx @@ -0,0 +1,394 @@ +import dynamic from "next/dynamic" + +import { Breadcrumbs } from "@/_design-system/breadcrumbs" +import { NavbarFixed } from "@/components/navbar/navbar-fixed" +import { TocHero, TocHeroContents } from "@/components/toc-hero" +import blurBean from "@/app/(main)/community/events/events-blur-bean.webp" +import { StripesDecoration } from "@/app/conf/_design-system/stripes-decoration.tsx" + +interface Member { + name?: string + github: string + alumni?: boolean +} + +interface TeamSection { + title: string + description: string + url?: string + members: Member[] + alumniMembers?: Member[] +} + +function MemberCard({ member, small }: { member: Member; small?: boolean }) { + return ( + + {member.name + + {member.name ?? member.github} + + + ) +} + +function MemberGrid({ + members, + label, + small, +}: { + members: Member[] + label?: string + small?: boolean +}) { + if (!members.length) return null + return ( +
+ {label && ( +

+ {label} +

+ )} +
+ {members.map(m => ( + + ))} +
+
+ ) +} + +function ListOfSectionLists({ + sections, +}: { + sections: Record +}) { + return Object.entries(sections).map(([group, groupSections]) => ( +
+

{group}

+ +
+ )) +} + +function SectionList({ + sections, + archived, +}: { + sections: TeamSection[] + archived: boolean +}) { + { + return sections.map(section => ( +
+
+
+

+ {section.url ? ( + + {section.title} + + ) : ( + section.title + )} + {archived && (Archived)} +

+

+ {section.description} +

+
+
+ + + {section.alumniMembers && section.alumniMembers.length > 0 && ( + + )} +
+ )) + } +} + +const sections: Record = { + Standards: [ + { + title: "Technical Steering Committee (TSC)", + description: + "The Technical Steering Committee oversees the development and evolution of the GraphQL specification. It sets the technical direction for the project and makes decisions on behalf of the GraphQL Foundation.", + url: "https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md", + members: [ + { name: "Lee Byron", github: "leebyron" }, + { name: "Benjie Gillam", github: "benjie" }, + { name: "Kewei Qu", github: "Keweiqu" }, + { name: "Mark Larah", github: "magicmark" }, + { name: "Martin Bonnin", github: "martinbonnin" }, + { name: "Matt Mahoney", github: "mjmahone" }, + { name: "Michael Staib", github: "michaelstaib" }, + { name: "Pascal Senn", github: "PascalSenn" }, + { name: "Rob Richard", github: "robrichard" }, + { name: "Uri Goldshtein", github: "Urigo" }, + { name: "Yaacov Rydzinski", github: "yaacovCR" }, + ], + }, + { + title: "gaps.graphql.org", + description: + "GraphQL Auxiliary Proposals — filling the GAPs in the GraphQL specification.", + url: "https://gaps.graphql.org", + members: [ + { name: "Mark Larah", github: "magicmark" }, + { name: "Martin Bonnin", github: "martinbonnin" }, + ], + }, + { + title: "rfcs.graphql.org", + description: "The GraphQL RFC tracker lists all RFCs and their state.", + url: "https://rfcs.graphql.org", + members: [{ name: "Benjie Gillam", github: "benjie" }], + }, + { + title: "scalars.graphql.org", + description: + "A collaborative effort to define and standardize custom scalar types for GraphQL, making it easier to share type definitions across implementations.", + url: "https://scalars.graphql.org", + members: [{ name: "Martin Bonnin", github: "martinbonnin" }], + }, + ], + Community: [ + { + title: "Community gardening", + description: "Keeping the GraphQL community running smoothly.", + url: "https://graphql.org/", + members: [ + { name: "Benjie Gillam", github: "benjie" }, + { name: "Jem Gillam", github: "jemgillam" }, + ], + }, + { + title: "Grants Program", + description: "Managing the GraphQL grants program.", + url: "https://graphql.org/community/foundation/community-grant/", + members: [{ name: "Martin Bonnin", github: "martinbonnin" }], + }, + { + title: "GraphQL Weekly", + description: + "A weekly newsletter curating the best GraphQL news, articles, tutorials, and community updates from across the ecosystem.", + url: "https://graphqlweekly.com", + members: [], + }, + { + title: "Socials", + description: + "Getting the GraphQL word out on social networks: X, BlueSky, LinkedIn,...", + url: "https://typefully.com/", + members: [ + { name: "Benjie Gillam", github: "benjie" }, + { name: "Jean Lucas", github: "jeanlucaslima" }, + { name: "Jem Gillam", github: "jemgillam" }, + { name: "Martin Bonnin", github: "martinbonnin" }, + { name: "Michael Staib", github: "michaelstaib" }, + ], + }, + { + title: "YouTube", + description: "Managing the YouTube channel.", + url: "https://www.youtube.com/@graphqltv/videos", + members: [{ name: "Michael Staib", github: "michaelstaib" }], + }, + { + title: "GraphQL Day", + description: "Organizing GraphQL Day events all around the world.", + url: "https://graphql.org/day", + members: [ + { name: "Benjie Gillam", github: "benjie" }, + { name: "Jeff Auriemma", github: "bignimbus" }, + { name: "Jem Gillam", github: "jemgillam" }, + { name: "Martin Bonnin", github: "martinbonnin" }, + { name: "Michael Staib", github: "michaelstaib" }, + { name: "Pascal Senn", github: "PascalSenn" }, + ], + }, + ], + Projects: [ + { + title: "GraphQL.js", + description: + "The reference implementation of GraphQL for JavaScript, providing the canonical implementation of the GraphQL specification.", + url: "https://github.com/graphql/graphql-js", + members: [], + }, + { + title: "GraphiQL", + description: + "An in-browser IDE for exploring GraphQL APIs, used by developers worldwide to write, test, and debug queries.", + url: "https://github.com/graphql/graphiql", + members: [], + }, + ], + "Working Groups": [ + { + title: "Composite Schemas working group (Federation)", + description: + "Building a specification that covers many of the shared concerns when building a larger GraphQL schema as a composite of many smaller GraphQL schemas.", + url: "https://github.com/graphql/composite-schemas-wg", + members: [ + { name: "Derek Kuc", github: "dariuszkuc" }, + { name: "Michael Staib", github: "michaelstaib" }, + { name: "Pascal Senn", github: "PascalSenn" }, + ], + }, + { + title: "AI Working Group", + description: + "A working group focused on integrating GraphQL with AI systems and defining best practices for using GraphQL in AI-powered applications.", + url: "https://github.com/graphql/ai-wg", + members: [ + { name: "Dale Seo", github: "DaleSeo" }, + { name: "Jeff Auriemma", github: "bignimbus" }, + { name: "Kewei Qu", github: "Keweiqu" }, + { name: "Mark Larah", github: "magicmark" }, + { name: "Pascal Senn", github: "PascalSenn" }, + ], + }, + { + title: "OTel Working Group", + description: + "A working group defining OpenTelemetry conventions and semantics for GraphQL, enabling consistent observability across GraphQL implementations.", + url: "https://github.com/graphql/otel-wg", + members: [{ name: "Pascal Senn", github: "PascalSenn" }], + }, + { + title: "GraphQL over HTTP Working Group", + description: + "A working group that defines and maintains the specification for transporting GraphQL over HTTP, ensuring interoperability across servers and clients.", + url: "https://github.com/graphql/graphql-over-http", + members: [ + { name: "Benjie Gillam", github: "benjie" }, + { name: "Michael Staib", github: "michaelstaib" }, + { name: "Martin Bonnin", github: "martinbonnin" }, + ], + }, + { + title: "@defer/@stream Working Group", + description: + "A working group that defines and maintains the specification for transporting GraphQL over HTTP, ensuring interoperability across servers and clients.", + url: "https://github.com/graphql/defer-stream-wg", + members: [ + { name: "Rob Richard", github: "robrichard" }, + { name: "Yaacov Rydzinski", github: "yaacovCR" }, + ], + }, + ], +} + +const archivedSections: TeamSection[] = [ + { + title: "Nullability Working Group", + description: + "A working group that explored improvements to GraphQL's null handling, including the @semanticNonNull directive and related proposals. Now archived, with its work continuing in the main GraphQL WG.", + url: "https://github.com/graphql/nullability-wg", + members: [{ name: "Martin Bonnin", github: "martinbonnin" }], + }, +] + +export default async function TeamPage() { + return ( + <> + + } + > +
+ +
+
+ +
+ + +

Archived teams

+ + +
+

+ Note: To update this page, please send a pull request to + + github.com/graphql/graphql.github.io + + . Contributions are welcome! +

+
+
+ + ) +} + +function Stripes() { + return ( +
+ +
+ ) +} diff --git a/src/pages/_meta.tsx b/src/pages/_meta.tsx index ff7556ec3d..823f1fabe1 100644 --- a/src/pages/_meta.tsx +++ b/src/pages/_meta.tsx @@ -42,6 +42,11 @@ export default { type: "menu", title: "Community", items: { + team: { + title: "Team", + type: "page", + href: "/community/team", + }, events: { title: "Events", type: "page", diff --git a/src/pages/community/_meta.ts b/src/pages/community/_meta.ts index 7b7c55a15a..b432b2ce27 100644 --- a/src/pages/community/_meta.ts +++ b/src/pages/community/_meta.ts @@ -1,4 +1,8 @@ export default { + team: { + type: "page", + href: "/community/team", + }, "official-channels": "", "training-courses": "", "community-channels": "",