3.12.0 β€’ Published 4 months ago

koatty v3.12.0

Weekly downloads
177
License
BSD-3-Clause
Repository
github
Last release
4 months ago

Koatty πŸš€

npm version License

Koa2 + Typescript + IOC = koatty. Koatty is a progressive Node.js framework for building efficient and scalable server-side applications. Perfect for crafting enterprise-level APIs, microservices, and full-stack applications with TypeScript excellence.

Why Koatty? πŸ’‘

  • πŸš„ High Performance: Built on top of Koa2 with optimized architecture
  • 🧩 Full-Featured: Supports gRPC, HTTP, WebSocket, Schedule tasks, and more
  • 🧠 TypeScript First: Native TypeScript support with elegant OOP design
  • πŸŒ€ Spring-like IOC Container: Powerful dependency injection system with autowiring
  • βœ‚οΈ AOP Support: Aspect-oriented programming with decorator-based interceptors
  • πŸ”Œ Extensible Architecture: Plugin system with dependency injection
  • πŸ“¦ Modern Tooling: CLI scaffolding, testing utilities, and production-ready configs
  • 🌐 Protocol Agnostic: Write once, deploy as HTTP/gRPC/WebSocket services

New features ✨

  • HTTP、HTTPS、HTTP2、gRPC、WebSocket server.βœ”οΈ
  • Support loading configurations based on the environment, support command-line argument parsing(process.argv), and support environment variable parsing(process.env).βœ”οΈ
  • @ExceptionHandler() Register global exception handling.βœ”οΈ
  • Graceful shutdown and pre-exit event.βœ”οΈ
  • Supports custom decorators, bound to app events for execution.βœ”οΈ
  • GraphQL supporting. βœ”οΈ
  • OpenTelemetry . πŸ’ͺ

Core Features ✨

πŸ“‘ Multi-Protocol Support

// config/config.ts
export default {
  ...
  protocol: "grpc", // Server protocol 'http' | 'https' | 'http2' | 'grpc' | 'ws' | 'wss'
  ...
}

πŸ’‰ Dependency Injection

@Service()
export class UserService {
  async findUser(id: number) {
    return { id, name: 'Koatty User' };
  }
}

@Controller()
export class IndexController {
    app: App;
    ctx: KoattyContext;
    ...

    @Autowired()
    private userService: UserService;

    async test(id: number) {
        const info = await this.userService.findUser(id);
        ...
    }
}

βœ‚οΈ Aspect-Oriented Programming

@Aspect()
export class LogAspect implements IAspect {
  app: App;

  run() {
    console.log('LogAspect');
  }
}

// Apply aspect to controller
@Controller()
@BeforeEach(LogAspect)
export class UserController {}

πŸ”Œ Plugin System

// plugin/logger.ts
export class LoggerPlugin implements IPlugin {
  app: App;

  run() {
    // todo something or hook on app.event
    Logger.Debug("LoggerPlugin");
    return Promise.resolve();
  }
}

Benchmarks πŸ“Š

FrameworkRequests/secLatencyMemory Usage
Koatty13,3211.43ms54MB
Express12,4561.45ms52MB
NestJS11,8921.51ms63MB

Tested on AWS t3.micro with 100 concurrent connections

Documentation πŸ“š

Quick Start ⚑

  1. Install CLI:
npm install -g koatty_cli
  1. Create Project:
koatty new awesome-app
  1. Run Development Server:
cd awesome-app
npm run dev

Community 🌍

Contributors ✨

Thanks to these amazing developers:

License πŸ“„

BSD-3 Β© Koatty Team

3.12.0

4 months ago

3.11.6

7 months ago

3.11.8

6 months ago

3.11.7

7 months ago

3.11.9

6 months ago

3.11.4-2

1 year ago

3.11.4-1

1 year ago

3.11.4-0

1 year ago

3.11.3

1 year ago

3.11.2

1 year ago

3.11.2-8

1 year ago

3.11.2-7

1 year ago

3.11.2-6

2 years ago

3.11.2-5

2 years ago

3.11.2-3

2 years ago

3.11.2-2

2 years ago

3.11.2-1

2 years ago

3.11.2-0

2 years ago

3.11.0

2 years ago

3.11.1

2 years ago

3.10.4-5

2 years ago

3.10.4-4

2 years ago

3.10.4

2 years ago

3.10.4-3

2 years ago

3.10.4-2

2 years ago

3.10.4-1

2 years ago

3.10.4-0

2 years ago

3.10.3

2 years ago

3.10.3-0

2 years ago

3.10.1

2 years ago

3.10.0

2 years ago

3.10.2

2 years ago

3.10.2-4

2 years ago

3.10.2-3

2 years ago

3.10.2-0

2 years ago

3.10.2-2

2 years ago

3.10.2-1

2 years ago

3.9.5

2 years ago

3.9.3

2 years ago

3.9.2

2 years ago

3.9.4

2 years ago

3.9.1-2

2 years ago

3.9.1-3

2 years ago

3.9.1-0

2 years ago

3.9.1-1

2 years ago

3.9.1

2 years ago

3.8.3

2 years ago

3.8.2

2 years ago

3.7.9

2 years ago

3.7.8

2 years ago

3.7.7

2 years ago

3.7.6

3 years ago

3.8.0-6

2 years ago

3.8.0-0

2 years ago

3.8.0-1

2 years ago

3.8.0-2

2 years ago

3.8.0-3

2 years ago

3.8.0-4

2 years ago

3.8.0-5

2 years ago

3.7.1

3 years ago

3.7.0

3 years ago

3.7.4

3 years ago

3.7.3

3 years ago

3.7.2

3 years ago

3.6.10

3 years ago

3.6.10-0

3 years ago

3.6.10-1

3 years ago

3.6.9

3 years ago

3.6.8

3 years ago

3.6.8-0

3 years ago

3.6.8-2

3 years ago

3.6.7

3 years ago

3.6.6

3 years ago

3.6.5

3 years ago

3.6.4

3 years ago

3.6.3

3 years ago

3.5.12-1

4 years ago

3.5.12-0

4 years ago

3.5.12-3

4 years ago

3.5.12-2

4 years ago

3.6.0-0

3 years ago

3.6.0-1

3 years ago

3.5.14

3 years ago

3.5.12

4 years ago

3.5.11

4 years ago

3.5.10

4 years ago

3.5.16

3 years ago

3.5.15

3 years ago

3.6.2

3 years ago

3.6.0

3 years ago

3.5.3

4 years ago

3.5.2

4 years ago

3.5.7

4 years ago

3.5.5

4 years ago

3.5.9

4 years ago

3.4.10

4 years ago

3.4.12

4 years ago

3.4.4

4 years ago

3.4.2

4 years ago

3.4.8

4 years ago

3.4.6

4 years ago

3.3.8

4 years ago

3.3.7

4 years ago

3.3.6

4 years ago

3.3.4

4 years ago

3.3.3

4 years ago

3.3.1

4 years ago

3.3.2

4 years ago

3.3.0

4 years ago

3.2.12

4 years ago

3.2.11

4 years ago

3.2.10

4 years ago

3.2.7

4 years ago

3.2.6

4 years ago

3.2.4

4 years ago

3.2.2

4 years ago

3.2.1

4 years ago

3.2.0

5 years ago

3.0.14

5 years ago

3.1.0

5 years ago

3.0.12

5 years ago

3.0.9

5 years ago

3.0.8

5 years ago

3.0.7

5 years ago

3.0.6

5 years ago

3.0.4

5 years ago

3.0.0

5 years ago

2.6.8

5 years ago

2.6.7

5 years ago

2.6.6

5 years ago

2.6.5

5 years ago

2.6.3

5 years ago

2.6.4

5 years ago

2.6.2

5 years ago

2.5.12

5 years ago

2.5.11

5 years ago

2.5.10

5 years ago

2.5.8

5 years ago

2.5.7

5 years ago

2.5.6

5 years ago

2.5.5

5 years ago

2.5.4

5 years ago

2.5.3

5 years ago

2.5.2

5 years ago

2.5.1

5 years ago

2.5.0

5 years ago

2.4.0

5 years ago

2.3.5

5 years ago

1.22.3

5 years ago

2.3.4

5 years ago

2.3.3

5 years ago

1.22.2

5 years ago

2.3.2

5 years ago

2.3.1

5 years ago

1.22.1

5 years ago

1.21.4

5 years ago

1.21.3

5 years ago

2.3.0

5 years ago

2.2.2

5 years ago

1.22.0

5 years ago

2.2.1

5 years ago

2.2.0

5 years ago

2.1.0

5 years ago

2.0.2

5 years ago

2.0.4

5 years ago

2.0.1

5 years ago

2.0.0

5 years ago

1.21.2

5 years ago

1.21.1

5 years ago

1.21.0

5 years ago

1.20.19

5 years ago

1.20.20

5 years ago

1.20.18

5 years ago

1.20.17

5 years ago

1.20.16

5 years ago

1.20.15

5 years ago

1.20.14

5 years ago

1.20.13

5 years ago

1.20.12

5 years ago

1.20.11

5 years ago

1.20.10

5 years ago

1.20.9

5 years ago

1.20.8

5 years ago

1.20.7

5 years ago

1.20.5

5 years ago

1.20.4

5 years ago

1.20.3

5 years ago

1.20.2

5 years ago

1.20.1

5 years ago

1.20.0

5 years ago

1.19.3

5 years ago

1.19.2

5 years ago

1.19.0

5 years ago

1.18.12

5 years ago

1.18.11

5 years ago

1.18.10

5 years ago

1.18.9

5 years ago

1.18.8

5 years ago

1.18.7

5 years ago

1.18.6

5 years ago

1.18.5

5 years ago

1.18.2

5 years ago

1.18.1

5 years ago

1.18.0

5 years ago

1.17.7

5 years ago

1.17.6

5 years ago

1.17.4

5 years ago

1.17.3

5 years ago

1.17.2

5 years ago

1.17.0

5 years ago

1.16.0

5 years ago

1.15.4

5 years ago

1.15.3

5 years ago

1.15.2

5 years ago

1.15.1

5 years ago

1.15.0

5 years ago

1.14.10

5 years ago

1.14.9

5 years ago

1.14.8

5 years ago

1.14.6

5 years ago

1.14.5

5 years ago

1.14.4

5 years ago

1.14.1

5 years ago

1.14.0

5 years ago

1.14.2

5 years ago

1.13.2

6 years ago

1.13.3

6 years ago

1.12.11

6 years ago

1.13.0

6 years ago

1.12.10

6 years ago

1.12.9

6 years ago

1.12.8

6 years ago

1.12.7

6 years ago

1.12.6

6 years ago

1.12.5

6 years ago

1.12.4

6 years ago

1.12.3

6 years ago

1.12.2

6 years ago

1.12.1

6 years ago

1.12.0

6 years ago

1.11.2

6 years ago

1.11.1

6 years ago

1.11.0

6 years ago

1.10.1

6 years ago

1.10.0

6 years ago

1.9.1

6 years ago

1.9.0

6 years ago

1.8.1

6 years ago

1.8.0

6 years ago

1.7.5

6 years ago

1.7.4

6 years ago

1.7.3

6 years ago

1.7.2

6 years ago

1.7.0

6 years ago

1.6.13

6 years ago

1.6.12

6 years ago

1.6.10

6 years ago

1.6.8

6 years ago

1.6.7

6 years ago

1.6.6

6 years ago

1.6.5

6 years ago

1.6.3

6 years ago

1.6.2

6 years ago

1.6.1

6 years ago

1.6.0

6 years ago

1.5.0

6 years ago

1.4.6

6 years ago

1.4.5

6 years ago

1.4.4

6 years ago

1.4.3

6 years ago

1.4.2

6 years ago

1.4.0

6 years ago

1.3.14

6 years ago

1.3.12

6 years ago

1.3.10

6 years ago

1.3.9

6 years ago

1.3.8

6 years ago

1.3.4

6 years ago

1.3.3

6 years ago

1.3.2

6 years ago

1.3.1

6 years ago

1.3.0

6 years ago

1.2.3

6 years ago

1.2.2

6 years ago

1.2.1

6 years ago

1.2.0

6 years ago

1.1.2

6 years ago

1.1.1

6 years ago

1.1.0

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago

0.0.10

6 years ago

0.0.9

6 years ago

0.0.8

6 years ago

0.0.7

6 years ago

0.0.6

6 years ago

0.0.5

6 years ago

0.0.4

6 years ago

0.0.3

6 years ago

0.0.2

6 years ago

0.0.1

6 years ago