Contributing
How to contribute to Gryt
Prerequisites
- Node.js 18+ and Bun (client and server)
- Go 1.21+ (SFU)
- Docker (optional)
Setup
git clone --recurse-submodules https://github.com/YOUR_USERNAME/gryt.git
cd gryt
cd packages/client && bun install && cd ../..
cd packages/server && bun install && cd ../..
cd packages/sfu && go mod download && cd ../..
cd packages/docs && npm install && cd ../..Start everything:
ops/start_dev.shWorkflow
- Create an issue describing the bug or feature
- Fork the repo and create a branch
- Make changes and add tests
- Run lint and tests
- 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
gofmtformatting - Add godoc comments for exported functions
- Handle errors explicitly
// ProcessAudio applies the processing pipeline to the buffer.
func (p *AudioProcessor) ProcessAudio(buffer AudioBuffer) (AudioBuffer, error) {
// ...
}Testing
# Client
cd packages/client && bun test
# Server
cd packages/server && bun 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:
- Create
packages/site/content/blog/my-post.mdxwith frontmatter (title,author,date) - Place images in
packages/site/public/and reference them as - Run
npm run devinpackages/siteto preview
Pull request checklist
- Tests pass (
bun test,go test ./...) - Code is linted (
bun run lint,go fmt ./...) - Documentation is updated if needed
- No breaking changes (or clearly marked)
License
Contributions are licensed under the MIT License.