Thedecorator-drivenHTTP framework
Build structured, type-safe APIs with decorators, dependency injection, and Koa-style middleware - powered by Web Standards. Deploy to Bun, Deno, Node.js, or any serverless / edge platform.
Runs everywhere JavaScript runs
01 · Developer experience
Familiar patterns,
modern foundation
The architecture you know from Angular and NestJS - controllers, modules, DI, and Koa-style middleware - rebuilt from scratch on native decorators and Web Standards.
Decorators That Just Work
@Controller, @Get, @Injectable, @Module - the modern decorator standard. No reflect-metadata, no experimental flags, no setup.
Web Standards First
Request in, Response out. Your handlers receive standard web objects - no proprietary context, no framework lock-in.
Koa-Style Middleware
A single middleware concept replaces interceptors, pipes, and filters. Easier to learn, easier to compose.
@Controller('/users')
export class UserController {
private userService = inject(UserService)
@Get('/')
async list() {
return this.userService.findAll()
}
@Post('/')
@Status(201)
@ValidateBody(CreateUserSchema)
async create(ctx: RequestContext) {
const input = await ctx.json<CreateUserInput>()
return this.userService.create(input)
}
}
02 · Portability
One handler,
every platform
Inspired by Hono's multi-runtime philosophy. Write your API once and deploy it to any JavaScript runtime, serverless platform, or edge network.
True Portability
Bun, Deno, Node.js, Cloudflare Workers, AWS Lambda - same code, different entry point.
Modern JavaScript Only
Pure ESM, latest ECMAScript target. Clean imports, fast startup, works with modern tooling out of the box.
Serverless Ready
Use app.fetch as your handler - Cloudflare Workers, AWS Lambda, or any edge platform. Lazy init, zero overhead.
const app = new Miia().register(AppModule)
// Bun / Deno - auto-detected
await app.listen(3000)
// Node.js / uWebSockets.js
await app.listen(3000, serve)
// Cloudflare Workers
await app.init()
export default app
03 · Batteries included
Everything you need.
Nothing you don't.
Every tool you need to ship production APIs. Nothing you need to rip out later.
Simple Dependency Injection
Per-app container with inject() - no global singletons, no hidden magic. Singleton, transient, and request scopes built in.
Auth & Guards
JWT and local strategies with composable guards. Protect routes at any level - skip specific guards when needed.
Schema Validation
Validate request body, query, and params with any ZodLike schema. Type-safe from request to handler, errors handled automatically.
Database Ready
Official integrations for PostgreSQL, MySQL, and SQLite via Drizzle ORM, and MongoDB via Papr and Mongoose.
Swagger / OpenAPI
OpenAPI 3.1 spec auto-generated from your decorators. Swagger UI included and ready to serve.
Developer CLI
Dev server, production builds, type-checking, and project scaffolding - one tool for the full workflow.
faster than Hono
on Bun (realistic API)
faster than
NestJS + Fastify on Bun
reflect-metadata,
experimental flags, lock-in
Ready to build with
MiiaJS?
Start building in minutes. Open source, MIT licensed.