koatty v3.12.0
Koatty π
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 π
Framework | Requests/sec | Latency | Memory Usage |
---|---|---|---|
Koatty | 13,321 | 1.43ms | 54MB |
Express | 12,456 | 1.45ms | 52MB |
NestJS | 11,892 | 1.51ms | 63MB |
Tested on AWS t3.micro with 100 concurrent connections
Documentation π
Quick Start β‘
- Install CLI:
npm install -g koatty_cli
- Create Project:
koatty new awesome-app
- Run Development Server:
cd awesome-app
npm run dev
Community π
Contributors β¨
Thanks to these amazing developers:
License π
BSD-3 Β© Koatty Team
4 months ago
7 months ago
6 months ago
7 months ago
6 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago