diff --git a/app/src/app/code-of-conduct/page.tsx b/app/src/app/code-of-conduct/page.tsx new file mode 100644 index 0000000..6b690bf --- /dev/null +++ b/app/src/app/code-of-conduct/page.tsx @@ -0,0 +1,130 @@ +import type { Metadata } from "next"; +import Link from "next/link"; +import { PageLayout } from "@/components/page-layout"; +import { Section } from "@/components/ui/section"; + +export const metadata: Metadata = { + title: "Code of conduct", + description: + "How we keep All Things Web welcoming, respectful, and community first, and how to report a concern.", +}; + +export default function CodeOfConductPage() { + return ( + +
+
+
+

+ Code of conduct +

+

+ All Things Web is a place to learn, build, share, and connect on + equal footing. Whether you are new to tech or have spent years + building it, you deserve respect and room to participate. +

+

+ These expectations apply to attendees, speakers, organizers, + volunteers, and hosting companies at our events and in our + community spaces. Job title, reputation, and hosting contributions + do not give anyone special treatment. +

+
+
+

+ How we show up +

+
    +
  • + Be curious and considerate. Ask questions, listen, share what + you know, and make room for others. +
  • +
  • + Discuss ideas without belittling the people behind them. Respect + boundaries and stop when someone asks you to. +
  • +
  • + Share useful work and honest lessons. No shilling, sales + pitches, or pressure to buy, invest, or hand over contact + details. +
  • +
  • + Ask before photographing or recording someone directly, and + respect requests not to be included or tagged. +
  • +
  • + Help keep the venue welcoming and accessible. Follow reasonable + venue and organizer instructions. +
  • +
+
+
+

+ Behavior we do not accept +

+

+ Harassment, discrimination, threats, stalking, intimidation, + unwanted sexual attention or contact, sharing private information + without permission, and repeated disruption are not welcome. + Neither is retaliation against someone who raises a concern or + helps address one. +

+
+
+

+ Report a concern +

+

+ You can speak privately to an organizer at an event or email: +

+
    +
  • + Andre Landgraf (primary):{" "} + + andre@allthingsweb.dev + +
  • +
  • + Erik Thorelli (backup):{" "} + + erik@allthingsweb.dev + +
  • +
+

+ If your concern involves one organizer, contact the other + directly. You do not need to confront the person involved before + asking for help. Share what happened, when and where, and how we + can contact you safely. Reports will be handled discreetly, with + information shared only as needed to respond. +

+

+ These email addresses are not an emergency service. If there is + immediate danger, contact local emergency services or venue staff. +

+
+
+

+ How we respond +

+

+ Organizers will listen, consider the circumstances, and take + proportionate action. This may include a conversation, a warning, + asking someone to stop or leave, or restricting participation in + future events or community spaces. Someone who is the subject of a + report should not decide its outcome. You can use the contacts + above to ask about a decision or raise a concern about how it was + handled. +

+
+
+
+
+ ); +} diff --git a/app/src/components/page-layout.tsx b/app/src/components/page-layout.tsx index 52545c0..d366f1b 100644 --- a/app/src/components/page-layout.tsx +++ b/app/src/components/page-layout.tsx @@ -49,6 +49,12 @@ export async function PageLayout({ children }: { children: React.ReactNode }) {

© 2024 All Things Web. All rights reserved.

+ + Code of conduct + ); diff --git a/app/src/lib/event-feeds.ts b/app/src/lib/event-feeds.ts index b36ace5..9a74396 100644 --- a/app/src/lib/event-feeds.ts +++ b/app/src/lib/event-feeds.ts @@ -58,6 +58,7 @@ export function generateSiteMap(events: FeedEvent[]) { ${getUrlElement(`${PUBLIC_SITE_ORIGIN}/`)} ${getUrlElement(`${PUBLIC_SITE_ORIGIN}/speakers`)} ${getUrlElement(`${PUBLIC_SITE_ORIGIN}/about`)} + ${getUrlElement(`${PUBLIC_SITE_ORIGIN}/code-of-conduct`)} ${events .map((event) => getUrlElement( diff --git a/app/tests/event-feeds.test.ts b/app/tests/event-feeds.test.ts index 0b6085d..4837809 100644 --- a/app/tests/event-feeds.test.ts +++ b/app/tests/event-feeds.test.ts @@ -46,10 +46,11 @@ describe("public event feeds", () => { "https://allthingsweb.dev/", "https://allthingsweb.dev/speakers", "https://allthingsweb.dev/about", + "https://allthingsweb.dev/code-of-conduct", "https://allthingsweb.dev/2026-show-and-tell", "https://allthingsweb.dev/a%20%26%20b%23c", ]); - expect(parsed.url[3].lastmod).toBe(event.updatedAt.toISOString()); + expect(parsed.url[4].lastmod).toBe(event.updatedAt.toISOString()); expect(parsed.url[0].lastmod).toBeUndefined(); });