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 | Integrate with Zod. | Zod |
| @orpc/valibot | Integrate with Valibot. | Valibot |
| @orpc/arktype | Integrate with 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
Organization Sponsors
Sponsors
Backers
With thanks to 36 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