Teakit

HTTP services made for humans

Build TypeScript services with route handlers that return plain values, schemas that infer contracts, and plugins that compose without surprise.

server.ts
typed route
import { Application, t } from "@teakit/core"; const app = new Application()  .get("/", () => "Hello World")  .post("/profile", ({ body }) => body, {    body: t.Object({      username: t.String(),    }),  })  .listen(3000);

A tiny surface for serious service work

Teakit keeps the API compact while still covering schemas, lifecycle hooks, plugins, OpenAPI docs, WebSockets, tests, and custom parsers.

DX 1

Made for Humans

A small, fully typed API keeps routes, plugins, schemas, and handlers predictable across a growing service.

Return 2

Just function

Return a string, object, file, redirect, or error from the handler and let the framework shape the response.

Types 3

End-to-end safety

Infer server contracts into clients so TypeScript catches mismatches before the request is sent.

Contract

From server route to typed client call

Use route schemas on the server, export the application type, and let client calls stay aligned with the same contract.

Read kernels docs

client.ts

import { edenTreaty } from "@teakit/eden";import type { App } from "./server"; const eden = edenTreaty<App>("http://localhost");await eden.user.age.patch({  name: "saltyaom",  age: 21,});

Plugins

Compose only what the service needs

Plugin catalog
docs
cookie
cors
cron
helmet
logging
session
jwt
oauth2
crud
trpc
static
01

Describe the route

Use Application to define HTTP methods, path parameters, groups, guards, schemas, and lifecycle hooks.

02

Attach behavior

Compose plugins for docs, cookies, CORS, logging, auth, GraphQL, static files, sessions, and more.

03

Ship the contract

Generate OpenAPI specs or share the application type with Eden clients for one connected type system.

Start with one route, grow into a system

Teakit keeps the first handler tiny and the later service understandable, with typed contracts and plugin boundaries carrying the weight.