Gryt

Contributing

How to contribute to Gryt

Prerequisites

  • Node.js 22+ and yarn
  • Go 1.21+ (SFU)
  • Docker (optional)

Setup

git clone --recurse-submodules https://github.com/YOUR_USERNAME/gryt.git
cd gryt

Install dependencies and start everything with the dev script:

ops/start_dev.sh

The script installs dependencies for all packages and starts the client, server, and SFU in development mode.

Workflow

  1. Create a feature request or a bug report
  2. Fork the repo and create a branch
  3. Make changes and add tests
  4. Run lint and tests
  5. Submit a pull request

Code style

TypeScript

  • Use strict mode
  • Follow ESLint and Prettier configs
  • Add JSDoc comments for public APIs
/**
 * Manages microphone input and audio processing.
 * @param shouldAccess - Whether to request microphone access
 */
const useMicrophone = (shouldAccess: boolean): MicrophoneState => {
  // ...
};

Go

  • Follow gofmt formatting
  • Add godoc comments for exported functions
  • Handle errors explicitly

Testing

# Client
cd packages/client && yarn test

# Server
cd packages/server && yarn test

# SFU
cd packages/sfu && go test ./...

Blog and site content

The marketing site and blog live in packages/site. Blog posts are MDX files in content/blog/ — see the Site docs for the full writing guide.

Quick steps to add a blog post:

  1. Create packages/site/content/blog/my-post.mdx with frontmatter (title, author, date)
  2. Place images in packages/site/public/ and reference them as ![alt](/filename.png)
  3. Run npm run dev in packages/site to preview

Pull request checklist

  • Tests pass (yarn test, go test ./...)
  • Code is linted (yarn lint, go fmt ./...)
  • Documentation is updated if needed
  • No breaking changes (or clearly marked)

License

Contributions are licensed under the AGPL-3.0. By submitting a pull request, you agree that your contributions will be licensed under the same terms.

On this page