---
title: "Frameworks"
description: "Start with the application stack you already use, then compose the Playstack capabilities and adapters that fit its boundaries."
tags: ["frameworks","getting-started","composition"]
---

Playstack keeps product capabilities independent from application frameworks, but an integration still has to meet the framework at its real boundaries: requests, sessions, dependency injection, rendering, background work, and shutdown.

Choose the guide for the runtime or UI layer you are building. Each guide starts with a small working composition and links back to the canonical package references for configuration details.

## Choose your starting point

| Framework | Start here | What Playstack adds |
| --- | --- | --- |
| [Next.js](/docs/frameworks/nextjs) | Full-stack React applications, route handlers, and server rendering. | Safe session handoff, Auth.js bridging, client auth state, analytics, and feed routes. |
| [NestJS](/docs/frameworks/nestjs) | APIs, workers, and service-oriented application backends. | Modules, guards, decorators, lifecycle bindings, queues, events, and account context. |
| [React](/docs/frameworks/react) | Browser applications and framework-owned component trees. | Headless providers, hooks, account switching, error boundaries, and analytics consent. |
| [Workers](/docs/frameworks/workers) | Web-standard edge functions and Cloudflare Workers. | Portable domain contracts, Web Crypto, streaming responses, and Durable Object adapters. |

## One model across every framework

The framework guide changes the composition root, not the domain model:

```text
application framework -> Playstack adapter -> portable Playstack capability
```

A Next.js route and a NestJS controller can use the same `@playstack/auth`, `@playstack/accounts`, and `@playstack/events` contracts. Their adapter packages differ because their request lifecycles differ. A Worker can use compatible domain packages directly without importing either framework.

## Package references remain canonical

Framework guides show how packages fit together. Package pages remain the source of truth for exported APIs, configuration properties, security constraints, events, persistence artifacts, and escape hatches. Follow the package links from a framework guide when you need the complete contract.

If your application spans more than one framework, compose each edge independently. A common shape is a Next.js frontend using the React bindings, a NestJS API using server modules and guards, and Worker-compatible domain packages shared between them.
