From 137ed967d68a8496c170866fd34b3f0c6e922327 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Thu, 16 Jul 2026 14:44:54 +0100 Subject: [PATCH] Add a handbook about the crowdfund --- crowdfund/application.md | 25 +++++++++++ crowdfund/filing.md | 85 ++++++++++++++++++++++++++++++++++++++ crowdfund/index.md | 20 +++++++++ docusaurus.config.ts | 1 + sidebars.crowdfund.ts | 7 ++++ src/pages/index.module.css | 10 +++-- src/pages/index.tsx | 11 +++++ 7 files changed, 155 insertions(+), 4 deletions(-) create mode 100644 crowdfund/application.md create mode 100644 crowdfund/filing.md create mode 100644 crowdfund/index.md create mode 100644 sidebars.crowdfund.ts diff --git a/crowdfund/application.md b/crowdfund/application.md new file mode 100644 index 0000000..a9ea397 --- /dev/null +++ b/crowdfund/application.md @@ -0,0 +1,25 @@ +--- +title: Application process +sidebar_position: 2 +--- + +Ambassadors and locals organizers can request crowdfund support by emailing +[operations@graphql.org][]. The email should contain: + +- The purpose of the request. +- An estimate of the amounts needed (for example travel and accommodation + amounts) in US Dollars. +- Their full legal name. +- Their mailing address. +- Their preferred email address. + +If the request is approved, someone from the Linux Foundation will add you as a +beneficiary to the crowdfund platform, and you will be invited to create an +account on Expensify - you should do so promptly. You should also be informed +which email addresses you should include in the `CC` when filing any reports - +if you were not told this, please ask. + +Once all costs are incurred and all receipts are available for a single request, +a report should be created following the [filing process](/crowdfund/filing). + +[operations@graphql.org]: mailto:operations@graphql.org diff --git a/crowdfund/filing.md b/crowdfund/filing.md new file mode 100644 index 0000000..8f4fbf7 --- /dev/null +++ b/crowdfund/filing.md @@ -0,0 +1,85 @@ +--- +title: Filing process +sidebar_position: 3 +--- + +If you do not yet have access to expensify, please complete the +[application process](/crowdfund/application) first. + +## Terminology + +### Report + +**A "report" is a claim for refund.** + +For a single event (e.g. a Local, a Conference, etc), exactly **ONE REPORT** +should be filed. The report should be itemized - each individual expense should +be entered as **separate receipts** within the **same report**. + +> [!DANGER] Do NOT combine multiple receipts into a single PDF - keep them +> separate. + +### Receipts + +**A "receipt" is a single scanned document from a vendor showing an amount paid +related to a report.** + +Each report may have more than one receipt. + +The amounts in each receipt must match exactly the amount entered. + +An expense cannot be claimed without a receipt. + +## Creating a report + +Log in to Expensify. + +Create a basic report: + +- **Department**: LFX + +Then move on to adding expenses: + +## Adding expenses + +Each receipt should have its own expense entry (on the **same** report). + +Here's some guidance on the inputs: + +- **Currency**: match the currency of the receipt. +- **Description**: The descriptions will be rendered publicly, but are + truncated, thus please prefix them with the most important info, e.g.: + - Report name: `(London) April 26 GraphQL Local` + - Receipt name: `(London) Pizzas` + - Receipt name: `(London) Drinks` + - Receipt name: `(London) Stickers` + - Report name: `(Ambassador) Amsterdam GraphQL Day` + - Receipt name: `(Ambassador) Outbound travel` + - Receipt name: `(Ambassador) 2 nights hotel stay` + - Receipt name: `(Ambassador) Return travel` + - Receipt name: `(Ambassador) Stickers` +- **Project**: "graphql" (**NOT** "GraphiQL") +- **Category**: whatever seems right to you. For flyers/stickers/swag use + "Marketing". For GraphQL Locals if in doubt use "Meetups". + +## Submitting your request + +1. Go to Settings > Account > Wallet and make sure you have linked a bank + account. +2. Submit the report to LFX: + - **CC**: be sure to include the list of email addresses you were given to CC + during the application process, or request that list if you do not have it. + - **Memo**: Same as description (e.g. "(Ambassador) Amsterdam GraphQL Day") + +## Getting paid + +Once a report is submitted, it will be validated by a member of the Linux +Foundation team. Unless added to the CC explicitly, the GraphQL Foundation +currently have no visibility into this process. + +Allow 30 days for payment to clear, longer in certain territories. If after 35 +days still no updates, applicant should use the "support" feature (modal?) +available from the report they have created through Expensify; this message will +then route to an admin to figure out why it went wrong. The GraphQL Foundation +can only offer limited help here, feel free to keep us in the loop but your +support requests should go through expensify. diff --git a/crowdfund/index.md b/crowdfund/index.md new file mode 100644 index 0000000..efef543 --- /dev/null +++ b/crowdfund/index.md @@ -0,0 +1,20 @@ +--- +title: Crowdfund +sidebar_position: 1 +--- + +The [GraphQL Crowdfund](https://fund.graphql.org/) can be found at +https://fund.graphql.org + +The crowdfund is shared across a number of GraphQL Foundation initiatives +including the Ambassador and Locals programs, and is funded by the GraphQL +Foundation and other supportive individuals and organizations from the GraphQL +Community. + +Since the crowdfund has a very limited budget, we ask that you're respectful of +the limited resources, help us to leverage them wisely, and always ask your +employer or other local companies for support before requesting from the shared +pot. + +To apply for funding, complete the +[application process](/crowdfund/application). diff --git a/docusaurus.config.ts b/docusaurus.config.ts index a94c15d..c7efd3a 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -76,6 +76,7 @@ const config: Config = { docs("wg"), docs("tsc"), docs("grants"), + docs("crowdfund"), ], themeConfig: { diff --git a/sidebars.crowdfund.ts b/sidebars.crowdfund.ts new file mode 100644 index 0000000..040e34d --- /dev/null +++ b/sidebars.crowdfund.ts @@ -0,0 +1,7 @@ +import type { SidebarsConfig } from "@docusaurus/plugin-content-docs"; + +const sidebars: SidebarsConfig = { + docs: [{ type: "autogenerated", dirName: "." }], +}; + +export default sidebars; diff --git a/src/pages/index.module.css b/src/pages/index.module.css index 27f1277..f7bd18a 100644 --- a/src/pages/index.module.css +++ b/src/pages/index.module.css @@ -30,16 +30,18 @@ } .overviewGrid { - display: grid; + display: flex; gap: 2rem; - grid-template-columns: repeat(auto-fit, minmax(22rem, 1fr)); + flex-wrap: wrap; margin-bottom: 2.5rem; - align-items: start; + align-items: stretch; + justify-content: space-around; } .handbookCard { + flex: 1 0 22rem; + max-width: 30rem; display: flex; - height: 100%; flex-direction: column; border: 2px solid #e10098; border-radius: 15px; diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 15d1a53..a2fc2cf 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -124,6 +124,17 @@ export default function Home(): ReactNode { releases and coordinating between projects.

+ +

+ The GraphQL Foundation supports many of its initiatives + through crowdfunding. Find out how to contribute to the fund, + and how to claim from it. +

+

💡 Community-maintained