---
title: "Playstack documentation"
description: "Build application capabilities from small, portable packages with explicit integration boundaries."
tags: ["overview","playstack"]
---

Playstack is a collection of TypeScript packages for assembling production applications without coupling the application core to a single framework, database, queue, or vendor.

Use it to add capabilities such as authentication, billing, email, queues or file storage to an existing application. Start with one package; you do not need to adopt every package or change frameworks.

> The packages are in preview. APIs can still change before the first stable release, and the documentation will call out migration notes as they settle.

## Choose the smallest package

- **New to Playstack?** [Run the storage quickstart](/docs/getting-started#your-first-working-example) to write and read an object without cloud credentials.
- **Choosing a capability?** [Browse packages](/docs/packages) by what you want to build.
- **Integrating an existing app?** Start with [Next.js](/docs/frameworks/nextjs/getting-started), [React](/docs/frameworks/react/getting-started), [NestJS](/docs/frameworks/nestjs/getting-started) or [Workers](/docs/frameworks/workers/getting-started).
- **Looking up an API?** Read the [reference guide](/docs/packages#reading-the-reference), then open the package you use.
- **Preparing a project for registry access?** Learn about [Free accounts, tokens, and upgrades](/docs/registry-access).

Start with the domain package that owns the capability you need. Add a framework adapter such as a `nest-*`, `*-next`, or `*-react` package only at the edge that needs it. Add a persistence adapter only where state must cross a process boundary.

This keeps the dependency direction clear:

```text
application -> framework adapter -> domain contract -> injected infrastructure
```

## What the preview guarantees

- Domain packages expose typed contracts and accept injected infrastructure.
- Commands that produce events can carry operation context for correlation, causation, actors, scopes, and traces.
- Event producers expose explicit bridge seams instead of requiring a particular broker.
- Stateful packages make the database, cache, queue, or storage client boundary visible.
- Standard errors can cross HTTP boundaries without losing their stable code and details.

## Next step

Read [Getting started](/docs/getting-started) for the installation model and a minimal composition example. Then use [Packages](/docs/packages) to choose the capability layer that fits your application.
