# oRPC > Typesafe APIs Made Simple 🪄 Easy to build APIs that are end-to-end type-safe and adhere to OpenAPI standards ## Table of Contents ### Getting Started ### Procedure ### Router ### Middleware ### Context ### Error Handling ### File Upload/Download ### Event Iterator (SSE) ### Server Action ### Metadata ### RPC Handler ### Lifecycle ### OpenAPI ### Contract First - [Define Contract](/docs/contract-first/define-contract.md): Learn how to define a contract for contract-first development in oRPC - [Implement Contract](/docs/contract-first/implement-contract.md): Learn how to implement a contract for contract-first development in oRPC ### Integrations - [Fetch Server Integration](/docs/integrations/fetch-server.md): Integrate oRPC with the modern Fetch API Server - [Node Integration](/docs/integrations/node.md): Integrate oRPC with Node's built-in HTTP server - [Bun Integration](/docs/integrations/bun.md): Integrate oRPC with Bun's built-in HTTP server - [Cloudflare Workers Integration](/docs/integrations/cloudflare-workers.md): Integrate oRPC with Cloudflare Workers - [Deno Integration](/docs/integrations/deno.md): Integrate oRPC with Deno's built-in HTTP server - [Express.js Integration](/docs/integrations/express.md): Seamlessly integrate oRPC with Express.js - [Next.js Integration](/docs/integrations/nextjs.md): Seamlessly integrate oRPC with Next.js - [Nuxt.js Integration](/docs/integrations/nuxt.md): Integrate oRPC with Nuxt.js - [Hono Integration](/docs/integrations/hono.md): Integrate oRPC with Hono - [TanStack Start Integration](/docs/integrations/tanstack-start.md): Integrate oRPC with TanStack Start - [Elysia Integration](/docs/integrations/elysia.md): Integrate oRPC with Elysia - [SvelteKit Integration](/docs/integrations/svelte-kit.md): Integrate oRPC with SvelteKit - [Remix Integration](/docs/integrations/remix.md): Integrate oRPC with Remix - [SolidStart Integration](/docs/integrations/solid-start.md): Integrate oRPC with SolidStart - [React Native Integration](/docs/integrations/react-native.md): Seamlessly integrate oRPC with React Native ### Plugins - [CORS Plugin](/docs/plugins/cors.md): CORS Plugin for oRPC - [Response Headers Plugin](/docs/plugins/response-headers.md): Response Headers Plugin for oRPC - [Batch Request/Response Plugin](/docs/plugins/batch-request-response.md): A plugin for oRPC to batch requests and responses. - [Client Retry Plugin](/docs/plugins/client-retry.md): A plugin for oRPC that enables retrying client calls when errors occur. - [Body Limit Plugin](/docs/plugins/body-limit.md): A plugin for oRPC to limit the request body size. - [Simple CSRF Protection Plugin](/docs/plugins/simple-csrf-protection.md): Add basic Cross-Site Request Forgery (CSRF) protection to your oRPC application. It helps ensure that requests to your procedures originate from JavaScript code, not from other sources like standard HTML forms or direct browser navigation. - [Strict GET Method Plugin](/docs/plugins/strict-get-method.md): Enhance security by ensuring only procedures explicitly marked to accept `GET` requests can be called using the HTTP `GET` method for RPC Protocol. This helps prevent certain types of Cross-Site Request Forgery (CSRF) attacks. ### Client - [Server-Side Clients](/docs/client/server-side.md): Call your oRPC procedures in the same environment as your server like native functions. - [Client-Side Clients](/docs/client/client-side.md): Call your oRPC procedures remotely as if they were local functions. - [Error Handling in oRPC Clients](/docs/client/error-handling.md): Learn how to handle errors in a type-safe way in oRPC clients. - [Event Iterator in oRPC Clients](/docs/client/event-iterator.md): Learn how to use event iterators in oRPC clients. - [RPCLink](/docs/client/rpc-link.md): Details on using RPCLink in oRPC clients. - [DynamicLink](/docs/client/dynamic-link.md): Dynamically switch between multiple oRPC's links. ### Tanstack Query - [Tanstack Query Integration](/docs/tanstack-query/basic.md): Seamlessly integrate oRPC with Tanstack Query - [Tanstack Query Integration For React](/docs/tanstack-query/react.md): Seamlessly integrate oRPC with Tanstack Query for React - [Tanstack Query Integration For Vue](/docs/tanstack-query/vue.md): Seamlessly integrate oRPC with Tanstack Query for Vue - [Tanstack Query Integration For Solid](/docs/tanstack-query/solid.md): Seamlessly integrate oRPC with Tanstack Query for Solid - [Tanstack Query Integration For Svelte](/docs/tanstack-query/svelte.md): Seamlessly integrate oRPC with Tanstack Query for Svelte ### Best Practices - [Dedupe Middleware](/docs/best-practices/dedupe-middleware.md): Enhance oRPC middleware performance by avoiding redundant executions. - [No Throw Literal](/docs/best-practices/no-throw-literal.md): Always throw `Error` instances instead of literal values. - [Optimize Server-Side Rendering (SSR) for Fullstack Frameworks](/docs/best-practices/optimize-ssr.md): Optimize SSR performance in Next.js, SvelteKit, and other frameworks by using oRPC to make direct server-side API calls, avoiding unnecessary network requests. ### Advanced - [Validation Errors](/docs/advanced/validation-errors.md): Learn about oRPC's built-in validation errors and how to customize them. - [RPC Protocol](/docs/advanced/rpc-protocol.md): Learn about the RPC protocol used by RPCHandler. - [RPC JSON Serializer](/docs/advanced/rpc-json-serializer.md): Extend or override the standard RPC JSON serializer. - [Mocking](/docs/advanced/mocking.md): Easily mock your oRPC handlers for testing. - [Exceeds the Maximum Length Problem](/docs/advanced/exceeds-the-maximum-length-problem.md): How to address the Exceeds the Maximum Length Problem in oRPC. - [SuperJson](/docs/advanced/superjson.md): Replace the default oRPC RPC serializer with SuperJson. ### Others - [Pinia Colada Integration](/docs/pinia-colada.md): Seamlessly integrate oRPC with Pinia Colada - [Playgrounds](/docs/playgrounds.md): Interactive development environments for exploring and testing oRPC functionality. - [Comparison](/docs/comparison.md): How is oRPC different from other RPC or REST solutions? - [Ecosystem](/docs/ecosystem.md): oRPC ecosystem & community resources ### Getting Started ### Routing ### Input/Output Structure ### Error Handling ### Bracket Notation ### OpenAPI Handler ### OpenAPI Specification ### Scalar (Swagger) ### Plugins - [OpenAPI Reference Plugin (Swagger/Scalar)](/docs/openapi/plugins/openapi-reference.md): A plugin that serves API reference documentation and the OpenAPI specification for your API. - [Zod Smart Coercion](/docs/openapi/plugins/zod-smart-coercion.md): A refined alternative to `z.coerce` that automatically converts inputs to the expected type without modifying the input schema. ### Client - [OpenAPILink](/docs/openapi/client/openapi-link.md): Details on using OpenAPILink in oRPC clients. ### Advanced - [Redirect Response](/docs/openapi/advanced/redirect-response.md): Standard HTTP redirect response in oRPC OpenAPI. - [OpenAPI JSON Serializer](/docs/openapi/advanced/openapi-json-serializer.md): Extend or override the standard OpenAPI JSON serializer. ### OpenAI Streaming ### V1 Announcement ### Other - [oRPC - Typesafe APIs Made Simple 🪄](/index.md): Easy to build APIs that are end-to-end type-safe and adhere to OpenAPI standards