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