oRPC - Typesafe APIs Made Simple 🪄
Documentation
You can read the documentation here.
Packages
Core
| Package | Purpose | Docs | | -------------------------------------------------------------- | -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | @orpc/contract | Define API contract as the single source of truth. | Procedure Contract, Contract Router, Implementation, Generate from OpenAPI | | @orpc/server | Build APIs or implement contracts. | Procedure, Router, Middleware, Context, RPC Handler | | @orpc/client | Consume APIs with end-to-end type safety. | Client-Side Clients, Server-Side Clients, RPC Link, Error Handling | | @orpc/openapi | Add OpenAPI compatibility to APIs. | OpenAPI Handler, OpenAPI Link, Specification, Scalar |
Schema validation
| Package | Purpose | Docs | | ------------------------------------------------------------ | ---------------------------------------------------------- | ----------------------------------------------------- | | @orpc/zod | JSON Schema converter for Zod. | Zod | | @orpc/valibot | JSON Schema converter for Valibot. | Valibot | | @orpc/arktype | JSON Schema converter for ArkType. | ArkType |
Built-in features
| Package | Purpose | Docs | | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | | @orpc/publisher | Pub/Sub with memory, Redis, and Upstash adapters. | Publisher | | @orpc/ratelimit | Rate limiting with memory, Redis, and Upstash adapters. | Rate Limit | | @orpc/experimental-lock | Locking with memory, Redis, and Upstash adapters. | Lock | | @orpc/hibernation | Leverage Hibernation APIs like Cloudflare's Hibernation WebSocket. | Hibernation | | @orpc/json-schema | Smart coercion for OpenAPI requests. | Smart Coercion |
Framework & ecosystem integrations
| Package | Purpose | Docs | | ------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | @orpc/next | Integrate with Next.js Server Functions. | Next.js | | @orpc/ai-sdk | Turn contracts and procedures into AI SDK tools. | AI SDK | | @orpc/tanstack-query | Integrate with TanStack Query. | TanStack Query | | @orpc/pinia-colada | Integrate with Pinia Colada. | Pinia Colada | | @orpc/swr | Integrate with SWR. | SWR | | @orpc/experimental-msw | Mock procedures with Mock Service Worker. | MSW | | @orpc/experimental-effect | Integrate with Effect. | Effect | | @orpc/nest | Implement your contract with NestJS. | NestJS | | @orpc/node | Node.js plugins for static file serving and large uploads. | Static File, Tmp File Upload, Batch Response Compression | | @orpc/bun | Adapters for Bun's Redis. | Publisher, Rate Limit, Lock | | @orpc/cloudflare | Adapters for Cloudflare Workers. | Publisher, Rate Limit, Lock, Traces | | @orpc/trpc | Reuse existing tRPC routers within oRPC. | tRPC |
Observability
| Package | Purpose | Docs | | ------------------------------------------------------------------------ | ---------------------------------------------------------------------------------- | ----------------------------------------------------------------- | | @orpc/opentelemetry | Integrate with OpenTelemetry for distributed tracing. | OpenTelemetry | | @orpc/pino | Integrate with Pino for logging. | Pino | | @orpc/evlog | Integrate with Evlog for logging. | Evlog |
Sponsors
Like what we build over at middleapi? You can help keep it going through GitHub Sponsors or Open Collective. Every bit helps! 🚀
The screenshot API for developers |
We're hiring NYC based engineers |
MisskeyHQDecentralized microblogging SNS born on Earth |
Special Sponsors
Guillermo Rauch |
Premium Sponsors
Nexa |
Organization Sponsors
LN Markets |
Sponsors
Backers
With thanks to 38 past sponsors who helped get oRPC here.
References
oRPC is inspired by existing solutions that prioritize type safety and developer experience. Special acknowledgments to:
- tRPC: For pioneering the concept of end-to-end type-safe RPC and influencing the development of type-safe APIs.
- ts-rest: For its emphasis on contract-first development and OpenAPI integration, which have greatly inspired oRPC's feature set.
License
Distributed under the MIT License. See LICENSE for more information.
MisskeyHQ