# Launch a DEX

Your name, logo, theme, and enabled markets — on the platform's execution,
market-data, and risk engine. Traders get a full trading front end; you get the
storefront.

DEX launch is **signup-then-configure**: you provision your tenant over the
API, then brand and configure the storefront from the admin console.

```
signup ──▶ verify ──▶ tenant provisioned ──▶ brand & configure ──▶ live
 (API)      (API)      + admin invite          (admin console)
```

## 1. Sign up

`capabilityLayers` defaults to `['L1_DEX']`, so a plain signup already asks for
a DEX.

```bash
curl -s https://api.troncharts.xyz/api/public/tenants/signup \
  -H 'content-type: application/json' \
  -d '{
    "email": "founder@acme.xyz",
    "slug": "acme",
    "displayName": "Acme Markets"
  }'
# → { "ok": true, "signupId": "…", "slug": "acme", "emailed": true, … }
```

## 2. Verify → provision

Use the token from the email:

```bash
curl -s https://api.troncharts.xyz/api/public/tenants/verify \
  -H 'content-type: application/json' \
  -d '{ "token": "…" }'
# → { "tenant": { "id": "…", "capabilityLayers": ["L1_DEX"], … },
#     "adminInvite": { "username": "…", "inviteUrl": "…" },
#     "operatorCredential": { "apiKey": "…", "apiSecret": "…" } | null }
```

Accept the `adminInvite` to get into your admin console. If an
`operatorCredential` came back, that is your API credential — the secret is
shown once.

## 3. Brand and configure

From the console:

| Setting | Where |
| --- | --- |
| Brand name, logo, colours | Studio → Branding |
| Theme preset | Studio → Theme |
| Feature flags | Studio → Feature flags |
| Enabled venues and markets | Risk → Markets → Venues |

Read the effective config back over the API at any time — handy for mirroring
it into your own front end. Mint `$TOKEN` from your credential at
`POST /api/auth/api-token`, and send `X-Tenant-Slug` so the call resolves to
your tenant — without it you get `404 {"error":"unknown_tenant_origin"}`. See
[Tenancy](https://docs.troncharts.xyz/docs/auth/tenancy/).

```bash
curl -s https://api.troncharts.xyz/api/v1/tenants/me \
  -H "authorization: Bearer $TOKEN" \
  -H "x-tenant-slug: $TC_TENANT_SLUG"
# → { id, displayName, vertical, capabilityLayers, capitalMode,
#     branding, theme, flags, venues, plan, … }
```

Sub-resources: `/api/v1/tenants/me/branding`, `/theme`, `/flags`, `/venues`,
`/plan`. These are read-only unless your credential carries `tenant:config`,
in which case branding, theme, and flags become writable over `PATCH` — the
"bring your own front end" path. The `operatorCredential` from step 2 does not
carry it: it is minted with `firm:operate` and `prop:manage` only, so ask for a
`tenant:config` credential from the console if you want programmatic writes.

## 4. Go live

Once branding and venues are set, your trading front end is live at your
configured domain. Traders authenticate, fund, and trade against the venues you
enabled. The tenant is resolved from your domain, so no header wiring is needed
in the browser — see [Tenancy](https://docs.troncharts.xyz/docs/auth/tenancy/).

## Want a funded-trader program on top?

A DEX and a prop firm compose — run both from the same tenant. See
[Launch a prop firm](https://docs.troncharts.xyz/docs/launch/prop-firm/).