0.1.1 โ€ข Published 4 months ago

hono-routing-controller v0.1.1

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

Hono Routing Controllers

License: MIT

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!


๐Ÿšจ Important Notice

This is experimental software - not recommended for production use.
Current status: Proof of Concept stage. Core functionality is being validated.

Features

  • ๐ŸŽฏ Decorator-based route definitions (@Controller, @Get, @Post, etc.)
  • ๐Ÿ’‰ Custom dependency injection container
  • ๐Ÿ›ก๏ธ Middleware support
  • ๐Ÿ“œ TypeScript-first approach
  • ๐Ÿ”Œ External Hono instance integration

Installation

  1. Install the package:
pnpm install hono-routing-controllers
  1. Install required peer dependencies:
pnpm install hono reflect-metadata
  1. Add reflect-metadata import at the entry point of your application:
import 'reflect-metadata';
  1. Its important to set these options in tsconfig.json file of your project:
{
  "emitDecoratorMetadata": true,
  "experimentalDecorators": true
}

๐Ÿš€ Quick Start

1. Create Controller

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' }]);
    }
}

2. Initialize

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');
});

๐Ÿ“š API Reference

๐ŸŽจ Decorators

DecoratorParametersDescription
@Controllerpath: stringClass route prefix
@Getpath: stringGET route handler
@Postpath: stringPOST route handler
@Putpath: stringPUT route handler
@Deletepath: stringDELETE route handler
@UseBefore...middlewaresApply middleware(s)

โš™ Configuration

useRoutingController(
  app: Hono, 
  options: {
    controllers: Array<new () => any>
  }
)

๏ฟฝ Development

pnpm run dev
pnpm run build
pnpm run test

๐Ÿ›‘ Current Limitations

  • โŒ Missing comprehensive test coverage
  • โŒ API surface may change dramatically
  • โŒ Documentation is incomplete
  • โŒ Not security audited
  • โŒ Performance not optimized

๐Ÿงช Development Goals

StatusFeature
โœ… DoneBasic routing
๐ŸŸก PartialMiddleware support
๐Ÿšง WIPDependency injection
โŒ TodoError handling
โŒ TodoValidation decorators

๐Ÿค Contributing

Fork the repository

  1. Create your feature branch:

    git checkout -b feature/AmazingFeature
  2. Commit your changes:

    git commit -m 'Add some AmazingFeature'
  3. Push to the branch:

    git push origin feature/AmazingFeature
  4. Open a Pull Request

๐Ÿ“… Roadmap

  • 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.

๐Ÿ“„ License

MIT ยฉ Hasibur Rahman

0.1.1

4 months ago

0.1.0

5 months ago

0.0.3

5 months ago

0.0.2

5 months ago

0.0.1

5 months ago