Skip to content

sinclairnick/webroute

Repository files navigation

Webroute

Web APIs, from the route-up.

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

  • 👋 Unopinionated and minimal API, by design
  • 🔒 End-to-end type safety (including middleware)
  • ✅ First-class validation and schema support
  • 🕸️ HTTP based
  • 🚏 Works well with serverless routes
  • 🐳 ...or monolithic backends

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

  • Hono
  • Next.js
  • Remix
  • SolidStart
  • SvelteKit

Runtimes

  • Bun
  • Deno
  • Node (via adapter)
  • Cloudflare Workes
  • Vercel Edge