A comprehensive directory of funding mechanisms, apps, campaigns, research, and case studies for public goods funding in the Ethereum ecosystem.
This is the easiest way to contribute. The content is automatically formatted and validated.
-
Create a GitHub Issue using one of the templates:
-
Fill out the template with your content
- Add banner image under
## Banner Imagesection (if applicable) - Use the Chladni Particles generator. PressRto randomize. - Add logo image under
## Logosection (if applicable) - Fill in all metadata fields
- Write your content using markdown formatting
- Add banner image under
-
Preview your submission — a bot will comment on your issue with a preview link, or visit directly:
https://gitcoin.co/preview?issue=<issue-number>&type=<content-type> -
Publishing — a maintainer adds the
approvedlabel, which automatically creates a PR with your content. Alternatively, maintainers can publish manually:npm run publish-app <issue-number> npm run publish-mechanism <issue-number> npm run publish-research <issue-number> npm run publish-case-study <issue-number> npm run publish-campaign <issue-number>
Create markdown files directly in the content directories.
Directory Structure:
src/content/
├── apps/ # App submissions
├── mechanisms/ # Funding mechanisms
├── research/ # Research articles
├── case-studies/ # Case studies
└── campaigns/ # Funding campaigns/rounds
File Format:
---
# YAML frontmatter with metadata
title: "Your Title"
slug: "your-slug"
# ... other fields
---
Your content here in markdown format.See existing files in each directory for the exact frontmatter schema required.
Images for Manual Contributions:
Each content item has its own image folder at public/content-images/{category}/{slug}/:
public/content-images/
├── campaigns/
│ └── gg24-upcoming/
│ └── banner.svg # Banner/cover image
├── case-studies/
│ └── protocol-guild-ecosystem-funding/
│ └── banner.png
├── research/
│ └── ethereum-public-goods-funding-sources-the-next-era/
│ ├── banner.png # Banner image
│ ├── funding-sources.png # Inline image (named from alt text)
│ └── image-1.png # Inline image (auto-numbered)
├── apps/
│ └── gitcoin-grants-stack/
│ ├── banner.png
│ └── logo.png # Logo/icon (square format, white/negative version)
└── placeholder.png # Fallback image
- Banner:
public/content-images/{category}/{slug}/banner.{ext}— reference asbanner: "/content-images/{category}/{slug}/banner.png" - Logo:
public/content-images/{category}/{slug}/logo.png— reference aslogo: "/content-images/{category}/{slug}/logo.png"(white/negative version, PNG only) - Inline images: Same folder, named from alt text or numbered — reference as
 - Accepted formats: PNG, JPG (SVG not supported — banners and logos are used as OG images)
# Install dependencies
npm install
# One-time setup: install Playwright browser for banner generation
npx playwright install chromium
# Run development server
npm run dev
# Build for production
npm run buildPublishing (from GitHub Issues)
npm run publish-app <issue-number>- Create app from GitHub issuenpm run publish-mechanism <issue-number>- Create mechanism from GitHub issuenpm run publish-research <issue-number>- Create research from GitHub issuenpm run publish-case-study <issue-number>- Create case study from GitHub issuenpm run publish-campaign <issue-number>- Create campaign from GitHub issuenpm run publish-all- Publish all open GitHub issues at once
Banner generation
npm run banner:auto- Generate banners for all content files missing one (automated, headless)npm run banner:auto mechanisms- Generate banners for one content typenpm run banner:auto mechanisms quadratic-funding- Generate banner for a single itemnpm run banner:pick <content-type> <slug>- Open the Chladni generator interactively to pick a banner yourself
Other
npm run sync-docs- Sync content files from src/content to OpenAI vector store for AI chat
Banner Images (Optional)
- Dimensions: 1600x900px (16:9 aspect ratio) or 1200x600px (2:1 aspect ratio) recommended; 1800x600px (3:1) for sensemaking articles
- Where to add: Place under the
## Banner Imagesection in the GitHub issue template - Format: PNG or JPG only — SVG is not supported (banners are used as OG images)
- Used as the hero image at the top of content pages and for social media previews
- Generator: Chladni Particles — use
npm run banner:autoto generate automatically, ornpm run banner:pick <type> <slug>to pick one interactively
Logo Images (Optional)
- Dimensions: Square format recommended (e.g., 256x256px, 512x512px)
- Aspect ratio: 1:1 (square)
- Where to add: Place under the
## Logosection in the GitHub issue template - Format: PNG or JPG only — SVG is not supported (logos are used as OG images)
- Used for thumbnails, cards, and branding
Additional Images
- Can be added anywhere in the
## Descriptionsection - All images are automatically downloaded and optimized
- Image paths are automatically updated in the generated markdown
- Use markdown formatting in GitHub issues
- Supports standard markdown: headings, lists, links, code blocks
- Follow the enum values exactly (e.g.,
analysisnot'analysis') - Use slugs for references (e.g.,
quadratic-funding,gitcoin-grants-stack) - Dates in
YYYY-MM-DDformat
slug (all content types, optional)
- Override the auto-generated slug (which is derived from the issue title)
- Required when updating existing content to ensure the correct file is overwritten
- Example:
slug: quadratic-funding
featured (all content types, optional)
- Set
featured: trueto feature an item on the homepage - Featured apps and campaigns are displayed in their respective homepage sections
sensemakingFor (research only, optional)
- Marks a research article as a "sensemaking" piece for a specific category
- Valid values:
mechanisms,apps,campaigns,case-studies,research - Each category page displays its sensemaking article at the top in a dedicated section
- On the
/researchpage, sensemaking articles also appear in the normal grid - Banner images for sensemaking articles should use a wider 3:1 aspect ratio (e.g., 1800x600px)
- Example:
sensemakingFor: mechanisms