Create, deploy, and see your first component live in 5 minutes
This tutorial guides you through the steps to create a new component, preview it while you develop, deploy it to your store, and assign it to a position (a slot, as we call it) in your checkout.
You have created a Store in Ollie Shop and you know its Store ID. It is the UUID in the Admin URL when you open the store: https://admin.ollie.shop/dashboard/store/<store-id>.
Ollie Shop CLI requires a Unix-like environment. Windows users must use WSL (Windows Subsystem for Linux).
In your terminal, use the create-ollie-shop command to scaffold a new project with our Hello World component.
1
Create Your Project
Run the creation command
npx create-ollie-shop
You’ll be prompted for:
Project directory the folder to create. Defaults to my-checkout.
Store ID required. Paste the UUID of your store (see Prerequisites). The scaffold stops with Invalid store ID format if it is empty or not a UUID.
Version ID optional. Press Enter to skip; the CLI then works against the store’s default version.
You can also pass both as flags and skip the prompts: npx create-ollie-shop --store-id <uuid> --version-id <uuid>.A complete run looks like this:
🛍️ Create Ollie ShopProject directory (my-checkout): my-checkoutStore ID: 7f3c9a1e-5b2d-4e8f-9a6c-1d2e3f4a5b6cVersion ID (optional, press Enter to skip):📁 Creating Ollie Shop project "my-checkout"...📄 Copying template files...🧠 Installing Ollie skills...🔧 Initializing git repository...✅ Ollie Shop project created in my-checkout: $ cd my-checkoutInstall dependencies: $ npm installStart development: $ npm start
The scaffold downloads the Ollie Shop agent skill from GitHub, so it needs network access to github.com.
2
Navigate to Project
Replace [your-project-directory] with the directory you chose
cd [your-project-directory]
3
Meet your AI assistant
The project arrives with the Ollie Shop skill already installed, plus an AGENTS.md that points your coding agent at it. There is nothing to set up. Your assistant knows the CLI, the SDK hooks, and the slot catalog from your first prompt.Try it:
Prompt
Which slot should I put a free shipping banner in?
Now let’s build a checkout component using the Ollie Shop SDK.
1
Open Component File
Open components/HelloWorld/index.tsx in VS Code.This file contains your component code that will be deployed to your checkout.
2
Add Checkout Features
Replace the code in the index.tsx file with the code below.You’ll now use the useCheckoutSession hook from the @ollie-shop/sdk package to access checkout session data.
index.tsx
import { useCheckoutSession } from '@ollie-shop/sdk';import styles from './styles.module.css';export default function HelloWorld({ name = "Stranger" }: { name?: string }) { const { session } = useCheckoutSession(); return ( <div className={styles.container}> <h1>Hello, {name}!</h1> <p>Session ID: {session.id}</p> <p>Cart has {session.cartItems.length} items</p> </div> );}
Your component now accesses real checkout session data!
Run the dev server and preview your component live in the checkout.
1
Start the Dev Server
In your VS Code terminal, start the dev server (hot reload):
npm start
This runs ollieshop start: it serves your components on http://localhost:4000, watches for changes, and opens Studio in your browser for your store.
Pass flags through npm when you need them: npm start -- --no-open keeps the browser closed, and npm start -- --browser-logs streams the checkout’s console output to your terminal.
2
Find your component in Studio
With the dev server running, HelloWorld appears in the Components tab of Studio and renders live in the checkout preview once it has a slot. Editing your code hot-reloads the preview automatically.The component is still unlinked: it has a temporary studio-HelloWorld id because nothing in your store knows about it yet.
HelloWorld listed in the Components tab and rendered at the top of the cart
Studio registers and deploys an unlinked component in one step.
1
Pick a slot
Open the HelloWorld card in the Components tab. In the Slot field, choose where the component renders (for example cart_header_full_page, above the cart content). The preview updates as soon as a slot is set.See Slots to understand what a slot is.
The props panel: pick the slot, then Publish
2
Publish
Click Publish. Studio creates the component in your store version, bundles your code, uploads it, and shows the build status. The button stays disabled until a slot is set.When the build succeeds, the CLI records the new component id in your project’s ollie.json under components, so the folder stays linked from now on.
3
View on your live store
Visit your store’s checkout to see your component live!
Prefer to register the component in the Admin first?
You can also create the component record yourself and link it to the folder before deploying.
In the Admin, open your store, click Components in the sidebar, then Create Component.
Fill in Name, Active, Slot, and Version, then click Create Component.
Copy the Component ID from the configuration page.
Which coding agents pick the skill up on their own, how to install it where it’s missing, and how to keep it current
Build Your First Component
A deeper walkthrough: a free shipping progress bar, from folder to deploy
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Ollie Shop","description":"Checkout customization platform for e-commerce.","colors":{"primary":"#556AEB","light":"#556AEB","dark":"#BFC9FF"},"logo":{"light":"https://mintcdn.com/ollie/AKuzggu4Ldtc4mWE/logo/default.svg?fit=max\u0026auto=format\u0026n=AKuzggu4Ldtc4mWE\u0026q=85\u0026s=59a15240aae28bacc9c475620ba101dd","dark":"https://mintcdn.com/ollie/AKuzggu4Ldtc4mWE/logo/default.svg?fit=max\u0026auto=format\u0026n=AKuzggu4Ldtc4mWE\u0026q=85\u0026s=59a15240aae28bacc9c475620ba101dd"},"favicon":"https://mintcdn.com/ollie/UatGh8GLCugPlVFB/favicon.png?fit=max\u0026auto=format\u0026n=UatGh8GLCugPlVFB\u0026q=85\u0026s=c9f4773cab8806f309bce26b8a043a71","appearance":{"default":"system","strict":false},"background":{"decoration":"gradient"},"navbar":{"links":[{"href":"https://admin.ollie.shop","label":"Ollie Shop Admin"}],"primary":{"type":"button","label":"Start Building","href":"https://admin.ollie.shop"}},"footer":{"socials":{"github":"https://github.com/ollie-shop","linkedin":"https://www.linkedin.com/company/ollie-shop"},"links":[{"header":"Ollie","items":[{"label":"About Us","href":"https://ollie.shop"},{"label":"Contact Us","href":"https://ollie.shop/"}]},{"header":"Products","items":[{"label":"Ollie Shop","href":"https://docs.ollie.shop/ollie-shop"}]},{"header":"Privacy \u0026 Security","items":[{"label":"Privacy Policy (North America)","href":"https://docs.ollie.shop/privacy/north-america"},{"label":"Política de Privacidade (Brasil)","href":"https://docs.ollie.shop/privacy/brazil"},{"label":"Security Policy","href":"https://docs.ollie.shop/security/security-incident-response-plan"},{"label":"Subprocessors","href":"https://docs.ollie.shop/security/subprocessors"}]}]},"search":{"prompt":"Search docs..."},"seo":{},"styling":{"eyebrows":"breadcrumbs","codeblocks":"system","latex":false},"errors":{"404":{"redirect":true}},"contextual":{"options":["copy","view","claude","chatgpt","cursor","mcp"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"ollie","hasAudioNarration":false,"actualSubdomain":"ollie","customDomains":["docs.ollie.shop"],"gitSource":{"type":"github","owner":"ollie-shop","repo":"ollie-shop","deployBranch":"main","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ada717bec9bb061b60b72e7","collectionId":"532f6151-bc39-4209-9732-dc2d205036f0","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ada717bec9bb061b60b72e7"},"entitlements":{},"buildId":"6ada717bec9bb061b60b72e7","clientVersion":"0.0.3939","searchFilterCounts":[{"language":"default","tag":"Customization","count":31},{"language":"default","tag":"Configuration","count":13},{"language":"default","tag":"Ollie SDK","count":12},{"language":"default","tag":"Hooks","count":10},{"language":"default","tag":"CLI Reference","count":8},{"language":"default","tag":"Core Concepts","count":8},{"language":"default","tag":"Functions","count":5},{"language":"default","tag":"Analytics \u0026 Scripts","count":4},{"language":"default","tag":"Start Here","count":3},{"language":"default","tag":"Checkout Session","count":2}]},"assistantConfig":{},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"ollie-shop/get-started/quickstart","slug":"/ollie-shop/get-started/quickstart","pageMetadata":{"title":"Developer Quickstart","description":"Create, deploy, and see your first component live in 5 minutes","href":"/ollie-shop/get-started/quickstart"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Create, deploy, and see your first component live in 5 minutes\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,Card,CardGroup,CodeBlock,Frame,Heading,Icon,Info,Note,OptimizedImage,Step,Steps,Tab,Tabs,Tip}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Icon)_missingMdxReference(`Icon`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`This tutorial guides you through the steps to create a new component, preview it while you develop, deploy it to your store, and assign it to a position (a slot, as we call it) in your checkout.`}),`\n`,_jsx(Heading,{level:`2`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsxs(Tabs,{children:[_jsx(Tab,{title:`macOS/Linux`,id:`macos%2Flinux`,children:_jsxs(Steps,{children:[_jsxs(Step,{title:`Node.js 22+`,children:[_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`node`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --version`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Should show v22.0.0 or higher`})]}),`\n`]})})}),_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://nodejs.org/`,children:`Download Node.js`}),` if not installed. The Ollie Shop CLI requires Node.js 22 or newer.`]})]}),_jsx(Step,{title:`VS Code`,children:_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://code.visualstudio.com/`,children:`Download VS Code`}),` - Recommended editor`]})}),_jsx(Step,{title:`Git`,children:_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`git`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --version`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Verify Git is installed`})]}),`\n`]})})})}),_jsx(Step,{title:`Ollie Shop Store`,children:_jsxs(_components.p,{children:[`You have created a `,_jsx(_components.a,{href:`/ollie-shop/get-started/admin-onboarding`,children:`Store`}),` in Ollie Shop and you know its `,_jsx(_components.strong,{children:`Store ID`}),`. It is the UUID in the Admin URL when you open the store: `,_jsx(_components.code,{children:`https://admin.ollie.shop/dashboard/store/\u003cstore-id>`}),`.`]})})]})}),_jsxs(Tab,{title:`Windows`,id:`windows`,children:[_jsx(Info,{children:_jsx(_components.p,{children:`Ollie Shop CLI requires a Unix-like environment. Windows users must use WSL (Windows Subsystem for Linux).`})}),_jsxs(Steps,{children:[_jsxs(Step,{title:`Install WSL`,children:[_jsx(_components.p,{children:`Open PowerShell as Administrator and run:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`powershell`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`powershell`,children:_jsxs(_components.code,{language:`powershell`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`wsl `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`--`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`install`})]}),`\n`]})})}),_jsx(_components.p,{children:_jsx(_components.a,{href:`https://learn.microsoft.com/en-us/windows/wsl/install`,children:`Full WSL Installation Guide`})})]}),_jsxs(Step,{title:`Install Node.js 22 in WSL`,children:[_jsx(_components.p,{children:`Open WSL terminal and run:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -fsSL`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://deb.nodesource.com/setup_22.x`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` sudo`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -E`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` bash`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` -`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`sudo`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` apt-get`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -y`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` nodejs`})]}),`\n`]})})})]}),_jsx(Step,{title:`VS Code with WSL`,children:_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Install `,_jsx(_components.a,{href:`https://code.visualstudio.com/`,children:`VS Code`})]}),`\n`,_jsxs(_components.li,{children:[`Install the `,_jsx(_components.a,{href:`https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl`,children:`WSL extension`})]}),`\n`,_jsxs(_components.li,{children:[`Open WSL folders with: `,_jsx(_components.code,{children:`code .`}),` from WSL terminal`]}),`\n`]})})]}),_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`All commands in this guide must be run in the WSL terminal`}),`, not Windows Command Prompt or PowerShell.`]})})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`step-1-create-a-hello-world-component`,children:`Step 1: Create a Hello World Component`}),`\n`,_jsxs(_components.p,{children:[`In your terminal, use the `,_jsx(_components.code,{children:`create-ollie-shop`}),` command to scaffold a new project with our Hello World component.`]}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Create Your Project`,children:[_jsx(_components.p,{children:`Run the creation command`}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` create-ollie-shop`})]}),`\n`]})})}),_jsx(_components.p,{children:`You’ll be prompted for:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`Project directory`}),` the folder to create. Defaults to `,_jsx(_components.code,{children:`my-checkout`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`Store ID`}),` `,_jsx(Icon,{icon:`circle-exclamation`,color:`#ff0000`}),` required. Paste the UUID of your store (see Prerequisites). The scaffold stops with `,_jsx(_components.code,{children:`Invalid store ID format`}),` if it is empty or not a UUID.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`Version ID`}),` optional. Press Enter to skip; the CLI then works against the store’s default version.`]}),`\n`]}),_jsxs(_components.p,{children:[`You can also pass both as flags and skip the prompts: `,_jsx(_components.code,{children:`npx create-ollie-shop --store-id \u003cuuid> --version-id \u003cuuid>`}),`.`]}),_jsx(_components.p,{children:`A complete run looks like this:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`20`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`20`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`🛍️ Create Ollie Shop`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Project directory (my-checkout): my-checkout`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Store ID: 7f3c9a1e-5b2d-4e8f-9a6c-1d2e3f4a5b6c`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Version ID (optional, press Enter to skip):`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`📁 Creating Ollie Shop project \"my-checkout\"...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`📄 Copying template files...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`🧠 Installing Ollie skills...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`🔧 Initializing git repository...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`✅ Ollie Shop project created in my-checkout:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` $ cd my-checkout`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Install dependencies:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` $ npm install`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Start development:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` $ npm start`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),_jsx(Note,{children:_jsxs(_components.p,{children:[`The scaffold downloads the Ollie Shop agent skill from GitHub, so it needs network access to `,_jsx(_components.code,{children:`github.com`}),`.`]})})]}),_jsxs(Step,{title:`Navigate to Project`,children:[_jsxs(_components.p,{children:[`Replace `,_jsx(_components.code,{children:`[your-project-directory]`}),` with the directory you chose`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`cd`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [your-project-directory]`})]}),`\n`]})})})]}),_jsxs(Step,{title:`Meet your AI assistant`,children:[_jsxs(_components.p,{children:[`The project arrives with the `,_jsx(_components.a,{href:`/ollie-shop/skills`,children:`Ollie Shop skill`}),` already installed, plus an `,_jsx(_components.code,{children:`AGENTS.md`}),` that points your coding agent at it. There is nothing to set up. Your assistant knows the CLI, the SDK hooks, and the slot catalog from your first prompt.`]}),_jsx(_components.p,{children:`Try it:`}),_jsx(CodeBlock,{filename:`Prompt`,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Which slot should I put a free shipping banner in?`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`step-2-install-dependencies`,children:`Step 2: Install Dependencies`}),`\n`,_jsx(_components.p,{children:`After creating the project, set up your development environment.`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open in VS Code`,children:_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`code`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` .`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # This opens your project in VS Code`})]}),`\n`]})})})}),_jsxs(Step,{title:`Install Project Dependencies`,children:[_jsx(_components.p,{children:`Developing with Ollie Shop requires Node.js and npm.`}),_jsx(_components.p,{children:`In the VS Code terminal, run:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npm`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`})]}),`\n`]})})}),_jsx(_components.p,{children:`This installs the Ollie Shop CLI and SDK as dev dependencies of your project, so you do not need a global install.`})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`step-3-develop-your-component`,children:`Step 3: Develop Your Component`}),`\n`,_jsx(_components.p,{children:`Now let’s build a checkout component using the Ollie Shop SDK.`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Open Component File`,children:[_jsxs(_components.p,{children:[`Open `,_jsx(_components.code,{children:`components/HelloWorld/index.tsx`}),` in VS Code.`]}),_jsx(_components.p,{children:`This file contains your component code that will be deployed to your checkout.`})]}),_jsxs(Step,{title:`Add Checkout Features`,children:[_jsxs(_components.p,{children:[`Replace the code in the `,_jsx(_components.code,{children:`index.tsx`}),` file with the code below.`]}),_jsxs(_components.p,{children:[`You’ll now use the `,_jsx(_components.code,{children:`useCheckoutSession`}),` hook from the `,_jsx(_components.code,{children:`@ollie-shop/sdk`}),` package to access checkout session data.`]}),_jsx(CodeBlock,{filename:`index.tsx`,numberOfLines:`14`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`14`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`useCheckoutSession`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '@ollie-shop/sdk'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` styles`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` './styles.module.css'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`export`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` default`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` HelloWorld`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`({ `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`name`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Stranger\"`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:` }`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`name`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`?:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` string`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:` }) `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`session`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` useCheckoutSession`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`div`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` className`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{styles.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`container`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`h1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`Hello`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`!\u003c/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`h1`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`p`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Session`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` ID`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`session`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}\u003c/`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`p`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`p`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Cart`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` has`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`session`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`cartItems`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`length`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`} `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`items`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`p`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`div`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` );`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(_components.p,{children:`Your component now accesses real checkout session data!`})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`step-4-preview-locally-with-studio`,children:`Step 4: Preview Locally with Studio`}),`\n`,_jsx(_components.p,{children:`Run the dev server and preview your component live in the checkout.`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Start the Dev Server`,children:[_jsx(_components.p,{children:`In your VS Code terminal, start the dev server (hot reload):`}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npm`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` start`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`This runs `,_jsx(_components.code,{children:`ollieshop start`}),`: it serves your components on `,_jsx(_components.code,{children:`http://localhost:4000`}),`, watches for changes, and opens `,_jsx(_components.a,{href:`/ollie-shop/studio`,children:_jsx(_components.strong,{children:`Studio`})}),` in your browser for your store.`]}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`Pass flags through npm when you need them: `,_jsx(_components.code,{children:`npm start -- --no-open`}),` keeps the browser closed, and `,_jsx(_components.code,{children:`npm start -- --browser-logs`}),` streams the checkout’s console output to your terminal.`]})})]}),_jsxs(Step,{title:`Find your component in Studio`,children:[_jsxs(_components.p,{children:[`With the dev server running, `,_jsx(_components.code,{children:`HelloWorld`}),` appears in the `,_jsx(_components.strong,{children:`Components`}),` tab of Studio and renders live in the checkout preview once it has a slot. Editing your code hot-reloads the preview automatically.`]}),_jsxs(_components.p,{children:[`The component is still `,_jsx(_components.strong,{children:`unlinked`}),`: it has a temporary `,_jsx(_components.code,{children:`studio-HelloWorld`}),` id because nothing in your store knows about it yet.`]}),_jsx(Frame,{caption:`HelloWorld listed in the Components tab and rendered at the top of the cart`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/ollie/ZKpSeyUd64Smy50J/images/studio-preview.png?fit=max\u0026auto=format\u0026n=ZKpSeyUd64Smy50J\u0026q=85\u0026s=c60caaf79eba277161c2e15b21ce4daa`,alt:`Studio showing the local HelloWorld component`,\"data-og-width\":`1440`,width:`1440`,\"data-og-height\":`900`,height:`900`,\"data-path\":`images/studio-preview.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/ollie/ZKpSeyUd64Smy50J/images/studio-preview.png?w=280\u0026fit=max\u0026auto=format\u0026n=ZKpSeyUd64Smy50J\u0026q=85\u0026s=b2cc420d84d7ecf3e2d53a0248c44bd5 280w, https://mintcdn.com/ollie/ZKpSeyUd64Smy50J/images/studio-preview.png?w=560\u0026fit=max\u0026auto=format\u0026n=ZKpSeyUd64Smy50J\u0026q=85\u0026s=6d0826e3486ae12fc295f3ab4436e076 560w, https://mintcdn.com/ollie/ZKpSeyUd64Smy50J/images/studio-preview.png?w=840\u0026fit=max\u0026auto=format\u0026n=ZKpSeyUd64Smy50J\u0026q=85\u0026s=8100b15e60440e0b3d7a6332ef1b001f 840w, https://mintcdn.com/ollie/ZKpSeyUd64Smy50J/images/studio-preview.png?w=1100\u0026fit=max\u0026auto=format\u0026n=ZKpSeyUd64Smy50J\u0026q=85\u0026s=d0b3126289b543293317cc51dca375da 1100w, https://mintcdn.com/ollie/ZKpSeyUd64Smy50J/images/studio-preview.png?w=1650\u0026fit=max\u0026auto=format\u0026n=ZKpSeyUd64Smy50J\u0026q=85\u0026s=c13a3e5432f23cf4bf3821ce5f75f1b1 1650w, https://mintcdn.com/ollie/ZKpSeyUd64Smy50J/images/studio-preview.png?w=2500\u0026fit=max\u0026auto=format\u0026n=ZKpSeyUd64Smy50J\u0026q=85\u0026s=618a05f3b3b0c3c4a660bc0ed0d7f367 2500w`})})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`step-5-choose-a-slot-and-publish`,children:`Step 5: Choose a Slot and Publish`}),`\n`,_jsx(_components.p,{children:`Studio registers and deploys an unlinked component in one step.`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Pick a slot`,children:[_jsxs(_components.p,{children:[`Open the `,_jsx(_components.code,{children:`HelloWorld`}),` card in the `,_jsx(_components.strong,{children:`Components`}),` tab. In the `,_jsx(_components.strong,{children:`Slot`}),` field, choose where the component renders (for example `,_jsx(_components.code,{children:`cart_header_full_page`}),`, above the cart content). The preview updates as soon as a slot is set.`]}),_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`/ollie-shop/concepts/slots`,children:`Slots`}),` to understand what a slot is.`]}),_jsx(Frame,{caption:`The props panel: pick the slot, then Publish`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/ollie/ZKpSeyUd64Smy50J/images/studio-props-panel.png?fit=max\u0026auto=format\u0026n=ZKpSeyUd64Smy50J\u0026q=85\u0026s=a50c62e7fa90f69c90a315de6d236184`,alt:`Studio props panel with the Publish button`,\"data-og-width\":`1440`,width:`1440`,\"data-og-height\":`900`,height:`900`,\"data-path\":`images/studio-props-panel.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/ollie/ZKpSeyUd64Smy50J/images/studio-props-panel.png?w=280\u0026fit=max\u0026auto=format\u0026n=ZKpSeyUd64Smy50J\u0026q=85\u0026s=3c072438fb2a93841e3eb14fa0c1d188 280w, https://mintcdn.com/ollie/ZKpSeyUd64Smy50J/images/studio-props-panel.png?w=560\u0026fit=max\u0026auto=format\u0026n=ZKpSeyUd64Smy50J\u0026q=85\u0026s=d476eaf1da2a156b1946b7d65d758bbb 560w, https://mintcdn.com/ollie/ZKpSeyUd64Smy50J/images/studio-props-panel.png?w=840\u0026fit=max\u0026auto=format\u0026n=ZKpSeyUd64Smy50J\u0026q=85\u0026s=706729aa87cb01402283f9ae90edca48 840w, https://mintcdn.com/ollie/ZKpSeyUd64Smy50J/images/studio-props-panel.png?w=1100\u0026fit=max\u0026auto=format\u0026n=ZKpSeyUd64Smy50J\u0026q=85\u0026s=f57f440cd0ca38e249177fb1547d2367 1100w, https://mintcdn.com/ollie/ZKpSeyUd64Smy50J/images/studio-props-panel.png?w=1650\u0026fit=max\u0026auto=format\u0026n=ZKpSeyUd64Smy50J\u0026q=85\u0026s=89fec2204955dafe767762f0804215c6 1650w, https://mintcdn.com/ollie/ZKpSeyUd64Smy50J/images/studio-props-panel.png?w=2500\u0026fit=max\u0026auto=format\u0026n=ZKpSeyUd64Smy50J\u0026q=85\u0026s=f1d78788bfdf19c85ea92a8b452925ad 2500w`})})]}),_jsxs(Step,{title:`Publish`,children:[_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Publish`}),`. Studio creates the component in your store version, bundles your code, uploads it, and shows the build status. The button stays disabled until a slot is set.`]}),_jsxs(_components.p,{children:[`When the build succeeds, the CLI records the new component id in your project’s `,_jsx(_components.code,{children:`ollie.json`}),` under `,_jsx(_components.code,{children:`components`}),`, so the folder stays linked from now on.`]})]}),_jsx(Step,{title:`View on your live store`,children:_jsx(_components.p,{children:`Visit your store’s checkout to see your component live!`})})]}),`\n`,_jsxs(Accordion,{title:`Prefer to register the component in the Admin first?`,id:`prefer-to-register-the-component-in-the-admin-first`,children:[_jsx(_components.p,{children:`You can also create the component record yourself and link it to the folder before deploying.`}),_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`In the Admin, open your store, click `,_jsx(_components.strong,{children:`Components`}),` in the sidebar, then `,_jsx(_components.strong,{children:`Create Component`}),`.`]}),`\n`,_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/ollie/UatGh8GLCugPlVFB/ollie-shop/imgs/component-create.png?fit=max\u0026auto=format\u0026n=UatGh8GLCugPlVFB\u0026q=85\u0026s=2eda57e33ec49472b4de6d0a04788b10`,alt:`Component Create`,\"data-og-width\":`2878`,width:`2878`,\"data-og-height\":`1752`,height:`1752`,\"data-path\":`ollie-shop/imgs/component-create.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/ollie/UatGh8GLCugPlVFB/ollie-shop/imgs/component-create.png?w=280\u0026fit=max\u0026auto=format\u0026n=UatGh8GLCugPlVFB\u0026q=85\u0026s=3efdff0a2f09274730a5d8d898bc15b3 280w, https://mintcdn.com/ollie/UatGh8GLCugPlVFB/ollie-shop/imgs/component-create.png?w=560\u0026fit=max\u0026auto=format\u0026n=UatGh8GLCugPlVFB\u0026q=85\u0026s=62251317c1161dfd259b3fecc1ec0231 560w, https://mintcdn.com/ollie/UatGh8GLCugPlVFB/ollie-shop/imgs/component-create.png?w=840\u0026fit=max\u0026auto=format\u0026n=UatGh8GLCugPlVFB\u0026q=85\u0026s=e6b62372f31cf118014370ad3b6e0936 840w, https://mintcdn.com/ollie/UatGh8GLCugPlVFB/ollie-shop/imgs/component-create.png?w=1100\u0026fit=max\u0026auto=format\u0026n=UatGh8GLCugPlVFB\u0026q=85\u0026s=c8028551bea90da722a12324e25838b1 1100w, https://mintcdn.com/ollie/UatGh8GLCugPlVFB/ollie-shop/imgs/component-create.png?w=1650\u0026fit=max\u0026auto=format\u0026n=UatGh8GLCugPlVFB\u0026q=85\u0026s=96b1cfc0d5bfc87fc31087bc2cee8d51 1650w, https://mintcdn.com/ollie/UatGh8GLCugPlVFB/ollie-shop/imgs/component-create.png?w=2500\u0026fit=max\u0026auto=format\u0026n=UatGh8GLCugPlVFB\u0026q=85\u0026s=40a6d82f7990d161fe557bc2509bf6ec 2500w`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Fill in `,_jsx(_components.strong,{children:`Name`}),`, `,_jsx(_components.strong,{children:`Active`}),`, `,_jsx(_components.strong,{children:`Slot`}),`, and `,_jsx(_components.strong,{children:`Version`}),`, then click `,_jsx(_components.strong,{children:`Create Component`}),`.`]}),`\n`,_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/ollie/UatGh8GLCugPlVFB/ollie-shop/imgs/component-new-create-form.png?fit=max\u0026auto=format\u0026n=UatGh8GLCugPlVFB\u0026q=85\u0026s=860b55da5d727dd8f8b5b10f2aa1ef60`,alt:`Component New Create Form`,\"data-og-width\":`2878`,width:`2878`,\"data-og-height\":`1752`,height:`1752`,\"data-path\":`ollie-shop/imgs/component-new-create-form.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/ollie/UatGh8GLCugPlVFB/ollie-shop/imgs/component-new-create-form.png?w=280\u0026fit=max\u0026auto=format\u0026n=UatGh8GLCugPlVFB\u0026q=85\u0026s=3eb7e0eb71ded3ff5fc504e30cf52a55 280w, https://mintcdn.com/ollie/UatGh8GLCugPlVFB/ollie-shop/imgs/component-new-create-form.png?w=560\u0026fit=max\u0026auto=format\u0026n=UatGh8GLCugPlVFB\u0026q=85\u0026s=020486e8cb42042eb7fd2408b7d2d89f 560w, https://mintcdn.com/ollie/UatGh8GLCugPlVFB/ollie-shop/imgs/component-new-create-form.png?w=840\u0026fit=max\u0026auto=format\u0026n=UatGh8GLCugPlVFB\u0026q=85\u0026s=d83f8bcee15f5f9fb84bbe983e840e6f 840w, https://mintcdn.com/ollie/UatGh8GLCugPlVFB/ollie-shop/imgs/component-new-create-form.png?w=1100\u0026fit=max\u0026auto=format\u0026n=UatGh8GLCugPlVFB\u0026q=85\u0026s=02451f68ce587a8cf69fb890d52249b7 1100w, https://mintcdn.com/ollie/UatGh8GLCugPlVFB/ollie-shop/imgs/component-new-create-form.png?w=1650\u0026fit=max\u0026auto=format\u0026n=UatGh8GLCugPlVFB\u0026q=85\u0026s=394bd6310c3296409074b45d9fd32696 1650w, https://mintcdn.com/ollie/UatGh8GLCugPlVFB/ollie-shop/imgs/component-new-create-form.png?w=2500\u0026fit=max\u0026auto=format\u0026n=UatGh8GLCugPlVFB\u0026q=85\u0026s=e2c523be5d3c874ad3c9f643bbfcbb57 2500w`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Copy the `,_jsx(_components.strong,{children:`Component ID`}),` from the configuration page.`]}),`\n`,_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/ollie/UatGh8GLCugPlVFB/ollie-shop/imgs/component-get-id.png?fit=max\u0026auto=format\u0026n=UatGh8GLCugPlVFB\u0026q=85\u0026s=82dabe213a92ddfac14fb4a51fb3ed62`,alt:`Component Get Id`,\"data-og-width\":`2878`,width:`2878`,\"data-og-height\":`1752`,height:`1752`,\"data-path\":`ollie-shop/imgs/component-get-id.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/ollie/UatGh8GLCugPlVFB/ollie-shop/imgs/component-get-id.png?w=280\u0026fit=max\u0026auto=format\u0026n=UatGh8GLCugPlVFB\u0026q=85\u0026s=b96527c39d8f2a1147ec4eb173182331 280w, https://mintcdn.com/ollie/UatGh8GLCugPlVFB/ollie-shop/imgs/component-get-id.png?w=560\u0026fit=max\u0026auto=format\u0026n=UatGh8GLCugPlVFB\u0026q=85\u0026s=e2ee969b5b849657f63b1afa5dfa3c69 560w, https://mintcdn.com/ollie/UatGh8GLCugPlVFB/ollie-shop/imgs/component-get-id.png?w=840\u0026fit=max\u0026auto=format\u0026n=UatGh8GLCugPlVFB\u0026q=85\u0026s=a55deb049e7dc86278a31b2a975de576 840w, https://mintcdn.com/ollie/UatGh8GLCugPlVFB/ollie-shop/imgs/component-get-id.png?w=1100\u0026fit=max\u0026auto=format\u0026n=UatGh8GLCugPlVFB\u0026q=85\u0026s=6bce1713989920f3b0b8603a804c1dcf 1100w, https://mintcdn.com/ollie/UatGh8GLCugPlVFB/ollie-shop/imgs/component-get-id.png?w=1650\u0026fit=max\u0026auto=format\u0026n=UatGh8GLCugPlVFB\u0026q=85\u0026s=655477ab8d21376340e203ba80d91071 1650w, https://mintcdn.com/ollie/UatGh8GLCugPlVFB/ollie-shop/imgs/component-get-id.png?w=2500\u0026fit=max\u0026auto=format\u0026n=UatGh8GLCugPlVFB\u0026q=85\u0026s=ae7557557f6d5ccbd8e70a3bd764cb00 2500w`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Link the folder in `,_jsx(_components.code,{children:`ollie.json`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:`ollie.json`,numberOfLines:`9`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`9`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"storeId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003cyour-store-id>\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"components\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"path\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"components/HelloWorld\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"slot\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"cart_header_full_page\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Deploy from Studio (the card now shows a `,_jsx(_components.strong,{children:`Deploy`}),` action) or from the terminal:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ollieshop`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` deploy`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --component-id`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --name`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` HelloWorld`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --wait`})]}),`\n`]})})}),`\n`]}),`\n`]})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Prefer the command line? The CLI is documented separately under `,_jsx(_components.a,{href:`/ollie-shop/cli/installation`,children:`CLI Reference`}),`.`]})}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`You’ve successfully created and deployed your first Ollie Shop component! Your custom checkout enhancement is now live.`})}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next Steps`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Integrate our skills into your project`,icon:`sparkles`,href:`/ollie-shop/skills`,children:_jsx(_components.p,{children:`Which coding agents pick the skill up on their own, how to install it where it’s missing, and how to keep it current`})}),_jsx(Card,{title:`Build Your First Component`,icon:`cube`,href:`/ollie-shop/components/your-first-component`,children:_jsx(_components.p,{children:`A deeper walkthrough: a free shipping progress bar, from folder to deploy`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Developer Quickstart","description":"Create, deploy, and see your first component live in 5 minutes","href":"/ollie-shop/get-started/quickstart"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Prerequisites","slug":"prerequisites","depth":2,"children":[]},{"title":"Step 1: Create a Hello World Component","slug":"step-1-create-a-hello-world-component","depth":2,"children":[]},{"title":"Step 2: Install Dependencies","slug":"step-2-install-dependencies","depth":2,"children":[]},{"title":"Step 3: Develop Your Component","slug":"step-3-develop-your-component","depth":2,"children":[]},{"title":"Step 4: Preview Locally with Studio","slug":"step-4-preview-locally-with-studio","depth":2,"children":[]},{"title":"Step 5: Choose a Slot and Publish","slug":"step-5-choose-a-slot-and-publish","depth":2,"children":[]},{"title":"Next Steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"ollie","siteName":"Ollie Shop","title":"Developer Quickstart - Ollie Shop","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-22T20:27:30.997Z","originalFileLocation":"ollie-shop/get-started/quickstart.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Create, deploy, and see your first component live in 5 minutes\">\u003cmeta data-mint-head name=\"application-name\" content=\"Ollie Shop\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/ollie/yezMgwqnHyCPhe5b/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/ollie/yezMgwqnHyCPhe5b/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/ollie/yezMgwqnHyCPhe5b/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/ollie/yezMgwqnHyCPhe5b/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/ollie/yezMgwqnHyCPhe5b/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/ollie/yezMgwqnHyCPhe5b/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/ollie/yezMgwqnHyCPhe5b/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/ollie/yezMgwqnHyCPhe5b/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/ollie/yezMgwqnHyCPhe5b/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Developer Quickstart - Ollie Shop\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create, deploy, and see your first component live in 5 minutes\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Ollie Shop\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.ollie.shop/ollie-shop/get-started/quickstart\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://ollie.mintlify.app/_mintlify/api/og/v2?division=Start+Here\u0026amp;title=Developer+Quickstart\u0026amp;description=Create%2C+deploy%2C+and+see+your+first+component+live+in+5+minutes\u0026amp;theme=db34de6857aebdb5a58a8951\u0026amp;signature=115eeebebef32e90133ce955f36767e6ebdfbd87c4f6648831c1ab884f9a479b\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Developer Quickstart - Ollie Shop\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create, deploy, and see your first component live in 5 minutes\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://ollie.mintlify.app/_mintlify/api/og/v2?division=Start+Here\u0026amp;title=Developer+Quickstart\u0026amp;description=Create%2C+deploy%2C+and+see+your+first+component+live+in+5+minutes\u0026amp;theme=db34de6857aebdb5a58a8951\u0026amp;signature=115eeebebef32e90133ce955f36767e6ebdfbd87c4f6648831c1ab884f9a479b\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/ollie/yezMgwqnHyCPhe5b/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Ollie Shop\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#556AEB\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.ollie.shop/ollie-shop/get-started/quickstart\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/ollie-shop/get-started/quickstart.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.ollie.shop/#organization\",\"name\":\"Ollie Shop\",\"url\":\"https://docs.ollie.shop\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/ollie/AKuzggu4Ldtc4mWE/logo/default.svg?fit=max\u0026auto=format\u0026n=AKuzggu4Ldtc4mWE\u0026q=85\u0026s=59a15240aae28bacc9c475620ba101dd\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.ollie.shop#website\",\"name\":\"Ollie Shop\",\"url\":\"https://docs.ollie.shop\",\"publisher\":{\"@id\":\"https://docs.ollie.shop/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.ollie.shop/ollie-shop/get-started/quickstart#webpage\",\"url\":\"https://docs.ollie.shop/ollie-shop/get-started/quickstart\",\"name\":\"Developer Quickstart\",\"description\":\"Create, deploy, and see your first component live in 5 minutes\",\"dateModified\":\"2026-10-22T20:27:30.997Z\",\"isPartOf\":{\"@id\":\"https://docs.ollie.shop#website\"},\"breadcrumb\":{\"@id\":\"https://docs.ollie.shop/ollie-shop/get-started/quickstart#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.ollie.shop/ollie-shop/get-started/quickstart#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Start Here\",\"item\":\"https://docs.ollie.shop/ollie-shop/get-started/admin-onboarding\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Developer Quickstart\",\"item\":\"https://docs.ollie.shop/ollie-shop/get-started/quickstart\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.ollie.shop/ollie-shop/get-started/quickstart#article\",\"headline\":\"Developer Quickstart\",\"name\":\"Developer Quickstart\",\"description\":\"Create, deploy, and see your first component live in 5 minutes\",\"url\":\"https://docs.ollie.shop/ollie-shop/get-started/quickstart\",\"mainEntityOfPage\":{\"@id\":\"https://docs.ollie.shop/ollie-shop/get-started/quickstart#webpage\"},\"dateModified\":\"2026-10-22T20:27:30.997Z\",\"publisher\":{\"@id\":\"https://docs.ollie.shop/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.ollie.shop#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Ollie Shop\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Ollie Shop","nav":{"global":null,"groups":[{"group":"Overview","pages":[{"title":"What is Ollie Shop","href":"/ollie-shop/index"}]},{"group":"Start Here","pages":[{"title":"Admin Onboarding","href":"/ollie-shop/get-started/admin-onboarding"},{"title":"Admin Overview","description":"A map of the Admin dashboard: what each sidebar entry manages and where to find it in these docs","href":"/ollie-shop/get-started/admin-overview"},{"title":"Developer Quickstart","href":"/ollie-shop/get-started/quickstart"}]},{"group":"AI Coding Agents","pages":[{"title":"Agent Skills","description":"Teach your AI assistant how to build on Ollie Shop: the CLI, the SDK, checkout slots, design tokens, functions, and the workflows that tie them together.","href":"/ollie-shop/skills/index"}]},{"group":"Core Concepts","pages":[{"title":"Stores","href":"/ollie-shop/concepts/stores"},{"title":"Templates","href":"/ollie-shop/concepts/templates"},{"title":"Slots","href":"/ollie-shop/concepts/slots"},{"title":"Slots Catalog","href":"/ollie-shop/concepts/slots-catalog"},{"title":"Components","href":"/ollie-shop/concepts/component"},{"title":"Functions","href":"/ollie-shop/concepts/function"},{"title":"Versions","href":"/ollie-shop/concepts/version"},{"title":"Global Session Objects","href":"/ollie-shop/concepts/session"}]},{"group":"Customization","pages":[{"group":"Customization","pages":[{"title":"Build Your First Component","href":"/ollie-shop/components/your-first-component"},{"title":"Custom Component 101","href":"/ollie-shop/customization/custom-component"},{"title":"Children Component","href":"/ollie-shop/customization/children-component"},{"title":"Passing Props to Custom Components","href":"/ollie-shop/customization/props"},{"title":"Extra Checkout Steps","href":"/ollie-shop/customization/steps"},{"title":"Payment Slots","href":"/ollie-shop/customization/payment-slots"},{"title":"Import Components","href":"/ollie-shop/customization/import-components"},{"title":"Managing Components in the Admin","href":"/ollie-shop/customization/managing-components"},{"title":"Roll Back a Component","href":"/ollie-shop/customization/roll-back-a-component"}]},{"group":"Configuration","pages":[{"title":"Store Settings","href":"/ollie-shop/configuration/store-settings"},{"title":"Organization and Members","href":"/ollie-shop/configuration/organization-and-members"},{"title":"Managing Versions","href":"/ollie-shop/configuration/versions"},{"title":"Integrations","href":"/ollie-shop/configuration/integrations"},{"title":"Theme Design Tokens","href":"/ollie-shop/configuration/theme"},{"title":"Fonts","href":"/ollie-shop/configuration/font"},{"title":"Custom Icons","href":"/ollie-shop/configuration/custom-icons"},{"title":"Translations","href":"/ollie-shop/configuration/translation"},{"title":"Checkout Flags","href":"/ollie-shop/configuration/feature-flags"},{"title":"Form Fields","href":"/ollie-shop/configuration/form-fields"},{"title":"Ollie Login","href":"/ollie-shop/configuration/ollie-login"},{"title":"Share Cart","href":"/ollie-shop/configuration/share-cart"},{"title":"Environment Variables","href":"/ollie-shop/configuration/env-vars"}]}]},{"group":"Ollie Studio","pages":[{"title":"What is Ollie Studio","href":"/ollie-shop/studio/index"},{"title":"Studio reference","href":"/ollie-shop/customization/studio-editor"}]},{"group":"Functions","pages":[{"title":"What are Functions","href":"/ollie-shop/functions/index"},{"title":"Writing a function","href":"/ollie-shop/functions/writing-a-function"},{"title":"Triggers","href":"/ollie-shop/functions/triggers"},{"title":"Session storage and cookies","href":"/ollie-shop/functions/session-storage-and-cookies"},{"title":"Deploying a function","href":"/ollie-shop/functions/deploying"}]},{"group":"CLI Reference","pages":[{"title":"CLI Overview","href":"/ollie-shop/cli/index"},{"title":"Installation and login","href":"/ollie-shop/cli/installation"},{"title":"Project configuration (ollie.json)","href":"/ollie-shop/cli/project-config"},{"title":"start (dev server)","href":"/ollie-shop/cli/start"},{"title":"deploy and status","href":"/ollie-shop/cli/deploy"},{"title":"Record commands","href":"/ollie-shop/cli/resources"},{"title":"function dev (local functions)","href":"/ollie-shop/cli/function-dev"},{"title":"whoami","href":"/ollie-shop/cli/whoami"}]},{"group":"Ollie SDK","pages":[{"title":"SDK Reference","href":"/ollie-shop/api/index"},{"title":"React Hooks API Reference","href":"/ollie-shop/api/hooks"},{"group":"Hooks","pages":[{"group":"Checkout Session","pages":[{"title":"useCheckoutSession","href":"/ollie-shop/api/useCheckoutSession"},{"title":"CheckoutSession Type","href":"/ollie-shop/api/CheckoutSession"}]},{"title":"useCheckoutAction","href":"/ollie-shop/api/useCheckoutAction"},{"group":"Checkout Order","pages":[{"title":"useCheckoutOrder","href":"/ollie-shop/api/use-checkout-order"},{"title":"Checkout Order Types","href":"/ollie-shop/api/checkout-order-types"}]},{"title":"usePendingActions","href":"/ollie-shop/api/use-pending-actions"},{"title":"useStoreInfo","href":"/ollie-shop/api/use-store-info"},{"title":"useMessages","href":"/ollie-shop/api/useMessages"},{"title":"useLogin","href":"/ollie-shop/api/use-login"},{"title":"useNavigation","href":"/ollie-shop/api/use-navigation"}]}]},{"group":"Analytics \u0026 Scripts","pages":[{"title":"Native Checkout Events","href":"/ollie-shop/analytics/index"},{"title":"Custom Events","href":"/ollie-shop/analytics/custom-events"},{"title":"Enriching Events with GTM","href":"/ollie-shop/analytics/gtm-enrichment"},{"title":"Device Fingerprint","href":"/ollie-shop/analytics/device-fingerprint"}]},{"group":"Tools \u0026 Tips","pages":[{"title":"Easy Cart","href":"/ollie-shop/cheat-sheet/Easy-Cart"}]},{"group":"Product updates","pages":[{"title":"changelog","href":"/ollie-shop/changelog"}]}]},"title":"Developer Quickstart - Ollie Shop","buildId":"dpl_5UDDZ9hnigTkoV7QtvQ39eUp84nu","deploymentId":"dpl_5UDDZ9hnigTkoV7QtvQ39eUp84nu","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-CUTvSGqu.js","DynamicMarkdown-BGu84FgU.js","zoom-image-lightbox-ChyC7Hte.js","PlusIcon-DXkY3IBj.js","lightbox-handle-r17bVUz3.js"]}