Skip to main content
nestrs keeps its core lean. Everything beyond the HTTP layer — caching, recurring tasks, queues, i18n, SQL databases, MongoDB, OpenAPI, and more — lives in optional feature flags or companion crates. You opt in explicitly: add the feature to Cargo.toml, import the matching module, and wire it into your #[module] declaration the same way you would any other provider.

Available modules

CacheModule

In-process key/value cache with optional TTL. Swap the in-memory backend for Redis by enabling the cache-redis feature. Exposes CacheService with get, set, del, and ttl operations.

ScheduleModule

Run cron jobs and interval tasks inside your process. Backed by tokio-cron-scheduler. Declare tasks with #[cron("...")] or #[interval(ms)] on a #[schedule_routes] impl block.

QueuesModule

In-process baseline queue (Bull-style API) under queues. For multi-instance production, enable queues-redis — durable Redis lists (LPUSH / BRPOP), not the BullMQ wire protocol. Declare processors with #[queue_processor("NAME")].

I18nModule

Locale-aware responses. Call NestApplication::use_i18n() to activate locale detection from query string or Accept-Language, then translate via catalogs in I18nService.

SqlxDatabaseModule

Direct SQLx access via AnyPool. Enables SqlxDatabaseService with a shared pool and a ping helper. Lighter than nestrs-prisma if you only need raw SQL.

nestrs-prisma

Prisma-style schema-driven access. Ships PrismaModule, PrismaService, and the prisma_model! macro for declarative repositories — no separate codegen step required.

MongoModule

Official mongodb driver integration. Bootstrap with MongoModule::for_root(uri) and inject MongoService to get typed collections and a ping helper.

nestrs-openapi

OpenAPI 3.1 JSON document and Swagger UI. Auto-discovers routes from the RouteRegistry. Customize with #[openapi(summary, tag, responses)] and OpenApiOptions.

nestrs-oauth2

OAuth2 client (authorization code + PKCE, client credentials, refresh) and a JWKS-backed resource server (JwtVerifier), plus social providers (Google / GitHub / Microsoft / Apple) and OAuth2Guard route protection. Enable the oauth2 feature on nestrs.

nestrs-storage

Multi-cloud object storage behind one Storage trait — Local filesystem, S3, GCS, and Azure Blob backends — with presigned-URL helpers and the #[upload_to] decorator.

Adapter crates

Socket.IO, Lambda, Passport, Better Auth, BullMQ, SAML, LDAP, and SeaORM — companion crates for NestJS surfaces that do not fold into Axum.

Feature flag reference

Add features to the nestrs dependency in your Cargo.toml. Features compose: you can combine any of them in a single project.
nestrs-prisma, nestrs-storage, and the adapter crates (nestrs-socketio, nestrs-lambda, nestrs-auth-strategy, nestrs-better-auth, nestrs-bullmq, nestrs-saml, nestrs-ldap, nestrs-sea-orm) are separate crates, not feature flags on nestrs. Add nestrs-prisma with one of sqlx-postgres, sqlx-mysql, or sqlx-sqlite. Add nestrs-storage with one of local, s3, gcs, azure, or all.

How to enable a module

All optional modules follow the same pattern: enable the Cargo feature, then import the DynamicModule result in #[module(imports = [...])].
Run nestrs-cli doctor in the CLI to check that your feature flags match what each module expects. Mismatched features usually produce “feature not enabled” link-time errors.