A TypeScript-based decorator-driven routing solution for Hono.js, inspired by routing-controllers, featuring dependency injection and middleware support.
Warning
⚠️ This project is currently under active development and not production-ready.
Expect breaking changes and missing features. Use at your own risk!
This is experimental software - not recommended for production use.
Current status: Proof of Concept stage. Core functionality is being validated.
- 🎯 Decorator-based route definitions (
@Controller,@Get,@Post, etc.) - 💉 Custom dependency injection container
- 🛡️ Middleware support
- 📜 TypeScript-first approach
- 🔌 External Hono instance integration
- Install the package:
pnpm install hono-routing-controllers- Install required peer dependencies:
pnpm install hono reflect-metadata- Add
reflect-metadataimport at the entry point of your application:
import 'reflect-metadata';- Its important to set these options in
tsconfig.jsonfile of your project:
{
"emitDecoratorMetadata": true,
"experimentalDecorators": true
}import { Controller, Get } from 'hono-routing-controllers';
import { Context } from 'hono';
@Controller('/users')
export class UserController {
@Get('/')
findAll(c: Context) {
return c.json([{ id: 1, name: 'John' }]);
}
}import { Hono } from 'hono';
import { useRoutingController } from 'hono-routing-controllers';
import { UserController } from './controllers/UserController';
const app = new Hono();
useRoutingController(app, {
controllers: [UserController]
});
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});| Decorator | Parameters | Description |
|---|---|---|
| @Controller | path: string | Class route prefix |
| @Get | path: string | GET route handler |
| @Post | path: string | POST route handler |
| @Put | path: string | PUT route handler |
| @Delete | path: string | DELETE route handler |
| @UseBefore | ...middlewares | Apply middleware(s) |
useRoutingController(
app: Hono,
options: {
controllers: Array<new () => any>
}
)pnpm run dev
pnpm run build
pnpm run test- ❌ Missing comprehensive test coverage
- ❌ API surface may change dramatically
- ❌ Documentation is incomplete
- ❌ Not security audited
- ❌ Performance not optimized
| Status | Feature |
|---|---|
| ✅ Done | Basic routing |
| 🟡 Partial | Middleware support |
| 🚧 WIP | Dependency injection |
| ❌ Todo | Error handling |
| ❌ Todo | Validation decorators |
-
Create your feature branch:
git checkout -b feature/AmazingFeature
-
Commit your changes:
git commit -m 'Add some AmazingFeature' -
Push to the branch:
git push origin feature/AmazingFeature
-
Open a Pull Request
- Stable core API
- Full test coverage
- Production readiness
Experimental Use Only
This package is shared for early feedback and collaborative development.
Not suitable for mission-critical applications. Breaking changes may occur without notice.
MIT © Hasibur Rahman