A lightweight, TypeScript-first web framework for Bun.
- Controller-per-route HTTP architecture
- Global and named middleware (
before/afterhooks) - JWT authentication + policy-based authorization (
can:*) - Request validation with nested schema support
- Built-in rate limiting (pluggable stores)
- OpenAPI 3.1 generation from route metadata
- Request observability (correlation IDs, trace headers, timing)
- Cache abstraction with pluggable stores
- Queue core with retries, delay, and scheduling
- Event bus (
on,once,emit,emitSync) - Health checks (
/health,/health/ready,/health/live) - Plugin and service provider support
- Test helpers (
AppFactory,RequestClient, fake auth/time)
bun add katalimport{Application,Controller}from"katal";importtype{RequestContext}from"katal";constapp=newApplication({port: 3000});constrouter=app.getRouter();classHealthControllerextendsController{asynchandle(_ctx: RequestContext){returnthis.success({status: "ok"});}}router.get("/health",HealthController);awaitapp.listen();- Full docs: docs/index.md
- Getting started: docs/getting-started.md
- Core API: docs/CORE.md
- HTTP Controllers: docs/HTTP.md
- Middleware: docs/MIDDLEWARE.md
- Testing: docs/TESTING.md
Contributions are welcome. Please read CONTRIBUTING.md before opening a pull request.
This project is licensed under the MIT License. See LICENSE.