Enter the admin key to set up a new client portal.

1 Basics

The project slug is the tenant id — it scopes the portal, the pages and the URL /<slug>/content-portal. Lowercase, hyphenated.

Lowercase, spaces become hyphens automatically.

Shown as "MUSICSTYLING | Content Portal".

Leave blank if the Storybook isn't built yet — define blocks in the field mapper instead, and add this later. When set, it supplies previews + the block list.

Comma-separated. Defaults to "page".

2 Brand colours

Optional — tints the portal towards the client's palette. Leave blank for the default TDR theme. Hex values only.

CLIENT · CONTENT PORTAL
This is how the portal chrome will look.

3 Blocks — define them, or skip if you have a Storybook

Define the blocks a client can fill with content and images. Do this when there's no Storybook yet — the Figma step below then maps frames onto these blocks. Once the Storybook is connected it takes over, so name fields to match the intended block. (Skip if you're using a Storybook.)

Copies that project's block set in as a starting point. Nothing is linked — edit freely from here.

4 Figma & block mappings

Paste the client's Figma file URL (with a node-id). We read the frames and suggest a mapping onto your blocks — from the Storybook if set, otherwise the blocks you defined above. Confirm or adjust each row.

Uses the portal's Figma token. Maps onto your Storybook blocks, or the blocks from step 3. Mobile is merged over the desktop frames.

5 Single-type templates

Content that lives as its own document — team members, press, stories — edited in the portal as one block and staged at the document root.

6 Access

A shared password and/or personal codes. Personal codes carry the person's name onto their submissions and can be revoked individually.

Comma-separated: exact email, prefix ("chris@") or domain ("@tdr.com").

7 Go live — optional

Where approved content is distributed — the client's real CMS. Leave blank to keep the project in dry-run (safe for testing). The write token is never stored here; you add it as an env var when ready.

The write token goes in an env var. Distribution stays OFF until you enable it in Portal settings.