grain.social is a photo sharing platform built on atproto.
at main 4.4 kB view raw
1import { BffContext, RouteHandler } from "@bigmoves/bff"; 2import { ComponentChildren } from "preact"; 3import { Breadcrumb } from "../components/Breadcrumb.tsx"; 4import { State } from "../state.ts"; 5 6export const handler: RouteHandler = ( 7 _req, 8 _params, 9 ctx: BffContext<State>, 10) => { 11 ctx.state.meta = [ 12 { title: "Community Guidelines — Grain" }, 13 ]; 14 return ctx.render( 15 <div className="px-4 py-4"> 16 <Breadcrumb 17 items={[{ label: "support", href: "/support" }, { 18 label: "community guidelines", 19 }]} 20 /> 21 <h1 className="text-3xl font-bold mb-6 text-zinc-900 dark:text-white"> 22 Community Guidelines 23 </h1> 24 <Section title="About Grain Social"> 25 <p> 26 Grain Social is a photo-sharing service built on the AT Protocol. 27 These guidelines apply specifically to Grain Social. While the 28 protocol is decentralized and supports many independent services, our 29 focus is on fostering a respectful, creative, and safe experience 30 within our app. 31 </p> 32 </Section> 33 34 <Section title="Our Principles"> 35 <ul className="list-disc pl-5 space-y-1"> 36 <li> 37 <strong>User choice</strong>: We are committed to empowering users 38 with control over where their data is stored, how their content is 39 moderated, and which algorithms power their feeds (hopefully more 40 options soon!). 41 </li> 42 <li> 43 <strong>Welcoming space</strong>: We aim to build a friendly, 44 inclusive environment where people enjoy sharing and discovering 45 photos. 46 </li> 47 <li> 48 <strong>Evolving standards</strong>: Our policies will adapt over 49 time based on your feedback and the needs of the community. 50 </li> 51 </ul> 52 </Section> 53 54 <Section title="What’s Not Allowed"> 55 <p> 56 Don't use Grain Social to break the law, harm others, or disrupt the 57 network. Specifically, do not: 58 </p> 59 <ul className="list-disc pl-5 space-y-1"> 60 <li>Promote hate groups or terrorism</li> 61 <li> 62 Share child sexual abuse material or any sexual content involving 63 minors 64 </li> 65 <li>Engage in trafficking, exploitation, or predatory behavior</li> 66 <li>Trade illegal goods or substances</li> 67 <li>Share private personal info without consent</li> 68 <li>Hack, phish, scam, or impersonate others</li> 69 <li>Spam, abuse automation, or manipulate engagement</li> 70 <li>Violate copyrights or trademarks</li> 71 <li>Spread false or misleading election info</li> 72 <li> 73 Evade moderation actions (e.g., ban evasion) by creating new 74 accounts 75 </li> 76 </ul> 77 </Section> 78 79 <Section title="Respect Others"> 80 <p>We expect respectful conduct. This includes avoiding:</p> 81 <ul className="list-disc pl-5 space-y-1"> 82 <li>Harassment, bullying, or targeted abuse</li> 83 <li>Hate speech or extremist content</li> 84 <li>Threats of violence or glorification of harm</li> 85 <li>Promotion of self-harm or suicide</li> 86 <li>Graphic violence or non-consensual sexual content</li> 87 <li>Misleading impersonation of individuals or organizations</li> 88 </ul> 89 </Section> 90 91 <Section title="Reporting Violations"> 92 <p> 93 Help us keep the community safe. You can report photos, galleries, or 94 accounts directly through the app (soon!) or by contacting us at{" "} 95 <a 96 href="mailto:support@grain.social" 97 className="text-sky-500 underline hover:underline" 98 > 99 support@grain.social 100 </a> 101 . Our moderation team will review and take action where needed. 102 Reports may consider off-platform context when relevant. 103 </p> 104 </Section> 105 </div>, 106 ); 107}; 108 109type SectionProps = { 110 title: string; 111 children: ComponentChildren; 112}; 113 114const Section = ({ title, children }: SectionProps) => ( 115 <section className="mb-8"> 116 <h2 className="text-xl font-bold mb-2 text-zinc-800 dark:text-zinc-100"> 117 {title} 118 </h2> 119 <div className="space-y-2 text-zinc-700 dark:text-zinc-300"> 120 {children} 121 </div> 122 </section> 123);