Skip to content

nestelia

nestelia — это модульный фреймворк на основе декораторов, построенный поверх Elysia и Bun. Он предоставляет decorators, dependency injection, modules и lifecycle hooks для создания структурированных серверных приложений.

WARNING

nestelia находится в стадии активной разработки. API может измениться до выхода стабильного релиза.

Зачем nestelia?

Elysia — один из самых быстрых HTTP-фреймворков, нативных для Bun. nestelia добавляет поверх него структурированную модульную архитектуру — без потери производительности Elysia.

  • Decorators@Controller, @Get, @Post, @Body, @Param и другие
  • Dependency Injection — constructor-based DI со scope-ами singleton, transient и request
  • Modules — объединяют controllers, providers и imports в целостные единицы
  • Lifecycle HooksOnModuleInit, OnApplicationBootstrap, OnModuleDestroy и другие
  • Guards, Interceptors, Pipes — расширяемость конвейера обработки запросов
  • Middleware — поддержка class-based и функционального middleware
  • Exception Handling — встроенные HTTP-исключения с автоматическими ответами об ошибках
  • TypeBox validation — валидация запросов на основе схем через нативную интеграцию TypeBox в Elysia

Пакеты

Помимо ядра, nestelia поставляется с набором опциональных пакетов:

ПакетОписание
nestelia/schedulerCron-задачи, интервалы и таймауты
nestelia/microservicesТранспорты Redis, RabbitMQ, TCP
nestelia/apolloCode-first интеграция с Apollo GraphQL
nestelia/passportСтратегии аутентификации Passport.js
nestelia/testingИзолированные тестовые модули с подменой providers
nestelia/cacheКэширование HTTP-ответов с декораторами
nestelia/rabbitmqРасширенный обмен сообщениями через RabbitMQ
nestelia/graphql-pubsubRedis PubSub для GraphQL subscriptions

Быстрый пример

typescript
import { createElysiaApplication, Controller, Get, Module, Injectable, Inject } from "nestelia";

@Injectable()
class GreetService {
  hello() {
    return { message: "Hello from nestelia!" };
  }
}

@Controller("/greet")
class GreetController {
  constructor(@Inject(GreetService) private greet: GreetService) {}

  @Get("/")
  sayHello() {
    return this.greet.hello();
  }
}

@Module({
  controllers: [GreetController],
  providers: [GreetService],
})
class AppModule {}

const app = await createElysiaApplication(AppModule);
app.listen(3000);

Claude Code Skill

Для nestelia доступен skill Claude Code. Он предоставляет шаблоны для скаффолдинга, примеры использования decorators и лучшие практики прямо в вашем AI-ассистенте.

bash
npx skills add nestelia/nestelia

После установки Claude Code будет автоматически использовать корректные паттерны при работе с nestelia.

Следующие шаги

  • Установка — установите nestelia и необходимые peer dependencies.
  • Быстрый старт — создайте своё первое CRUD-приложение за 5 минут.
  • Modules — узнайте, как modules организуют ваше приложение.
  • Dependency Injection — constructor-based DI с несколькими scope-ами.

Распространяется по лицензии MIT.