---
title: "@playstack/nest-feeds"
description: "NestJS scheduling, regeneration, and queue-consumer bindings for Playstack feeds."
tags: ["package","content","feeds","nestjs","queues","pro"]
---

{/* package-access:start */}

> **Pro.** Covered by the Playstack Pro License. Registry access is required; check preview availability before installing. See [package access](/docs/packages#access-policy).

{/* package-access:end */}

`@playstack/nest-feeds` connects feed regeneration definitions to an application-owned queue and scheduler without selecting BullMQ, cron, or another provider.

{/* package-install:start */}

## Install

After confirming [preview access](/docs/packages#access-policy), install the package at your application's shared Playstack version:

```sh
npm install --save-exact @playstack/nest-feeds@0.1.0-beta.1
```

Check the peer requirements below before choosing a runtime or provider.

{/* package-install:end */}

## Compose the module

```ts
const generationQueue = new NestFeedGenerationQueue({
  dispatch: (name, payload, { jobId }) => jobs.add(name, payload, { jobId }),
})

PlaystackFeedsModule.forRoot({
  queue: generationQueue,
  namespace: 'marketing',
  definitions: [
    {
      id: 'public',
      generate: (job) => generatePublicDocuments(job.reason),
    },
  ],
  scheduledDefinitionIds: ['public'],
  onScheduleError: (error, definitionId) => report(error, definitionId),
})
```

## Configuration reference

| `NestFeedsOptions` property | Required | Purpose |
| --- | --- | --- |
| `queue` | Yes | Core `FeedGenerationQueue` bridge. |
| `namespace` | Yes | Qualifies deterministic regeneration job IDs. |
| `definitions` | Yes | Unique canonical IDs plus `generate(job)` implementations. |
| `scheduledDefinitionIds` | No | Registered definitions requested on each scheduler tick. |
| `onScheduleError` | No | Isolated per-definition scheduling failure observer. |

Configuration is validated and frozen at module creation. Use `forRootAsync({ imports, inject, useFactory })` for DI-resolved setup.

## Regeneration and worker bridges

Inject `PlaystackFeedRegenerationService` and call `request(definitionId, reason)` for `content-change`, `manual`, or `scheduled` work. All reasons use the same `feeds:<namespace>:<definitionId>` job ID so the queue coalesces overlap.

The queue client bridge dispatches the fixed `playstack.feeds.generate` job. Bind it to `PlaystackFeedGenerationConsumer.handle(job.data)` in the worker; recovered payloads are validated and may invoke only a registered definition.

Call `PlaystackFeedScheduler.tick()` from the application scheduler. Ticks never overlap; one definition’s failure does not block later requests.

## Boundary

The package installs no scheduler or queue framework. Applications own cron cadence, broker lifecycle, queue processor registration, and storage; the core feed package owns generation behavior.

{/* package-reference:start */}

## API entry points and requirements

Reference snapshot: `@playstack/nest-feeds@0.1.0-beta.1`. Import only the entry point your runtime needs. Paths below are relative to the installed package; use **Go to Definition** in your editor to inspect exact parameters, return types and overloads. Do not import the declaration-file paths directly.

| Public entry point | Declaration file |
| --- | --- |
| `@playstack/nest-feeds` | `./dist/index.d.ts` |
| `@playstack/nest-feeds/package.json` | No TypeScript declaration (asset or metadata export). |

Node.js engine requirement: `>=20`. This is not a claim that every entry point works in browsers or Workers.

### Peer dependencies

Keep existing framework versions that satisfy these ranges. Install optional peers only when using the corresponding adapter. The package manager resolves ordinary dependencies separately.

| Peer | Compatible range | When needed |
| --- | --- | --- |
| `@nestjs/common` | `^10.0.0 \|\| ^11.0.0` | Required by the package. |
| `@nestjs/core` | `^10.0.0 \|\| ^11.0.0` | Required by the package. |
| `@playstack/feeds` | `0.1.0-beta.1` | Required by the package. |
| `reflect-metadata` | `^0.1.13 \|\| ^0.2.0` | Required by the package. |
| `rxjs` | `^7.0.0` | Required by the package. |

For a complete first program, start with [Getting started](/docs/getting-started). For API lookup and partial-example conventions, see [Reading the reference](/docs/packages#reading-the-reference). Provider failures, lifecycle requirements and application responsibilities remain described in the guide above; types alone do not establish production safety.

{/* package-reference:end */}
