GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com β€” GitHub - middleapi/orpc: Typesafe APIs Made Simple πŸͺ„

BranchesTags
Open more actions menu

Latest commit

 

History

2,038 Commits
2,038 Commits

Folders and files

NameName
Last commit message
Last commit date
.agents/skills
.agents/skills
 
 
.claude
.claude
 
 
.github
.github
 
 
.vscode
.vscode
 
 
.zed
.zed
 
 
apps/content
apps/content
 
 
benches
benches
 
 
packages
packages
 
 
playgrounds
playgrounds
 
 
scripts
scripts
 
 
skills
skills
 
 
tests
tests
 
 
.env.example
.env.example
 
 
.gitignore
.gitignore
 
 
AGENTS.md
AGENTS.md
 
 
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
SECURITY.md
SECURITY.md
 
 
oxfmt.config.ts
oxfmt.config.ts
 
 
oxlint.config.ts
oxlint.config.ts
 
 
package.json
package.json
 
 
pnpm-lock.yaml
pnpm-lock.yaml
 
 
pnpm-workspace.yaml
pnpm-workspace.yaml
 
 
skills-lock.json
skills-lock.json
 
 
tsconfig.json
tsconfig.json
 
 
tsconfig.lib.json
tsconfig.lib.json
 
 
tsdown.config.ts
tsdown.config.ts
 
 
vitest.config.ts
vitest.config.ts
 
 
vitest.javascript.ts
vitest.javascript.ts
 
 
vitest.jsdom.ts
vitest.jsdom.ts
 
 

Repository files navigation

oRPC - Typesafe APIs Made Simple πŸͺ„

codecov monthly downloads CodSpeed MIT License Discord Ask DeepWiki

oRPC is a TypeScript framework for building end-to-end typesafe APIs. Write your API once as plain TypeScript functions, and oRPC gives you a fully typed client, a REST API with an OpenAPI document, and MCP tools for AI agents, with no code generation. It runs on Node.js, Bun, Deno, Cloudflare Workers, and more.

Define procedures on the server and serve them with an RPC handler:

import { os } from '@orpc/server'
import * as z from 'zod'

export const router = {
  planet: {
    find: os
      .input(z.object({ id: z.number() }))
      .handler(({ input }) => ({ id: input.id, name: 'Earth' })),
  },
}

Then call them from a client that knows every input and output, without generating anything:

import { createORPCClient } from '@orpc/client'
import { RPCLink } from '@orpc/client/fetch'
import type { RouterClient } from '@orpc/server'

import type { router } from './router'

const link = new RPCLink({ origin: 'http://localhost:3000', url: '/rpc' })
const client: RouterClient<typeof router> = createORPCClient(link)

const planet = await client.planet.find({ id: 1 }) // { id: number, name: string }

Documentation

Read the full documentation at orpc.dev, starting with the Getting Started guide.

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/mcp Expose procedures as MCP tools. MCP
@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/msw Mock procedures with Mock Service Worker. MSW
@orpc/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! πŸš€

ScreenshotOne.comScreenshotOne.com
The screenshot API for developers
YuzuYuzu
We're hiring NYC based engineers
MisskeyHQMisskeyHQ
Decentralized microblogging SNS born on Earth

Organization Sponsors

LN Markets
LN Markets

Sponsors

Reece McDonald
Reece McDonald
あわわわとーにゅ
あわわわとーにゅ
nk
nk
supastarter
supastarter
herrfugbaum
herrfugbaum
Ryota Murakami
Ryota Murakami
David Cramer
David Cramer
Valerii Petryniak
Valerii Petryniak
Valerii Strilets
Valerii Strilets
Kyle Mistele
Kyle Mistele
christ12938
christ12938
Ryan Soderberg
Ryan Soderberg
shota
shota
Nicholas
Nicholas
Ellis Driscoll
Ellis Driscoll
Hoang Nguyen
Hoang Nguyen
Orestis Ioannou
Orestis Ioannou
Stefan Smiljkovic
Stefan Smiljkovic

Backers

David Walsh
David Walsh
IPv4Addr
IPv4Addr
Robbe Vaes
Robbe Vaes
Aidan Sunbury
Aidan Sunbury
soonoo
soonoo
Kevin Porten
Kevin Porten
Denis
Denis
Christopher Kapic
Christopher Kapic
Tom Ballinger
Tom Ballinger
Sam
Sam
Titoine
Titoine
Igor Makowski
Igor Makowski
hanayashiki
hanayashiki
Lev Dubinets
Lev Dubinets
Kelly Peilin Chan
Kelly Peilin Chan
Guy Ariely
Guy Ariely
PaulSenon
PaulSenon
Alex
Alex
Andrey Gubanov
Andrey Gubanov

With thanks to 40 past sponsors who helped get oRPC here.

Open Source Programs

middleapi is supported by these open source programs:

Claude
Claude
Pullfrog
Pullfrog

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.

About

Typesafe APIs Made Simple πŸͺ„

orpc.dev

Topics

apibunjscloudflare-workercontract-firstdenojsnext-jsnodejsopenapiopenapi3pinia-vuejsreactrpc-apisolidjssveltetanstacktypesafetypescriptvue

Resources

Readme
MIT license

Code of conduct

Code of conduct

Contributing

Contributing

Security policy

Security policy
Activity
Custom properties

Stars

5.8k stars

Watchers

11 watching

Forks

176 forks
Report repository

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

You are visitor 01402503 β€” GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800Γ—600. No cookies required.