Tea = the T of TypeScript. We build frameworks that are type-safe, honest about what your code does, and a pleasure to read. No hype — calm, precise tools.
A zen, opinionated, type-safe framework — your API is a graph, not a middleware chain.
You declare what each step needs and provides; the framework computes the order, type-checks the wiring, and can print the whole request before it runs. A handler that reads ctx.user won't compile if no step produces user — so "it was undefined in prod" disappears at compile time.
- The pipeline is a graph, not a chain — no positional ordering, each route runs only its slice.
- You can see the request —
app.explain(), a live/__graph__diagram, and an OpenAPI 3.1 projection from the same metadata. - Real-time as a primitive — SSE, ndjson, or WebSocket duplex; return an
AsyncIterableand backpressure is handled. - Runs everywhere — the same app on Node, Deno, Bun, and the edge; swap the entry point, nothing else.
Decorator-driven framework on Express — clean architecture, dependency injection, zero boilerplate.
Declare routes, modules, and middleware with decorators that do exactly what they say. Dependency injection is module-scoped and auto-wired; compose your app from mountable modules with their own controllers and providers.
- Decorator-first —
@Route,@Get,@Module; metadata over wiring. - Dependency injection — powered by InversifyJS, module-scoped.
- Type-safe, production-ready — TypeScript-first, built for
strictmode.
Both frameworks share one idea: Tea = the T of TypeScript.
- Expressive Tea = Express + TypeScript. A decorator does exactly what it says — zero repetition, shareable modules and plugins.
- Green Tea = Green, the color of calm, + the same T. Everything in-house; the pipeline is a graph, not a middleware chain.
Same family, same values — type safety you can read, and tools that are honest about what they do.
Brewed with 🍵 and TypeScript · That's the tea.
Hecho en México 🇲🇽