---
title: "NestJS"
description: "Compose Playstack capabilities through explicit NestJS modules, guards, decorators, and lifecycle bindings."
tags: ["frameworks","nestjs","api","dependency-injection"]
---

Playstack NestJS packages adapt portable capabilities to dependency injection, request metadata, guards, controllers, workers, and application lifecycle. They do not move domain policy into decorators or silently register global behavior.

[Start with the NestJS guide](/docs/frameworks/nestjs/getting-started) to compose authentication, account scope, and entitlements in their required request order.

## Available NestJS bindings

| Area | NestJS binding | Portable capability |
| --- | --- | --- |
| Errors | [`@playstack/nest-errors`](/docs/packages/foundation/nest-errors) | [`@playstack/errors`](/docs/packages/foundation/errors) |
| Authentication | [`@playstack/nest-auth`](/docs/packages/identity/nest-auth) | [`@playstack/auth`](/docs/packages/identity/auth) |
| Account scope | [`@playstack/nest-accounts`](/docs/packages/identity/nest-accounts) | [`@playstack/accounts`](/docs/packages/identity/accounts) |
| API keys | [`@playstack/nest-api-keys`](/docs/packages/identity/nest-api-keys) | [`@playstack/api-keys`](/docs/packages/identity/api-keys) |
| Audit declarations | [`@playstack/nest-audit`](/docs/packages/identity/nest-audit) | [`@playstack/audit`](/docs/packages/identity/audit) |
| Entitlements | [`@playstack/nest-entitlements`](/docs/packages/identity/nest-entitlements) | [`@playstack/entitlements`](/docs/packages/identity/entitlements) |
| Audience consent and lists | [`@playstack/nest-audiences`](/docs/packages/communication/nest-audiences) | [`@playstack/audiences`](/docs/packages/communication/audiences) |
| Notification workers | [`@playstack/nest-notifications`](/docs/packages/communication/nest-notifications) | [`@playstack/notifications`](/docs/packages/communication/notifications) |
| Delivery and unsubscribe | [`@playstack/nest-delivery`](/docs/packages/communication/nest-delivery) | [`@playstack/delivery`](/docs/packages/communication/delivery) |
| Domain events | [`@playstack/nest-events`](/docs/packages/events-operations/nest-events) | [`@playstack/events`](/docs/packages/events-operations/events) |
| Event sourcing | [`@playstack/nest-event-store`](/docs/packages/events-operations/nest-event-store) | [`@playstack/event-store`](/docs/packages/events-operations/event-store) |
| Rate limiting | [`@playstack/nest-rate-limit`](/docs/packages/events-operations/nest-rate-limit) | [`@playstack/rate-limit`](/docs/packages/events-operations/rate-limit) |
| Analytics delivery | [`@playstack/nest-analytics`](/docs/packages/events-operations/nest-analytics) | [`@playstack/analytics`](/docs/packages/events-operations/analytics) |
| Feed regeneration | [`@playstack/nest-feeds`](/docs/packages/content-intelligence/nest-feeds) | [`@playstack/feeds`](/docs/packages/content-intelligence/feeds) |
| Billing | [`@playstack/nest-billing`](/docs/packages/identity/nest-billing) | [`@playstack/billing`](/docs/packages/identity/billing) |
| GitHub repository access | [`@playstack/nest-github-app`](/docs/packages/identity/nest-github-app) | [`@playstack/github-app`](/docs/packages/identity/github-app) |
| Licensing | [`@playstack/nest-licensing`](/docs/packages/identity/nest-licensing) | [`@playstack/licensing-issuer`](/docs/packages/identity/licensing-issuer) |
| Catalog | [`@playstack/nest-catalog`](/docs/packages/commerce/nest-catalog) | [`@playstack/catalog`](/docs/packages/commerce/catalog) |
| One-time payments | [`@playstack/nest-payments`](/docs/packages/commerce/nest-payments) | [`@playstack/payments`](/docs/packages/commerce/payments) |
| Inventory | [`@playstack/nest-inventory`](/docs/packages/commerce/nest-inventory) | [`@playstack/inventory`](/docs/packages/commerce/inventory) |
| Orders and checkout | [`@playstack/nest-commerce`](/docs/packages/commerce/nest-commerce) | [`@playstack/commerce`](/docs/packages/commerce/commerce) |
| Fulfillment | [`@playstack/nest-fulfillment`](/docs/packages/commerce/nest-fulfillment) | [`@playstack/fulfillment`](/docs/packages/commerce/fulfillment) |

## Request-boundary order

Guard order is product behavior and remains visible in controllers or application policy:

```text
authentication -> CSRF when cookies are ambient -> account scope
               -> entitlement or role policy -> rate limit -> handler
```

Authentication establishes who is calling. Account resolution revalidates which tenant they may act within. Entitlements and roles evaluate against that trusted context. Rate-limit subjects should be derived only after trustworthy identity and proxy information exist.

## Module ownership

Every `forRoot` or `forRootAsync` call receives an application-configured core service or factory. Applications own database clients, queues, provider SDKs, configuration loading, global guard registration, and shutdown order. Playstack modules export their runners and consumers so worker bindings stay explicit.

## Events and transactions

Decorators such as `@Emits` describe metadata; they cannot invent a transaction. Domain operations emit through the core event bridge inside the application transaction, and Nest lifecycle bindings pump or queue observational delivery afterward.
