Files
pse.dev/content/projects/README.md
Kalidou Diagne 31763f7662 feat: PageSpeed Insights improvements (#545)
* feat: PageSpeed Insights improvements
2025-09-01 06:01:00 +02:00

6.7 KiB

How to Add a New Project to the Projects List

1. Create a New Project Markdown File:

  • Go to the /content/projects folder in your project.
  • Create a new file named [project-name].md
  • Use the _project-template.md file as your starting point

2. Add Project Frontmatter:

  • Open the newly created [project-name].md file.
  • Copy the frontmatter from _project-template.md and customize it with your project details:
---
# ========================================
# REQUIRED PROPERTIES
# ========================================
id: "your-project-id" # Unique project identifier (string)
name: "Your Project Name" # Project display name (string)
image: "/projects/your-project/cover.webp" # Project cover image path (string)
section: "pse" # Project section: "pse" | "grant" | "collaboration" | "archived"
projectStatus: "active" # Project status: "active" | "inactive" | "maintained"
tldr: "Brief project summary" # Short description of the project

# ========================================
# OPTIONAL PROPERTIES - Remove if not needed
# ========================================
category: "research" # Project category: "research" | "devtools" | "application"
license: "MIT" # Project license
tags: # Project tags
  keywords: ["tag1", "tag2", "tag3"] # Relevant keywords
  themes: ["privacy", "scalability"] # Project themes
  types: ["research", "development"] # Project types
  builtWith: ["typescript", "react"] # Technologies used
links: # Project links
  github: "https://github.com/org/repo"
  website: "https://project-website.com"
  discord: "https://discord.gg/invite"
team: # Project team members
  - name: "Team Member Name"
    role: "Developer" # (Optional)
    email: "member@example.com" # (Optional)
    image: "/team/member.webp" # (Optional)
    links: # Team member links
      github: "https://github.com/member"
      twitter: "https://twitter.com/member"
---

# Your Project Title

Your project content goes here using **Markdown** formatting.

Note: All properties in the frontmatter use YAML syntax. Remove any optional properties you don't need. The content below the frontmatter uses standard Markdown formatting.

3. Project Sections and Properties:

Required Properties:

  • id: Unique project identifier (kebab-case)
  • name: Display name of the project
  • image: Path to project cover image
  • section: Project category ("pse", "grant", "collaboration", "archived")
  • projectStatus: Current status ("active", "inactive", "maintained")
  • tldr: Brief one-line description

Optional Properties:

  • category: Project type ("research", "devtools", "application")
  • license: Project license (e.g., "MIT", "Apache-2.0")
  • hasWiki: Boolean for wiki page template
  • youtubeLinks: Array of YouTube video URLs
  • tags: Object with keywords, themes, types, builtWith, fundingSource arrays
  • links: Object with social/project links (github, website, discord, etc.)
  • extraLinks: Categorized action links (buildWith, play, research, learn)
  • team: Array of team member objects with name, role, email, image, links

That's it! Your new project will now be visible in the projects list.

Project Status Values

  • active: Currently being developed
  • inactive: Not actively maintained
  • maintained: Stable, receiving updates as needed

Project Categories

  • research: Research-focused projects
  • devtools: Developer tools and utilities
  • application: Application projects

Project Sections

  • pse: Privacy Stewards of Ethereum projects
  • grant: Grant-funded projects
  • collaboration: Collaborative projects
  • archived: Archived/historical projects

To add action links to your project page, use the extraLinks property in your frontmatter:

extraLinks:
  buildWith:
    - label: "Get Started Building"
      url: "https://github.com/org/repo#quick-start"
    - label: "API Documentation"
      url: "https://docs.example.com"
  play:
    - label: "Try the Demo"
      url: "https://demo.example.com"
    - label: "Interactive Tutorial"
      url: "https://tutorial.example.com"
  research:
    - label: "Read the Paper"
      url: "https://papers.example.com"
    - label: "Technical Specifications"
      url: "https://specs.example.com"
  learn:
    - label: "Documentation"
      url: "https://docs.example.com"
    - label: "Video Tutorials"
      url: "https://youtube.com/playlist"

This creates themed link sections on your project detail page:

Project links

Adding YouTube Videos to a Project

Add YouTube videos to your project by including a youtubeLinks array in the frontmatter:

youtubeLinks:
  - "https://www.youtube.com/watch?v=XXXXXXXXXXX"
  - "https://youtu.be/XXXXXXXXXXX"
  - "XXXXXXXXXXX" # Just the YouTube video ID

The videos will appear as clickable thumbnails with titles on the project page:

YouTube Videos

Adding Team Members to a Project

Add team members to your project using the team array in the frontmatter:

team:
  - name: "John Doe"
    role: "Lead Developer" # Optional
    image: "/team/john-doe.webp" # Optional
    email: "john.doe@example.com" # Optional
    links: # Optional
      github: "https://github.com/johndoe"
      twitter: "https://twitter.com/johndoe"
      website: "https://johndoe.dev"
      discord: "johndoe#1234"

Supported link types: github, website, discord, twitter, youtube, telegram

Project Team Members

Tags and Themes

The tags object supports several categories:

  • keywords: Technical keywords and concepts
  • themes: High-level project themes (privacy, scalability, etc.)
  • types: Project types (research, application, protocol, etc.)
  • builtWith: Technologies and tools used
  • fundingSource: Funding sources (pse, grants, etc.)
tags:
  keywords: ["MPC", "TypeScript", "privacy", "Garbled Circuits"]
  themes: ["privacy", "buildWith", "play", "research"]
  types: ["protocol", "toolkit"]
  builtWith: ["TypeScript", "Node.js", "React"]
  fundingSource: ["pse"]

Content Formatting

The content below the frontmatter supports full Markdown formatting including:

  • Headers (#, ##, ###)
  • Bold and italic text
  • Links
  • Lists (bulleted and numbered)
  • Code blocks with syntax highlighting
  • Tables
  • Images

Project Detail Page Features

Your markdown project file now supports:

  • Rich markdown content formatting
  • Embedded YouTube videos
  • Team member profiles with social links
  • Categorized action links
  • Responsive image handling
  • SEO-optimized metadata

Note: Keywords and themes are curated by the communications & design team. If you wish to add new ones, please create a PR for review.