templates/themes/<id>/. theme.json id matches the folder name. runtime is react, liquid, or vite.
The trees below are Glitch, Noir, and Orbit, cut down to one section (
hero) plus the shared files those kits actually contain.
Seller steps
1
Hub
Open the theme hub and pick a catalog theme. The hub lists the folders above.
2
Catalog copy
Copy that folder into a project the editor can open:
themeId is the folder name. title is optional (2–80 characters). When it is omitted, the project uses the theme name. The caller is signed in and has design permission on the store. A store holds at most 10 theme projects.The response is { "pageId", "editorPath" }. editorPath is /theme/{storeId}/{pageId}. The saved draft format is join-markt-theme/v2. Its files are the folder on disk (theme.json, templates/, groups/, config/, src/sections/, and the rest of that kit).The hub actions that add a project, or that apply an uploaded ZIP, save a different draft. Visual and Code open this copy.3
Edit
Open
editorPath on the builder host. Visual and Code write the same files. Switch in the top bar. Setting edits show in the preview immediately. Code edits rebuild.4
Publish
Publish in the top bar checks the files, builds them, and serves that build on the store subdomain and custom domain. The live store stays on the previous publish until this one succeeds.
From an empty folder
Create the folder, then copy it with the request above. Every kit’sindex.html loads /src/platform/entry.tsx. That file is not in the theme folder. The platform supplies it when the draft is built.
A folder is accepted as a kit when it has theme.json (engine, id, name, version), templates/index.json, index.html loading that script, and at least one src/sections/<type>/schema.json. Publish also requires the section design file (index.tsx, index.liquid, or index.ts). The trees include the other files those three kits ship, because the editor reads them (pages, header, footer, theme settings).
templates/index.json is a map of section instances plus order. Section type is the folder name under src/sections/. This is the hero instance from Glitch. A one-section home page keeps this object and sets "order": ["hero"].
templates/index.json
order is hero, featured_products, group_list, features, testimonials, faq, cta_banner. Noir’s is hero, marquee, featured_products, group_list, image_with_text, promises, testimonials, faq, cta_banner. Orbit’s is hero, stats, featured_products, group_list, features, testimonials, faq, cta_banner. Each id in order has a matching object under sections.
The other page files in every kit use that same shape: templates/404.json, templates/cart.json, templates/group.json, templates/policy.json, templates/product.json, templates/products.json, templates/reviews.json, templates/support.json. File roles: Theme structure.
React (Glitch)
theme.json
src/theme.tsx is the layout (default export, header group, page, footer group). It imports src/styles/theme.css and src/components/cart-drawer.tsx. src/sections/hero/index.tsx is a default export and imports src/components/links.tsx and src/components/glitch-text.tsx. The rest of Glitch’s src/components/ (cards.tsx, cart.tsx, empty-state.tsx, grid.tsx, icons.tsx, rating.tsx, search-dialog.tsx, section-heading.tsx, sheet.tsx, product/gallery.tsx, product/purchase.tsx, product/tabs.tsx) is there for other sections. A new section is another folder beside hero with schema.json and index.tsx.
index.html in Glitch:
index.html
Liquid (Noir)
theme.json
index.html is the same shell as Glitch, with Noir’s own theme-color. src/sections/hero/index.liquid is the markup. script.ts exports mount. tailwind.config.ts scans src/**/*.{ts,tsx,liquid} and snippets/**/*.liquid. Another section is another folder beside hero with schema.json, index.liquid, and optionally script.ts.
Vite (Orbit)
theme.json
index.html is the same shell as Glitch, with Orbit’s own theme-color. src/sections/hero/index.ts exports mount and update (Orbit builds those with defineSection from src/lib/section.ts). tailwind.config.ts scans index.html and src/**/*.{ts,tsx}. Another section is another folder beside hero with schema.json and index.ts.
How a section is written, including blocks: Runtimes. Setting types: Section schema.
What the platform owns
The theme draws the storefront. The platform owns the commerce data, the purchase flow, and the storefront runtime.groups/header.json and groups/footer.json are the theme’s header and footer. Policy pages use templates/policy.json. The theme renders them. The policy text is store content.
Next
Runtimes
React, Liquid, and Vite section files.
Section schema
Setting types, presets, and limits.
Using the builder
Visual, Code, and the live preview.
Catalog
Catalog themes you can copy.

