Thank you for your interest in contributing to oRPC! We welcome all kinds of contributions: bug reports, feature requests, documentation improvements, and code enhancements.
If you need help or have questions, please join us on Discord.
This repository uses pnpm and pnpm workspaces to manage dependencies. We use Vitest for testing and ESLint with @antfu/eslint-config for linting and formatting.
- Fork: Fork the repository.
- Clone: Clone your fork.
- Install: Install dependencies.
pnpm install
- Branch: Create a new branch:
git checkout -b feature/your-feature
- Code: Make your changes.
- Test: Manually verify in a playground, e.g.:
cd playgrounds/nextjs pnpm dev - Tests: Add or update tests:
- Unit tests: add
.test-d.ts,.test.ts,.test.tsxfiles next to code. - E2E tests: place in
/testsunder the relevant package.
- Unit tests: add
- Commit & Push:
- Commit should follow the Conventional Commits Cheatsheet but not required because we usually use
Squash and Merge.
- Commit should follow the Conventional Commits Cheatsheet but not required because we usually use
- Pull Request: Open a PR against
main(or corresponding version branch).- our PR title should follow the Conventional Commits Cheatsheet, with scope corresponding to the package.
- In the description, summarize your changes and reference any related issue, e.g.,
Fixes #123.
- @orpc/shared — shared utilities and types.
- @orpc/client — core library, ORPCError, RPC serializers, RPC link,...
- @orpc/contract — contract definitions (input/output/errors/meta/route, contract builder).
- @orpc/server — contract implementer, procedure/router builder, procedure/router client, RPC handler, ...
- @orpc/openapi-client - OpenAPI serializers, OpenAPI Link, ...
- @orpc/openapi — OpenAPI Spec generator, OpenAPI handler, ...
- @orpc/standard-server* — environment adapters (
fetch,node, etc.). - playgrounds/ — example applications.
- apps/content/ - content, documentation, and website.
