Claude Design · JUL 12, 2026
Build a branded carousel studio in Claude Design, ship it in Claude Code
One prompt turns Claude Design into a branded Instagram carousel factory. Then hand it to Claude Code to deploy it, extend it, and edit every slide with plain text.
I wanted an Instagram carousel factory: my brand baked in, five templates ready to edit, PNG export in one click. Claude Design built it in a single prompt. Then I dragged the folder into Claude Code and it became a real app I can deploy, extend, and rewrite by chatting.
This is the handoff most people miss. Claude Design is the fastest way to get a branded, pixel-perfect starter. Claude Code is where you turn that starter into a tool you actually ship. This guide walks through both halves and the seam between them.
Why chain Design and Code
Claude Design is astonishing at first drafts. You describe an app, it renders one. But once you want to deploy it, add a real backend, or change ten carousels at once by writing a sentence, you've outgrown the canvas. Claude Code picks up exactly where Design leaves off — same repo, same files, way more leverage.
The carousel studio is a good test case. Design nails the look. Code makes it a factory: “rewrite carousel 3 in a punchier tone,” “swap all slide 1 hooks for questions,” “deploy this to Vercel.” The moment you can edit content with prose, a prototype turns into a workflow.
What you need
Prep your brand kit
The whole app is driven by your brand file. The cleaner your inputs, the better every carousel looks the moment you open it. If you have a design system already, dump the tokens into a JSON like this and drop it into Claude Design when it asks:
{
"primary": "#0a0a0d",
"accent": "#FF4F00",
"background": "#0a0a0d",
"ink": "#ffffff",
"mutedInk": "rgba(255,255,255,0.6)",
"fonts": { "display": "Inter Tight", "mono": "JetBrains Mono" },
"handle": "@yourhandle",
"radius": "24px",
"borderColor": "rgba(255,255,255,0.08)",
"logoSrc": "data:image/svg+xml;base64,…"
}No JSON? Paste a screenshot of your site and describe the palette. The studio will still theme itself from what it can read — you just get to override anything it guessed wrong.
The Claude Design prompt
Open Claude Design, start a new project, and paste this in. It builds the whole studio — brand ingestion, five starter carousels, inline editing, drag-to-reorder, PNG export — in one shot.
Build a multi-page web app called Carousel Studio for creating and editing Instagram carousels. The app is brand-agnostic: instead of hard-coded colors and fonts, it ingests a user-uploaded design file / brand kit and themes every slide from it.
BRAND INGESTION (the core idea)
- On first load, show an "Upload your brand" dropzone. Accept a logo/wordmark image (SVG/PNG), an optional brand photo or texture, and either a brand.json design-token file or a simple form the user fills in.
- Parse the uploaded file into a design-token object: { primary, accent, background, ink, mutedInk, fonts: { display, mono }, logoSrc, handle, radius, borderColor }. If a token file is provided, read it directly; if a logo image is dropped, sample its dominant colors to auto-suggest a palette the user can accept or override.
- Store uploaded assets as base64 in localStorage (no backend) so they persist and can be embedded in exports.
- Use {{PLACEHOLDER}} tokens throughout the slide templates that resolve from the brand kit at render time, e.g. {{brand.logo}}, {{brand.handle}}, {{brand.primary}}, {{brand.accent}}, {{brand.background}}, {{brand.font.display}}, {{brand.photo}}. Unfilled placeholders render as visible, styled empty slots ("Drop logo", "Add handle") rather than breaking layout.
STRUCTURE
- index.html — landing: a brand-kit summary bar (logo, palette swatches, fonts) plus a card grid, one card per carousel, each showing a live thumbnail of its first slide themed by the current brand. Cards link to the editor.
- carousel.html?id=… — per-carousel editor: a horizontally-scrollable row of slide frames.
- shared/data.js (carousel content as data with {{placeholders}}), shared/brand.js (upload parsing, token store, color sampling), shared/engine.js (rendering, editing, export), shared/styles.css (token-driven components).
SLIDES
- Each slide is a 1080x1350 portrait frame (Instagram 4:5), rendered at true size and scaled down with CSS transform: scale() for thumbnails.
- A library of reusable templates driven by a tpl field: cover (with logo slot), headline, checklist, chips, numbered steps, big-quote, quote-card, image slide with a user-photo placeholder slot, tip, recipe grid, stacked-text.
- Every slide footer shows the brand logo/handle placeholder + an editable page-number counter (03 / 07) + a "Swipe" pill.
- Seed 5 starter carousels of neutral demo copy so the user immediately sees their brand applied.
EDITING
- Click any text on a slide to edit inline (contenteditable); Enter/Escape commit. Page-number counters are editable too.
- Image and logo slots are drag-and-drop — user drops an image and it fills the slot (persisted as base64).
- Persist edits to localStorage (per-carousel override objects merged over base data by field path, including nested items.0.title). No backend.
- Global Brand panel (slide-in): re-upload logo, edit palette swatches, swap display/mono fonts, edit handle, tweak radius/borders — applied via CSS variables across all slides and thumbnails instantly.
- "+ Add carousel" button creates a new carousel from a template, pre-themed by the brand kit.
- Drag-to-reorder slides (and carousels), auto-renumbering the page counters after a reorder.
- Per-carousel "Reset edits"; global "Reset brand".
EXPORT
- "Export ZIP" renders every slide to a 2x PNG at 1080x1350 and downloads a single ZIP (folder named per carousel, files 01-…png…). Use JSZip plus a DOM-to-image library. Render each slide into a visible on-document stage behind a progress modal so computed styles, fonts, and embedded brand assets all resolve — offscreen or hidden stages yield blank PNGs. Resolve all CSS variables and placeholders to concrete values on the stage, embed uploaded images as base64, wait for document.fonts.ready plus two animation frames before each capture, show a progress bar.
- Also offer "Export brand.json" so the user can save and re-import their kit.
Keep code split across the shared files, canonical HTML, no build step (plain script tags). The guiding principle: the app is a blank, professional template system; the uploaded brand file is the single source of truth for all visual identity.What Claude Design builds
A landing page with your logo and palette across the top, five carousel cards below, each already themed by your brand. Click one and you land in the editor: a horizontal row of 1080x1350 slides at real size, every headline, chip, and counter editable inline. The Brand panel on the right swaps accents and fonts across every carousel at once.
Two exports come for free: PNG ZIP for the finished carousels, and a brand.json you can drop into the next project to get the same theme in one click. That's already a useful tool. But the prototype is trapped inside the canvas — you can't deploy it, you can't add features, and you can't rewrite ten slides with a sentence. That's where Claude Code comes in.
Hand it off to Claude Code
Hit the export button in Claude Design and download the bundle. Unzip it, open a terminal in the folder, and run:
cd ~/Downloads/carousel-studio
claudeClaude Code starts inside the project with full context of every file Claude Design generated. First ask I always make:
Look at this project. Give me a two-paragraph summary of the architecture — where the carousel data lives, how the brand kit flows through, and what would break if I wanted to deploy this to Vercel.Once it has the shape, deploy it:
Deploy this to Vercel. Set up the project, push to a new GitHub repo under my account, and give me the live URL.That's the seam. Two prompts and the prototype is a real URL you can share with a client.
Edit carousels through text
This is the part I care about. Once Claude Code owns the project, every change is a sentence, not a click. Some prompts that actually work:
Rewrite carousel 3 in a punchier tone — every headline should be six words or less, present tense, no adverbs. Keep the slide structure the same, only change the copy in shared/data.js.Swap all slide 1 hooks across every carousel for a question that names the reader's pain. Show me the diff before writing.Add a new template called "myth-vs-truth" — two stacked cards, red and green accents from the brand kit, editable myth and truth text. Wire it up so I can select it from the "+ Add carousel" flow.Add a "Generate carousel from topic" button. It calls the Anthropic API with a system prompt that returns JSON matching the shared/data.js schema, then drops the result in as a new carousel themed by the current brand kit.Every one of those is a real edit to the project, not a screenshot. Claude Code opens shared/data.js, changes the strings, and the next time you reload the site the new copy is there.
Next steps
Once the studio is deployed and you can edit through text, the interesting moves are the ones that turn it into your workflow:
- Text-to-carousel — a topic input that returns a full carousel of copy, themed by the brand kit.
- Voice presets — save a “punchy” preset, a “founder story” preset, a “research brief” preset, and rewrite any carousel into any voice.
- A team version — hook up Supabase and let your team share brand kits and carousel drafts, not files.
- A scheduled version — wire the export to Buffer or Later and post the carousels on a cadence.
You end up somewhere strange and good. A tool that used to cost a designer half a day now costs one sentence. The brand kit means every draft looks like it belongs to you the moment it renders. That's the pattern — not this specific app, the pattern — Design for the first draft, Code for everything after.

Written by
@atareh
AI architect & creator. Writing, designing, and producing in AI and tech. Previously head of product at a healthtech SaaS; background in molecular science. Founded gogray.today in 2017.
Related
Keep reading.
Made by @atareh · x / twitter · instagram