---
url: /docs/en/agentbuff-stack/website.md
---
# Product configuration

The single editing entry is `packages/core/website.ts`, typed as `WebsiteConfig`. It contains public data that can be bundled into Astro, React and the API. Never put credentials here. `packages/core/site.ts` is a compatibility view derived from this configuration.

## Main sections

| Section | Controls |
| --- | --- |
| `metadata`, `brand` | Stable site ID, name, hero, descriptions, support address and brand assets |
| `i18n` | Enabled languages and product-specific translated metadata/plan descriptions |
| `ui`, `auth` | Default appearance, theme switch and sign-in methods |
| `blog` | Publishing switch and article limits |
| `plans`, `payment`, `creditPacks` | Product entitlements, example prices and payment availability |
| `storage`, `tasks`, `security` | File limits, task budgets, request limits and optional verification |
| `notifications`, `marketing` | Separately enabled task email, operator notices and email lists |
| `analytics`, `support`, `affiliates` | Optional reporting, support chat and referral integrations |

The stable site ID scopes authentication cookies. Changing it after launch changes which existing cookies are read. Free/Starter/Pro IDs also have backend billing meanings: changing labels differs from adding or removing plans. Prices must match actual provider prices before payments are enabled.

## Languages

The template enables `en` and `zh`. English remains first, and `metadata.language` remains `en`. Chinese hero, description, tagline and all plan descriptions belong in `i18n.translations.zh`. Spanish remains available as an optional complete dictionary.

```ts
i18n: {
  locales: ["en", "zh"],
  translations: {
    zh: { /* complete product-specific Chinese copy */ },
    es: null,
  },
},
```

This shows structure, not a copyable complete configuration. Run `bun run config:check` and rebuild after changing languages or business copy. Empty required translations and duplicate/unsupported language entries fail validation. See [Languages](./languages).

## URLs and private services

`PUBLIC_SITE_URL` determines public canonical/feed links; `APP_ORIGIN` determines API and authentication trust. A deployed product uses the same real public origin for both. Secrets and provider credentials belong to [Environment variables](./env).

The independent official site uses `apps/website/config/site.ts` and `WEBSITE_*` public variables. It does not inherit product prices, credentials or billing state. See [Official site](./website-showcase).
