# Packages overview (https://prood.com/docs/packages)

Prood packages are organized by responsibility. Applications compose them — no package depends on an app.

## Package dependency graph [#package-dependency-graph]

```mermaid
flowchart TB
  TYPES["@prood/types<br/>(interfaces only)"]

  PLATFORM["@prood/platform<br/>Neon Postgres engine"]
  COMMERCE["@prood/commerce<br/>server data layer"]
  CHECKOUT["@prood/checkout<br/>state machine"]
  HOST["@prood/checkout-host<br/>Redis session host"]
  PAY["@prood/payment-*"]
  STORE["@prood/storage-*"]
  CLIENT["@prood/api-client"]
  UI["@prood/ui"]

  TYPES --> PLATFORM
  TYPES --> COMMERCE
  TYPES --> CHECKOUT
  TYPES --> PAY
  TYPES --> STORE
  TYPES --> CLIENT
  TYPES --> UI

  PLATFORM --> COMMERCE
  CHECKOUT --> HOST
  COMMERCE --> HOST
  PAY --> COMMERCE
  STORE --> COMMERCE
```

## Core stack [#core-stack]

| Package | Version | Description |
| --- | --- | --- |
| [`@prood/types`](/docs/packages/types) | 0.3.0 | Unified data model — 20+ domain types, adapter and provider interfaces |
| [`@prood/platform`](/docs/packages/platform) | 0.5.4 | Built-in commerce engine — Neon Postgres, Drizzle, RLS, Admin API |
| [`@prood/commerce`](/docs/packages/commerce) | 0.0.0 | Server-only data layer — caching, tenant scope, provider factory |
| [`@prood/checkout`](/docs/packages/checkout) | 2.0.0 | Framework-agnostic checkout state machine |
| [`@prood/checkout-host`](/docs/packages/checkout-host) | 0.0.0 | Next.js session host with Upstash Redis |

## Client & UI [#client--ui]

| Package | Version | Description |
| --- | --- | --- |
| [`@prood/api-client`](/docs/packages/api-client) | 0.0.0 | Typed OpenAPI fetch client |
| [`@prood/ui`](/docs/packages/ui) | 0.0.0 | The design system: tokens, shadcn/Radix primitives and commerce components |
| [`@prood/media`](/docs/packages/media) | 0.0.0 | Curated photography and film with `MediaImage` and `MediaVideo` |

## Providers [#providers]

| Package | Version | Description |
| --- | --- | --- |
| [`@prood/payment-stripe`](/docs/packages/payments/stripe) | 0.1.0 | Stripe Payment Element via Checkout Sessions |
| [`@prood/payment-easypay`](/docs/packages/payments/easypay) | 0.1.0 | Portugal — Multibanco, MB WAY, card |
| [`@prood/payment-ifthenpay`](/docs/packages/payments/ifthenpay) | 0.1.0 | Portugal — Multibanco, MB WAY, credit card |
| [`@prood/storage-s3`](/docs/packages/storage/s3) | 0.2.0 | S3-compatible storage (AWS, R2, MinIO) |

## Tooling (private) [#tooling-private]

| Package | Description |
| --- | --- |
| `@prood/eslint-config` | Shared ESLint configs |
| `@prood/typescript-config` | Shared TypeScript configs |

## Which package do I need? [#which-package-do-i-need]

| Task | Package(s) |
| --- | --- |
| Build a storefront page | `@prood/api-client`, `@prood/ui`, `@prood/types` |
| Add a payment provider | `@prood/payment-*`, register in `@prood/commerce` |
| Custom commerce adapter | `@prood/types` (implement `CommerceAdapter`) |
| Direct database access | `@prood/platform` (prefer API for apps) |
| Hosted checkout session | `@prood/checkout-host` |
| Store a file for a tenant | `@prood/storage-*` via `@prood/commerce` |

## Package guides [#package-guides]

<Cards>
  <Card title="@prood/types" href="/docs/packages/types" description="Unified domain model and interfaces." />
  <Card title="@prood/platform" href="/docs/packages/platform" description="Built-in Postgres commerce engine." />
  <Card title="@prood/commerce" href="/docs/packages/commerce" description="Server data layer and provider factory." />
  <Card title="Payment providers" href="/docs/packages/payments" description="Stripe, Easypay, Ifthenpay." />
  <Card title="Storage" href="/docs/packages/storage" description="Cloudflare R2." />
  <Card title="@prood/ui" href="/docs/packages/ui" description="The design system and shared React components." />
  <Card title="@prood/media" href="/docs/packages/media" description="Curated photography and film." />
</Cards>
