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-metadata
import at the entry point of your application:
import 'reflect-metadata';
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