sinclairnick / webroute

πŸ•ΈοΈ Web APIs, from the route up
https://webroute.vercel.app/docs
MIT License
55 stars 2 forks source link
client http openapi schema trpc typescript web web-standards

Webroute

Web APIs, from the route-up.

Docs Quick Start Route Client OpenAPI

Overview

Webroute helps you build self-sufficient, web-standard routes that have everything they need: path, method, I/O shape and validation, middleware and request handler.

It was invented to make building sophisticated APIs easier in the diverse ecosystem of serverless (but also serverful) full-stack and backend development.

Inspiration

Webroute was heavily inspired by tRPC, but built specifically for HTTP. So if you're a fan of either, you'll probably like webroute.

Features

Example Usage

A basic webroute might look something like this:

import { route } from "@webroute/route";

const myRoute = route("/user/:id")
  .use(authMiddleware)
  .params(z.object({ id: z.string() }))
  .handle(async (req) => {
    // ...do work
  });

Which is just a regular web-standard request handler:

const response = myRoute(new Request("..."));

Being web-standard and self-sufficient, it can be used directly, with no modification, with popular frameworks like Next.js, and Hono or within runtimes like bun, deno and node.

Read the Quick Start.

What's in the box?

Webroute provides the functionality of a full-blown framework, without being one. Instead, it offers a handful of packages which can be selectively installed to fill in the gaps, when your use case requires it.

Webroute is "full-stack", in the sense it provides utilities and patterns for both the client-side and server-side. However, these client- and server-side tools are not dependent on the other - one can be used without the other.

Compatibility

Webroute works with all runtimes or frameworks that conform to the WinterCG Minimum Web Standard.

Frameworks

Runtimes