---
title: "Events and operations"
description: "Domain events, event sourcing, rate limiting, analytics, persistence bridges, and framework delivery."
tags: ["packages","events","operations","analytics","rate-limiting"]
---

These packages connect work happening inside a capability to persistence, queues, projections, analytics destinations, and request-level enforcement without making those outside systems part of the domain contract.

## Events and event storage

| Package | Plan | Responsibility |
| --- | --- | --- |
| [`@playstack/events`](/docs/packages/events-operations/events) | <PlanTierDot tier="free" /> | Typed in-process domain events and Bridge seams. |
| [`@playstack/events-prisma`](/docs/packages/events-operations/events-prisma) | <PlanTierDot tier="pro" /> | Transactional Postgres outbox for Prisma applications. |
| [`@playstack/nest-events`](/docs/packages/events-operations/nest-events) | <PlanTierDot tier="pro" /> | NestJS lifecycle and queue delivery bindings. |
| [`@playstack/event-store`](/docs/packages/events-operations/event-store) | <PlanTierDot tier="free" /> | Event sourcing, upcasting, projections, and checkpoints. |
| [`@playstack/nest-event-store`](/docs/packages/events-operations/nest-event-store) | <PlanTierDot tier="pro" /> | Thin NestJS wiring for event-store services. |

## Enforcement and measurement

| Package | Plan | Responsibility |
| --- | --- | --- |
| [`@playstack/rate-limit`](/docs/packages/events-operations/rate-limit) | <PlanTierDot tier="free" /> | Portable token-bucket policy and atomic storage contract. |
| [`@playstack/rate-limit-redis`](/docs/packages/events-operations/rate-limit-redis) | <PlanTierDot tier="pro" /> | Atomic Redis rate-limit storage. |
| [`@playstack/rate-limit-prisma`](/docs/packages/events-operations/rate-limit-prisma) | <PlanTierDot tier="pro" /> | Postgres and Prisma rate-limit storage. |
| [`@playstack/rate-limit-do`](/docs/packages/events-operations/rate-limit-do) | <PlanTierDot tier="pro" /> | Cloudflare Durable Object rate-limit storage. |
| [`@playstack/nest-rate-limit`](/docs/packages/events-operations/nest-rate-limit) | <PlanTierDot tier="pro" /> | NestJS policy declarations, guards, and headers. |
| [`@playstack/analytics`](/docs/packages/events-operations/analytics) | <PlanTierDot tier="free" /> | Consent-aware analytics fan-out and provider capabilities. |
| [`@playstack/analytics-react`](/docs/packages/events-operations/analytics-react) | <PlanTierDot tier="pro" /> | React consent controls and route tracking. |
| [`@playstack/nest-analytics`](/docs/packages/events-operations/nest-analytics) | <PlanTierDot tier="pro" /> | Queued NestJS delivery for server analytics. |
| [`@playstack/feedback`](/docs/packages/events-operations/feedback) | <PlanTierDot tier="paid" /> | Durable intake for CLI feedback and failed-command reports. |
| [`@playstack/nest-feedback`](/docs/packages/events-operations/nest-feedback) | <PlanTierDot tier="paid" /> | NestJS route for the anonymous feedback intake. |

## Composition rule

Domain packages publish events through explicit Bridge seams. Applications decide whether an event stays in-process, enters an outbox, becomes a queued job, updates a projection, or fans out to analytics.
