Code-first full-stack TypeScript

One codebase. Typed end to end. Deployed in one command.

Fahhh turns a folder of API route files into a fully typed client, a route manifest, and deployable functions — automatically. No OpenAPI spec to maintain, no SDK to generate, no fetch() to write by hand.

npx create-fahhh myapp
Plain Vite
Compile-time inference
No generated SDK

Everything you need.
Nothing you don't.

Feature

Nothing to Commit

A typed client is generated automatically at build time from your real route files — gitignored, never hand-written, never committed to your repo.

Feature

File-System Routing

Your API routes are your endpoints. Nest files in your api folder and they become callable from the client the moment the dev server picks them up.

Feature

End-to-End Type Safety

Your client gets the exact types your server handlers declare — params, request body, and return value — inferred directly from real TypeScript. No schema library required.

Feature

Framework Agnostic Client

Works seamlessly with React, Vue, Svelte, or vanilla JS. If it speaks TypeScript, it speaks Fahhh.

Feature

First-class DX

Hover over any client call to see the exact response type — inferred straight from your real handler code, not a duplicated schema.

Feature

Lightweight & Fast

No bulky runtime on the client. Just a thin proxy wrapper around standard fetch calls, optimized for edge deployments.

Invisible RPC

Fahhh leverages TypeScript's module resolution to create a virtual API client. You get auto-completion and compile-time guarantees without writing fetch boilerplate.

src/api/users/index.ts
export async function GET() {
  return { id: 1 };
}
Type Inference
src/web/App.tsx
import api from "virtual:api"

const data =
 await api["/api/users"].GET()

// data is inferred as:
type Data = {
  id: number
};

How it compares

FeatureFahhhNext.jsExpresstRPC
Typed client includedYes, built-inNo (bring your own)NoYes, built-in
Routing paradigmFile-systemFile-systemManual (app.get/post)Object/procedure-based
Client code generationNone (inferred)N/AN/ANone (inferred)
Edge / Workers runtimeYes (Cloudflare adapter)Yes (platform edge runtime)No (Node-only, tied to http)Yes (via fetch adapter)

Ready to shape the future?

Fahhh is open-source and built for the community. Whether you're fixing a bug, adding a feature, or writing documentation, we'd love to have you on board.