E-shop Launch Guide
Install Claude Code once, then copy the ready made prompt in each chapter. Claude does the technical work in front of you, while you create the accounts, enter your own details and approve what happens.
One prompt that walks you through everything
First install Node.js and Claude Code once, which is described in chapters 1 to 4 of the full documentation. Then paste the command from the e-mail into a terminal. The e-shop downloads and Claude Code starts with this prompt by itself. If you downloaded the ZIP instead, run the claude command inside the project folder and paste the prompt below. Claude takes you through all the rest and only ever asks you for accounts, keys and approvals.
Paste this prompt into Claude Code
I bought StartEshop, the whole project is in this folder. I am not technical. Take me all the way to my own shop running on my domain and taking real orders. How we work: - Write in plain English, short and without jargon. One step at a time, and before each one tell me in one sentence what you will do and why. - You do the terminal, the code, the configuration and the deployment. I create the accounts with the services: tell me exactly where to go and what to look for, and when I am unsure, ask me what I see on the screen. - I never put keys or passwords in the chat. Prepare a .env file with empty entries and open it for me, I will paste them in myself. Then only check that they are filled in, never print the values. - Anything that costs money I approve first. - Keep a PROGRESS.md file with what is done and what is left, so I can stop at any time and next time just write "continue from PROGRESS.md". Before you start, study the project yourself, including .env.example, src/config/store.ts and the docs in dph/, and the guide at https://www.starteshop.cz/en/lp/dokumentace/llms.txt. Then show me the plan in a few points. The order I insist on: 1. Get the shop running on my computer first. 2. Before the first deployment to the internet, replace the default admin password and token with strong ones and fill in my company details in src/config/store.ts with me: company ID, address and bank account. Whether I am a VAT payer, my VAT ID and the rate we then set in the admin under Nastavení › DPH, which the invoices and the /dph agent read. 3. Put the shop online: recommend hosting (for example Vercel through my GitHub, or my own server) and connect my domain. The domain appears in several places in the project, including the Resend verification (and the Stripe webhook if I switch cards on), find and change all of them. On Vercel use the Pro plan (a shop that takes payments needs it under Vercel's terms) and connect a Blob store for product photos. 4. For every service, tell me what it costs. Warn me that the shop's AI features use an API billed by usage, separately from my Claude subscription. 5. Ask me whether I want card payments. If yes, go through a test order in Stripe test mode with me and then switch to live mode. If not, test an order paid by bank transfer. Either way check that the e-mails arrived and the invoice shows my details. 6. Finally open Nastavení › Připraveno ke spuštění (Settings › Ready to launch) in the admin with me and fix everything marked as required, plus the recommended items (image storage, scheduled jobs), and the domain, company and bank details. Safety: before any change to the database, back it up with the date in the file name. If an error shows up, read its full text, explain it in one sentence and only then fix it. When VAT comes up (monthly or quarterly), remind me of the /dph agent.
Paste it as a single message. From there Claude does the asking, you only answer and confirm.
The detailed chapters are still here. Switch to Full documentation any time and go through the one you need step by step.
How this documentation works
Chapters 1 to 4 are one time manual preparation: you install Node.js and Claude Code. From chapter 5 on, every chapter starts with a prompt you copy into Claude Code, followed by what Claude will do and what it will need from you.
What you do
- •You create the service accounts. They are yours and they are in your name.
- •You enter your own credentials and API keys. They stay in your .env file and in your own Vercel account.
- •You approve anything that costs money, and every step Claude asks about.
- •You decide how the shop should look and work, and you check the result in your browser.
What Claude Code does
- •Writes and runs the terminal commands, so you never have to learn them.
- •Creates and fills in the configuration from the details you dictate.
- •Edits code, texts, shipping prices and styling, and shows you the change.
- •Deploys the shop and helps track down the cause when something is off.
It works with you, not behind your back
Estimated time: 1 to 2 hours
Most of it goes into signing up with the services, which only you can do. The setup and the deployment itself run under Claude Code.
Contents
What you will need
One time manual stepNone of this is technical. A computer, an email address and a quiet hour will do.
Basic requirements
A computer
Windows, Mac or Linux, anything works. The VAT and support agents run on a Mac, on Linux and on Windows (through WSL).
An email address
For signing up with the services (Vercel, Stripe and others)
What you receive after purchase
An install command and a ZIP file
The complete e-shop including the admin, invoicing and the accounting agent. The command from the e-mail installs it by itself, the ZIP you unzip by hand. From that moment it is yours.
A payment card (for the Claude Code subscription, and for Stripe verification if you switch on card payments)
You pay for Claude Code on your own Anthropic account; it is not part of the shop price. Stripe verifies your card during signup if you switch on card payments.
What it costs
- •Claude Code: your own Anthropic account (chapter 4). It is not a fee for the shop, which runs without it. The same Claude also helps you with accounting, VAT, legal texts and customer support.
- •Hosting and services: Neon and Resend have free tiers to start with. You choose the hosting yourself, and starter plans are often free or cheap. On Vercel a shop uses its Pro plan; you can also run the shop elsewhere or on your own server.
- •Stripe (if you switch on card payments): no monthly fee, only a commission on payments you actually take.
- •Domain: a yearly fee with a registrar, if you want your own.
You do not need to code
Glossary
Only the terms you actually meet in this guide. You do not need to know more than this.
Two words you will see everywhere
Prompt
The sentence or paragraph in which you tell Claude Code what to do. Every chapter has one ready, you just copy it.
The .env file
A text file in the project folder holding your service keys. It never goes online and it never belongs in a code backup.
Programs on your computer
Claude Code
Your assistant. It runs in the terminal, reads the project folder and does the work you give it, with every step visible to you.
Terminal
A window for typing commands. PowerShell on Windows (Start, type PowerShell, Enter), Terminal on a Mac. You will mostly open it just to start Claude Code.
Node.js
The engine the shop runs on. You install it once in chapter 3 and then forget about it.
Online services
Vercel
The hosting where your shop runs on the internet, taking care of speed and uptime. A shop on Vercel uses its Pro plan (under Vercel's terms the free plan is for non-commercial projects). The shop also runs on any other Node.js hosting or your own server; the choice of hosting is yours.
Neon
The database. This is where products, orders and customers live. The free tier is usually enough to start.
Stripe
The payment gateway for cards, Apple Pay and Google Pay, if you want to offer them. You pay a commission on transactions only.
Resend
Sends the emails your customers get, such as order confirmations and shipping notices.
Packeta (Zásilkovna)
Shipping. Customers pick a collection point in the cart, and you print labels in batches.
GitHub(optional)
Storage for your shop's code. Not required, but with it Vercel deploys every change on its own.
You do not need the details
Installing Node.js
One time manual stepWhy install this by hand? Node.js is the engine both the shop and Claude Code itself run on, so it has to come first. It is the last install you do on your own.
- 1
Go to nodejs.org
- 2
Click the button "Get Node.js®"
- 3
On the download page choose the LTS version (recommended)
The page detects your system and offers the right file
- 4
Open the downloaded file and keep clicking "Next" to the end
- 5
Restart your computer
How you know it worked
Setting up Claude Code
One time manual stepClaude Code is a separate service from Anthropic. It needs its own account and its own subscription, which is not included in the price of the e-shop. Without it you cannot run the rest of this guide.
ACreating an Anthropic account
- 1
Go to claude.ai
- 2
Click "Sign Up" and create an account (you can use a Google account)
- 3
After signing in, choose Upgrade in the account menu and pick a plan, usually Claude Pro is enough
Plans:
- Claude Pro: the lower monthly plan, usually enough to launch a shop
- Claude Max: the higher plan for intensive daily use
Current pricing and limits are on Anthropic's own site and change over time. A subscription is usually cheaper than paying for API credits.
BInstalling Claude Code
- 1
Open the terminal:
- Windows: Win + R, type
powershell, Enter - Mac: Cmd + Space, type "Terminal", Enter
- Windows: Win + R, type
- 2
Windows only: first install Git for Windows, which Claude Code needs on Windows. The installer defaults are fine: git-scm.com/downloads/win
- 3
Copy the command for your system into the terminal and press Enter:
Windows (PowerShell):
irm https://claude.ai/install.ps1 | iexMac:
npm install -g @anthropic-ai/claude-code - 4
Wait for the install to finish (it can take a minute)
CFirst run and sign in
- 1
In the terminal type:
claude - 2
A browser opens and you sign in to your Anthropic account
- 3
Sign in and allow access
- 4
Claude Code is ready. From here on you talk to it right in the terminal
From here on you work with prompts
Creating service accounts
The accounts have to be created by you, they are in your name and you pay for them. Claude walks you through them and tells you exactly where to click and what to copy.
Copy this prompt into Claude Code
I own this e-shop and I am not technical. Open the .env.example file in the project and walk me through the services I need to sign up for, one at a time: 1. Neon (database, the DATABASE_URL key) 2. Stripe (card, Apple Pay and Google Pay; optional, without it the shop offers bank transfer with a QR code and cash on delivery; the STRIPE_SECRET_KEY and NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY keys) 3. Resend (customer emails, the RESEND_API_KEY key) 4. Packeta / Zásilkovna (shipping, the PACKETA_API_KEY and PACKETA_API_PASSWORD keys) 5. Vercel (the hosting the shop will run on) 6. File storage: Vercel Blob (created in the Vercel project under Storage › Blob, which fills in BLOB_READ_WRITE_TOKEN automatically), or Cloudflare R2 (the R2_… keys). On Vercel I need it so product photos can be uploaded in the admin. For each service tell me which address to go to, what to fill in, which value to copy and what the service costs. Go through the whole of .env.example, and if it lists other services, for example keys for the shop's AI features, tell me what they are for and whether I need them right away. The AI features are billed by usage, separately from my Claude subscription. I do the signing up, you just tell me what to click. I will keep the keys aside for now, we are not putting them into the project yet. After each service, wait until I tell you I am done.
Replace anything in square brackets with your own details.
What Claude will do
- •Reads the .env.example file and tells you exactly which keys this shop needs and what each one is for.
- •Takes you through one service at a time and waits while you finish signing up.
- •Points out what is free and where you pay a commission or a monthly fee.
- •Helps with the choices signup asks about, such as the eu-central-1 (Frankfurt) database region for speed in Central Europe.
What it will ask you for
- •That you click through the signups yourself. The accounts are yours.
- •A confirmation after each service so it knows when to move on.
- •That you keep the copied keys aside for now. You enter them in chapter 6.
Manual step by step referenceOpen this if you would rather do it yourself, or want to know what is happening under the hood.
Neon
The database holding products and orders
- 1
Go to neon.tech and sign up
- 2
Click "New Project"
- 3
Name the project (for example "my-eshop") and pick the eu-central-1 (Frankfurt) region
After it is created, copy the Connection string. That is the value for DATABASE_URL.
Stripe(optional)
Cards, Apple Pay and Google Pay
- 1
Go to stripe.com and create an account
- 2
Go through business verification (you can finish it later, test mode works in the meantime)
- 3
In the dashboard: Developers → API keys, copy both keys
The publishable key is NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY, the secret key is STRIPE_SECRET_KEY. The third one, the webhook signing secret, comes in chapter 9.
Resend
Sending emails to your customers
- 1
Go to resend.com and sign up
- 2
Open API Keys and create a new key
- 3
Once you have your own domain, verify it under Domains so emails go out from your address
The key is the value for RESEND_API_KEY. Without a verified domain you can only send from Resend's test address.
Packeta (Zásilkovna)
Shipping and collection points
- 1
Go to client.packeta.com and create an account
- 2
In the client area find your API password and API key
- 3
The key is needed twice, once for the server and once for picking a collection point in the cart
These are the values for PACKETA_API_KEY, PACKETA_API_PASSWORD and NEXT_PUBLIC_PACKETA_API_KEY.
Vercel
The hosting the shop runs on
- 1
Go to vercel.com
- 2
Click "Sign Up", ideally with GitHub so deployments run on their own later
- 3
Confirm your email if Vercel asks for it
Before you move on you should have:
- ✓ The Neon connection string
- ✓ The Stripe publishable and secret keys, if you want card payments
- ✓ The Resend API key
- ✓ The Packeta API key and password
- ✓ A Vercel account
- ✓ File storage keys (Vercel Blob or R2) if you deploy on Vercel
Preparing the project
If you used the command from the e-mail, this step is done and Claude Code is already running the guide. Otherwise unzip the project into a plain folder (on Windows for example C:\eshop, on a Mac your home folder), open a terminal inside the folder, type claude and paste this prompt.
Copy this prompt into Claude Code
Get this project ready to run on my computer for the first time. Work step by step and tell me what happened after each one: 1. Create a .env file based on .env.example. 2. I will not put keys in the chat. Leave them empty in .env and open the file for me, I will paste in the DATABASE_URL from Neon, both Stripe keys (if I want card payments), RESEND_API_KEY, the Packeta keys and the file storage key (BLOB_READ_WRITE_TOKEN or the R2 keys) if I deploy on Vercel myself. Then only check that they are filled in, do not print the values and invent nothing. 3. Generate strong random values for ADMIN_TOKEN and ADMIN_PASSWORD, write them into .env and tell me where to find them there so I can save them. Do not print them in the chat. 4. Set NEXT_PUBLIC_BASE_URL and NEXT_PUBLIC_URL to http://localhost:3000 for now. 5. Run npm install, then npx prisma generate and npx prisma db push so the tables are created, then npm run db:search, which sets up search that ignores accents and typos, and finally npm run db:seed, which adds 10 sample products (codes UKAZKA-…) and three live discount codes, SLEVA50, SLEVA100 and SLEVA200, which the shop advertises on product pages and in the cart. 6. Run npm run dev and tell me the address where I will see the shop and the address where I sign in to the admin. If anything fails, fix it and explain in one sentence what it was.
Replace anything in square brackets with your own details.
What Claude will do
- •Creates the .env file with your keys. It stays on your computer and never reaches a code backup.
- •Generates a strong admin password and token so nothing stays at a default value.
- •Installs the dependencies and creates every table the shop needs in your empty database.
- •Starts the shop at http://localhost:3000 and leaves it running.
What it will ask you for
- •The keys you saved in chapter 5.
- •Your approval before it overwrites a file that already exists.
- •That you write down the admin password. You sign in with it at /admin/login.
Manual step by step referenceOpen this if you would rather do it yourself, or want to know what is happening under the hood.
1. Unzip the project
Unzip it into a plain folder, on Windows for example C:\eshop, on a Mac your home folder. On Windows avoid the Desktop and Documents: they are often synced to OneDrive, and installing there tends to fail.
2. Open a terminal in the folder
Windows: Open the folder, right click, "Open in Terminal"
Mac: Right click the folder, "New Terminal at Folder"
3. Start Claude Code
Type claude in the terminal and paste the prompt above.
What goes into .env
The .env.example file is the template with all the names. To get started you need these:
- •DATABASE_URL: the database connection from Neon
- •ADMIN_TOKEN and ADMIN_PASSWORD: admin access, generated by Claude
- •NEXT_PUBLIC_BASE_URL and NEXT_PUBLIC_URL: the address of the shop
- •STRIPE_SECRET_KEY, NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY, STRIPE_WEBHOOK_SECRET: card, Apple Pay and Google Pay payments (optional)
- •RESEND_API_KEY: sending emails
- •PACKETA_API_KEY, PACKETA_API_PASSWORD, NEXT_PUBLIC_PACKETA_API_KEY: shipping
- •File storage: BLOB_READ_WRITE_TOKEN (photos, invoice copies) or the R2 keys (credit notes, support attachments), plus PROJECT_NAME. Required on Vercel so photos can be uploaded. On your own server, without them photos go to public/uploads, so back that folder up.
- •ANTHROPIC_API_KEY: optional, for the in-shop AI assistant
- •CRON_SECRET: the key for the daily jobs (low-stock e-mail, review reminders, Google feed, cancelling unpaid card orders, AI reply drafts, goods from suppliers), generated by Claude
- •NEXT_PUBLIC_BTCPAY_ENABLED, BTCPAY_URL, BTCPAY_STORE_ID, BTCPAY_API_KEY, BTCPAY_WEBHOOK_SECRET: optional, Bitcoin payments through your own BTCPay Server, guide in SETUP-BITCOIN.md
Local vs. production
The shop runs in two shapes: one only you can see on your computer, and one your customers see online. You try changes at home first and only then send them out.
Copy this prompt into Claude Code
I want to work safely: at home first, live second. Start the shop on my computer with npm run dev and leave it running so I see changes in the browser right away. When I tell you I am happy with a change, verify with npm run build that the shop is ready to deploy. One warning though: npm run build in this project also runs prisma db push, so before you run it always tell me which database DATABASE_URL in .env points to and wait for my confirmation.
Replace anything in square brackets with your own details.
What Claude will do
- •Starts the local version at http://localhost:3000 and leaves it running, so changes show up in seconds.
- •Verifies before deployment that the shop builds without errors.
- •Tells you which database the project is currently pointed at, so you do not touch the live one by accident.
What it will ask you for
- •Your confirmation before it runs the build, because that also touches the database structure.
- •Your eyes. Look at the change in the browser before it goes out.
Local development
On your computer
Only you can see it. For testing and edits.
- •Trying out new features
- •Design and content edits
- •Experimenting with no risk
Address:
http://localhost:3000Production
On the internet (Vercel)
Your customers see it. Live operation.
- •Real orders
- •Real payments
- •Real emails to customers
Address:
https://vas-eshop.vercel.appOne thing worth knowing
In this project npm run build first runs prisma generate and prisma db push, and only then builds the shop. So it also touches the structure of whichever database DATABASE_URL points to. That is why the prompt above has Claude tell you which database that is first. The build also runs npm run db:search itself, so the search indexes stay in place.
Commands you will seeClaude Code runs these for you. They are here so you know what is scrolling past in the terminal.
npm installonce at the startDownloads the libraries the shop is built from.
npm run devlocal developmentStarts the shop at http://localhost:3000.
npm run buildbefore deployingChecks that the shop builds. Also syncs the database structure.
npx prisma db pushdatabaseApplies the table structure to the database.
npm run db:searchdatabaseSets up search in the database that ignores accents and typos. Run it after every db push (a build included); safe to rerun any time.
npm run db:studiolooking at dataOpens a simple browser for the database contents.
git add . && git commit -m "message" && git pushshipping changesSends changes to GitHub, and Vercel deploys them on its own.
claudeyour assistantStarts Claude Code in the project folder.
The order that works
Going live
Now the shop gets a public address. The easiest route is through GitHub, because Vercel then deploys every later change by itself.
Copy this prompt into Claude Code
Deploy this e-shop to the internet on Vercel. First tell me in one sentence what you are about to do and wait for my yes. Then: 1. Check that the .env file, the dph/vat folder and dph/company.json are kept out of git. 2. Create a git repository and push the project to my GitHub, I will sign in to GitHub myself. 3. Go through .env.example and list every environment variable I have to add in Vercel and where each one comes from. I will copy the values from my .env myself, do not print them. Check that ADMIN_PASSWORD and ADMIN_TOKEN are no longer the defaults. 4. Once it is deployed, give me the public address, open it and check that the shop loads and that I can sign in to the admin. 5. Schedule the shop's daily jobs per CLAUDE.md, section "Daily jobs (cron)": generate CRON_SECRET (in .env and in Vercel, never print it) and add the jobs to vercel.json, or to crontab on your own server. If my Vercel plan cannot run a job hourly, schedule the AI drafts daily and tell me. Tell me everything the shop then does on its own. 6. Check that the Vercel project is on the Pro plan (a shop that takes payments needs it under Vercel's terms), and connect a Blob store to it (Storage › Blob) so product photos can be uploaded in the admin.
Replace anything in square brackets with your own details.
What Claude will do
- •Checks that neither your keys nor your accounting documents end up in a public code repository.
- •Prepares the project for GitHub and pushes it there.
- •Lists exactly the variables this shop needs and says where each one comes from.
- •Checks after deployment that the public address really works.
- •Schedules the daily jobs (low-stock e-mail, review reminders, Google feed, cancelling unpaid card orders).
What it will ask you for
- •Signing in to GitHub and to Vercel. Both are done by you.
- •Entering the variables in Vercel. You type the keys in yourself.
- •Your approval before anything is made public for the first time.
Manual step by step referenceOpen this if you would rather do it yourself, or want to know what is happening under the hood.
Option A: through GitHub (recommended)
- 1
Tell Claude Code:
"Create a new GitHub repository and push this project there"
- 2
In Vercel click "Add New Project"
- 3
Connect your GitHub account and pick the repository
- 4
Under "Environment Variables" add every variable from
.env - 5
Click "Deploy" and wait
Option B: through the Vercel CLI
- 1
Install the Vercel CLI:
npm install -g vercel - 2
Run the deployment:
vercel - 3
Answer the questions, Enter is usually fine
- 4
After deploying, add the environment variables in Vercel
Done
vas-projekt.vercel.appYour own server instead of Vercel
Payments (Stripe)
Card payments are optional; without them the shop offers bank transfer with a QR code and cash on delivery. For the shop to know a customer has paid, Stripe has to be able to tell it. That notification is called a webhook and you set it up once.
Copy this prompt into Claude Code
Help me get card payments working. Open src/app/api/stripe/webhook/route.ts and list the events this shop actually handles. Then walk me through it step by step: where in the Stripe dashboard to create the webhook, which URL to enter (my shop address plus /api/stripe/webhook at the end) and which events to tick. I will copy the signing secret starting with whsec_ myself, you tell me where it goes in .env and in Vercel and what has to happen for the change to take effect. Finally, walk me through a test order in Stripe test mode and tell me where I will see it in the admin. When I want to take real payments, walk me through activating my Stripe account and switching to live mode: the live keys in .env and in Vercel and a new webhook for live mode, because the test one does not work there. Finally walk me through turning on Apple Pay and Google Pay: adding my shop's domain under Payment method domains in Stripe (Settings › Payment methods). Remind me that adding or changing the keys needs a new build (a redeploy on Vercel).
Replace anything in square brackets with your own details.
What Claude will do
- •Reads the events straight out of the shop's own code, so the list always matches your version.
- •Builds the exact webhook address from your domain.
- •Tells you where the signing secret belongs and why it also has to be in Vercel.
- •Walks a test order with you from cart to invoice.
What it will ask you for
- •Signing in to the Stripe dashboard and clicking the webhook together. That part is yours.
- •The copied whsec_ signing secret.
- •The decision on when to switch from test mode to live.
Manual step by step referenceOpen this if you would rather do it yourself, or want to know what is happening under the hood.
- 1
In the Stripe dashboard: Developers → Webhooks
- 2
Click "Add endpoint"
- 3
Enter this as the endpoint URL:
https://vase-domena.cz/api/stripe/webhookReplace the domain with your real domain or your Vercel address.
- 4
Select the events the shop handles:
- • payment_intent.succeeded
- • payment_intent.payment_failed
- • payment_intent.processing
- • checkout.session.completed
- • charge.succeeded
- • charge.updated
- • charge.refunded
- 5
Click "Add endpoint"
- 6
Copy the signing secret (whsec_...) and add it to .env and to Vercel as
STRIPE_WEBHOOK_SECRET
Adding your own domain
You buy the domain from a registrar yourself. After that it has to be changed in several places at once, which is exactly what Claude keeps track of.
Copy this prompt into Claude Code
I bought the domain [my-domain.com] and I want to use it instead of the .vercel.app address. Walk me through every place the domain has to change, and make the edits you can: 1. The DNS records I have to set at my registrar, show them to me from Vercel. 2. NEXT_PUBLIC_BASE_URL and NEXT_PUBLIC_URL in the .env file and in Vercel. 3. baseUrl and supportUrl in src/config/store.ts. 4. The webhook address in Stripe, and the new domain under Payment method domains, otherwise Apple Pay and Google Pay disappear. 5. Verifying the domain in Resend so customer emails come from my address. Make the changes inside the project yourself, tell me what to click in the services, and at the end give me a list of what is done and what is still on me.
Replace anything in square brackets with your own details.
What Claude will do
- •Updates the shop address inside the project, meaning .env and src/config/store.ts.
- •Reminds you of the places people forget: the Stripe webhook and the verified domain in Resend.
- •Gives you a closing list of what is finished and what is still waiting on you.
What it will ask you for
- •Buying the domain and having access to DNS at the registrar.
- •Entering the DNS records Vercel lists.
- •A little patience, DNS propagation is usually minutes, occasionally hours.
Manual step by step referenceOpen this if you would rather do it yourself, or want to know what is happening under the hood.
- 1
Buy a domain from a registrar (Wedos, Forpsi, IONOS and others)
- 2
In Vercel: Settings → Domains
- 3
Add your domain
- 4
Vercel lists the DNS records to set at your registrar
- 5
Wait for DNS propagation, usually minutes, at most 24 hours
First steps after launch
The shop is running. Now let us make it yours. Start with the first prompt, the rest are on the cards below and you take them as you need them.
Identity and password first
Before you let customers in, change the admin credentials and fill in the details that appear on invoices and in emails.
Copy this prompt into Claude Code
I am taking this shop live, let us make it mine. 1. Generate new strong values for ADMIN_PASSWORD and ADMIN_TOKEN, change them in .env and in Vercel, and tell me where to find them in .env so I can save them. Do not print them in the chat. 2. Open src/config/store.ts and ask me one at a time for: the shop name and tagline, the company name, the address, the company number, the contact and support email, the phone number, the bank account and IBAN for invoices, and the sender email. Fill in only what I tell you, invent nothing. Then walk me through the admin, Nastavení › DPH, where I set whether I am VAT registered, my VAT number and the rate. 3. When that is done, tell me which of these details show up on invoices, which in emails and which in the shop footer. 4. Show me the sample codes SLEVA50, SLEVA100 and SLEVA200 in the admin under Slevové kódy, and the sample products UKAZKA-…, and ask whether I want to change, switch off or delete them. 5. Once the changes are deployed, open the admin on the live address with me, Nastavení (Settings) › Připraveno ke spuštění (Ready to launch). Go through every item that is not done yet (each has a ready-made request for you) and send the test e-mail from there.
Replace anything in square brackets with your own details.
What Claude will do
- •Replaces the default admin credentials with your own, both on your computer and in Vercel.
- •Fills in your company details in one place, which invoices, emails and the footer all read from.
- •Walks you through the VAT setting in the admin (Nastavení › DPH), which invoices, e-mails and the accounting agent in chapter 12 all read.
- •Goes through the Ready to launch checklist in the admin with you, so nothing is forgotten.
What it will ask you for
- •Your real company details, company number, VAT number and bank account.
- •That you save the new admin password. You sign in with it at /admin/login.
- •A deployment, so the new values reach the live address too.
More prompts you will want
Products and categories
I want to fill the shop with stock. Show me where categories and products are added in the admin, and create one sample product there so I can see what a finished item looks like. My products are in a spreadsheet, so also walk me through the bulk import from Excel and the columns the template expects.
Shipping and payment
The shipping and payment names and prices live in src/lib/order-options.ts. List what is there now, then set: [Packeta pickup 89, home delivery 99, cash on delivery 39, personal pickup free]. Check that this carries through correctly into the cart and the confirmation email.
Shop texts
The shop texts live directly in the pages and components (src/app, src/components). Find and change [describe the text you want edited] for me and show me everywhere it appears.
Look and feel
I want to change the main colour of the shop to [colour]. The colours are not in a single file, they are Tailwind classes inside the components, so first find and list where the main colour is used, propose the change and show it to me on localhost. I will confirm, and only then apply it everywhere.
Customer emails
Switch on sending e-mails through Resend: walk me through verifying my domain in Resend (I set the SPF and DKIM DNS records at my registrar, then we wait for Verified), then set the sender address (fromEmail) and the reply-to address (replyTo) in src/config/store.ts under email to that domain: [address]. I paste RESEND_API_KEY into .env (and Vercel) myself. Finally show me a preview of the order confirmation and send a test e-mail from the admin (Nastavení), so I can see the email before the first customer does.
A test order
Walk me through a whole test order paid by bank transfer: from the cart to the confirmation email with the QR payment. Show me where I find the order in the admin and how I mark it paid once the money arrives (transfers are matched by hand), and check that the payment-received email then arrives with the invoice attached, showing my details. If Stripe is set up, do the same with a card in test mode and show me that the payment was recorded on its own.
When you are stuck
Agents: VAT and customer support
The e-shop ships with an accounting agent for Claude Code. Once a month you type /dph and get finished XML files for the Czech VAT return, the control statement and the EC sales list when you sell to EU businesses. It works for monthly and quarterly payers, companies and sole traders; for a quarterly payer it adds up the whole quarter after its third month. You just upload them to mojedane.cz.
Once a month all you type is
/dph
Or in plain words: do the VAT return for July. The agent will ask which month and which folder holds the received invoices.
What Claude will do
- •Takes your issued invoices and credit notes straight from your shop's database.
- •Reads the received invoices from your folder, even if they sit in subfolders or appear twice.
- •Has two independent auditors check duplicates, documents issued to someone else, EU reverse charge, credit notes and documents from the wrong month.
- •Generates the DP3, KH and SHV XML and validates it against the tax authority's schemas.
What it will ask you for
- •A folder with the received invoices for that month, however loosely dumped in.
- •Decisions on borderline documents. The agent presents and explains them, you decide.
- •Uploading the finished XML to mojedane.cz. Filing is always done by the taxpayer.
One time preparation, roughly ten minutes
- •In the admin under Nastavení › DPH, switch on "Jsem plátce DPH" and fill in your VAT number and rate. The shop, invoices, e-mails, exports and the /dph agent all read it from there. The values in src/config/store.ts only seed a brand-new shop.
- •Fill in dph/company.json from the dph/company.example.json template: VAT number, registered seat, tax office codes, business activity code, signatory. The codes are on any previous return.
- •Run dph/scripts/setup.sh: it checks that Node, Python 3.10+ and xmllint are installed and sets up the PDF reader. On Windows through WSL (keep the project in the WSL home folder, not on drive C:).
- •Claude does both of these with you the first time you run /dph.
How the month goesOpen this if you would rather do it yourself, or want to know what is happening under the hood.
- 1
You dump the supplier invoices for the month into one folder (PDFs, subfolders and duplicates are fine).
- 2
Issued invoices and credit notes are taken straight from the shop database.
- 3
Agents read the received invoices and two independent auditors check them: duplicates, invoices issued to someone else, EU reverse charge, credit notes, documents from the wrong month.
- 4
Anything that needs a decision is discussed with you. Nothing is decided on your behalf.
- 5
It generates the XML (DP3, KH, SHV), validates it against the tax authority's schemas, and you upload it in the order DP3, KH, SHV. If the filing portal objects to something, paste the message back to the agent and it fixes it.
Deadline
The deadline is always the 25th of the following month. A quarterly payer files the return after the quarter ends, while a company still files the control statement every month and a sole trader files both quarterly. The agent reminds you of the dates. After filing, give it the portal receipts and it files them with that period.
Try it in the demo admin
The Accounting section of the demo admin holds a recording of a real agent run over seven sample invoices. You can replay it step by step: the decision on each invoice, the auditors' findings and the resulting XML.
Open the demoWhat is automated and what is on request
Customer support with agents
The shop ships with customer support handled by Claude agents. They pick up tickets from the web form (and, if you want, e-mails from a support mailbox), draft replies, check them and send them. Anything you have to decide waits in the admin on the Čeká na vás page.
Turn it on with one line
/podpora
Or in plain words: I want customer support. Claude goes through your shop details, return and complaint rules, the mailbox and the agents' key with you, then starts the first run.
What Claude will do
- •Answers customers in the shop's language (Czech or English): where is my order, withdrawals, complaints, cancellations, e-mail changes.
- •Every reply is checked by code and by a second agent before it goes out: no invented amounts, dates or promises.
- •Starts in trial mode: replies wait for your approval, and you switch it live once you are happy.
- •After every run it sends you a summary of what went out and what waits for you.
What it will ask you for
- •Approvals, edits and exceptions in the admin (Čeká na vás).
- •Refunds: support never sends money; you refund the customer yourself and click Vráceno in the admin.
The support agents run on their own Anthropic API key, billed per use separately from your Claude subscription (or on a claude setup-token token). You store the key during setup; it never goes into the chat. Support runs on your computer (Mac, Linux or Windows through WSL), so scheduled runs happen while it is switched on. It reads a mailbox over IMAP (e.g. Seznam or Gmail with an app password); Claude Code connects any other mailbox.
Stock sync with your accounting program and till
Do you keep your stock in POHODA, Money S3 or a till? The e-shop takes the stock levels over by itself. Your program stays the main source of the numbers: the shop subtracts the web sales it has not booked yet and sends them over to be booked. Claude Code sets the connection up with you once, step by step, through the /sklad-sync skill. Only quantities change, never prices, names or products.
All you type into Claude Code is
/sklad-sync Connect my stock with POHODA
Put your own system in place of POHODA: Money S3, Dotykačka, ABRA Flexi, Storyous, a supplier's file… Claude asks one thing at a time, and you are the one who switches it live.
What Claude will do
- •Asks about your program and its edition, the warehouse, a physical store, and what should be booked in the program.
- •Checks your product codes: what has no code and which codes are on two items. It fills in the missing ones from your program or by EAN.
- •For POHODA and Money S3 it walks you through installing a small helper on the accounting PC. That is one line pasted into PowerShell, no administrator rights needed.
- •For Dotykačka it sets up the ready translator. For other cloud systems it reads the vendor's official documentation, then writes and tests the translator.
- •Goes through the trial preview with you: how many items were matched and what would drop to zero.
- •Writes down in the shop's notes how the stock is connected, so every later Claude Code session knows.
What it will ask you for
- •A few clicks in the admin: Stock › Connections › “New connection”.
- •Your POHODA or Money password, typed only on the accounting PC. It never goes into the chat.
- •For a cloud system, access to its API, which you create with the vendor and enter into the shop's settings yourself.
- •Pressing “Switch to live”. Claude never does that for you.
What the stock connects to
POHODA
Ready, tested on real POHODAA helper on the POHODA PC carries the stock levels every 10 minutes from 7:00 to 21:00. A shipped order is booked in POHODA as an issue note, returned goods as a receipt note. Each document carries the order number, so nothing is ever booked twice.
You need POHODA with stock management (it works in every edition, including the free POHODA Start, no mServer needed) and a Windows PC that is on during the day.
Money S3
Ready, tested on real Money S3A helper on the Money PC carries the stock levels through Money's E-shop konektor. The shop's invoices and credit notes go into Money throughout the day and take the goods out of stock or bring them back. The monthly Money export then leaves them out, so nothing is in Money twice.
You need Money's E-shop konektor (free in Money S3 START, a paid Money module in the other editions; S3 Automatic is not needed) and a Windows PC that is on during the day.
Dotykačka
ReadyThe shop fetches the stock from Dotykačka by itself. A web sale is booked there as a stock sale (no receipt), a return as a stock-up.
You need Dotykačka on the NAPLNO plan or higher, your own API access registered with Dotykačka, and each size or colour as a separate product with a PLU equal to the shop's code. The shop has to run its scheduled jobs at least every 10 minutes (your own server or Vercel Pro).
ABRA Flexi, Storyous, iDoklad and other cloud systems
Connected by Claude CodeThe /sklad-sync skill reads the vendor's documentation, takes a few real samples from your system, writes the translator and runs the same automatic contract tests every translator must pass. Then trial mode, and only then live.
You need API access to your system. Claude checks in the documentation whether your plan includes it before it writes anything.
Stock file at a web address
ReadyYour supplier, BaseLinker or an export from your program publishes the stock levels as a CSV, XML or JSON file at a web address. The shop downloads it on a schedule, no code needed.
You need the file's address.
Once in a while from a spreadsheet
ReadyStock › Connections › “Import from CSV”: download the product list, fill in the new stock levels, after a stocktake for example, and see what will change before anything is saved.
HELIOS, several warehouses or branches at once
CustomOne connection runs one warehouse. Genuinely big projects are quoted separately, with the price agreed in writing up front.
Preview: /sklad-sync connecting POHODA
A shortened sample conversation, about a minute and a half, shown in English translation. Names and numbers are examples.
Preview transcript
- Owner: /sklad-sync Connect my stock with POHODA
- Claude runs: Bash(npx --yes tsx@4.19.2 sklad-sync/cli.ts stav)
- Output: No connection yet. Create one in the admin: Stock › Connections › New connection.
- Claude: Let's connect your stock with POHODA. I will ask one thing at a time.
- Claude: Which POHODA edition do you have, and where does it run?
- Owner: POHODA Jazz, on the office PC
- Claude: Do you also sell from the same stock in a physical store?
- Owner: Yes, we have a small shop
- Claude: I suggest keeping 1 piece back for the store on items that run low. You set that in the connection.
- Claude: Should shipped orders be booked in POHODA as issue notes? I suggest yes; have your accountant confirm it.
- Owner: Yes, my accountant agrees
- Claude runs: Bash(npx --yes tsx@4.19.2 sklad-sync/cli.ts kody)
- Output: 412 items in total; 3 without a code or EAN; 18 variants without their own code.
- Claude: 18 variants have no code. Export the stock list with codes and EANs from POHODA and I will fill them in by EAN.
- Owner: It's on the desktop, zasoby.csv
- Claude runs: Read(~/Desktop/zasoby.csv)
- Output: Read 431 lines
- Claude: I filled in the codes of 18 variants by EAN. 3 items have no code or EAN: create them in POHODA and give them the same code in the shop.
- Claude: Now the admin: Stock › Connections › “New connection” › “POHODA”.
- Claude: It shows a key and one line. Paste that line into PowerShell on the POHODA PC. Don't type the key or any password here.
- Admin: connection “POHODA at the office” created · Trial mode
- PowerShell on the POHODA PC: Helper connecting the e-shop's stock with POHODA
- PowerShell on the POHODA PC: Connection key (from the admin: Stock > Connections; paste with Ctrl+V): ••••••••••••
- PowerShell on the POHODA PC: The e-shop answered: connection "POHODA at the office", mode dry.
- PowerShell on the POHODA PC: 1 = directly through Pohoda.exe (recommended; works in every POHODA edition, nothing to switch on)
- PowerShell on the POHODA PC: Choice [1]: 1
- PowerShell on the POHODA PC: POHODA user (with XML import/export rights) [Admin]: Admin
- PowerShell on the POHODA PC: POHODA user's password (type it, it stays hidden):
- PowerShell on the POHODA PC: Trying one transfer...
- PowerShell on the POHODA PC: Done. The transfer will run every 10 minutes from 7:00 to 21:00.
- Owner: Done, the helper is running
- Claude runs: Bash(npx --yes tsx@4.19.2 sklad-sync/cli.ts stav)
- Output: POHODA at the office [dry] pohoda
- Output: last run: dry · 409 rows, 406 matched, 37 changes · 1 min ago
- Output: trial mode: the preview is ready, the owner can switch it live
- Claude: The trial preview is ready: 406 of 409 items matched, 37 would change.
- Claude: In Stock › Connections › run history, check the 3 items that would drop to zero. When it looks right, press “Switch to live”. That is always your call.
- Admin: “Switch to live” · Live
- Claude runs: Update(CLAUDE.md)
- Output: Updated CLAUDE.md with 9 additions
- Claude: Your stock is connected with POHODA. Stock levels arrive every 10 minutes and shipped orders are booked as issue notes.
How the connection goesOpen this if you would rather do it yourself, or want to know what is happening under the hood.
- 1
Questions: Claude asks about your program, the warehouse, a physical store and what should be booked in your accounts. Have your accountant confirm the document type.
- 2
Product codes: items are matched by the variant's or product's code, then by EAN, never by name. The codes in the shop must match the ones in your program.
- 3
Connection: “New connection” in the admin. For POHODA and Money you paste one line into PowerShell on the accounting PC. The helper asks for the key and the password and then runs by itself.
- 4
Trial mode: every new connection first only shows what it would change. Nothing changes in your stock.
- 5
Live: once the preview looks right, you press “Switch to live” and say whether the open orders are already booked in your program.
- 6
Day to day: the connection's state is in Stock › Connections. When something is off, the morning stock e-mail tells you, with a ready request for Claude Code.
Safety checks that cannot be switched off
- •A stock list is refused when over half of the goods in stock would drop to zero, when it is much shorter than the last one, or when too few items match. Nothing changes and the admin says why. “Apply anyway” is your call alone.
- •Only quantities change. The connection never creates, hides, deletes or reprices a product.
- •A web order placed in the middle of a sync is never lost or counted twice.
- •A web sale that the program has not booked within 14 days stops being subtracted, so the numbers cannot drift.
- •The helper on the POHODA PC can only read stock and add issue and receipt notes. It never deletes or changes anything in POHODA.
- •Accounting passwords stay on the accounting PC only, encrypted for your Windows account.
Good to know up front
- •The POHODA or Money PC has to be on and logged in during the day. While it is off, the shop sells from the last known numbers and everything catches up once it is back.
- •Do you also sell from the same stock in a physical store? Now and then the last piece can sell on the web and at the till at the same moment. Keeping a few pieces back for the store helps, and the admin shows you any oversold item.
- •Your program's licences (POHODA edition, Money module, Dotykačka plan) are yours, paid to its vendor. The connection itself is part of the shop.
- •Have your accountant confirm what should be booked. If you turn on booking the shop's invoices and credit notes in Money, they go into Money by themselves, so do not create them there by hand any more. Without that option you keep moving them with the monthly export or by hand.
When the connection stops working
Typically a PC that was off, a changed password in the accounting program or a new product without a code. Claude finds the cause and fixes the settings or the translator; it never gets around the stock checks.
Copy this prompt into Claude Code
/sklad-sync kontrola
Or in plain words: the stock sync is not working, find out why.
Goods from suppliers
Do you sell goods from a wholesaler or a supplier who publishes its offer as a file at an address (an XML feed or a CSV table)? The e-shop downloads it by itself: it creates products from the offer, prices them by your margin, copies the photos into your own storage and takes the stock levels over through stock sync. Claude Code sets the supplier up with you once, step by step, through the /dodavatel skill. Every supplier starts with a trial that changes nothing, and you are the one who switches it live. In the admin it lives under Products › Sources.
All you type into Claude Code is
/dodavatel I want to load products from a supplier
Never paste the supplier's file address into the chat: it often works like a password. You enter it only in the admin: Products › Sources › "New source". Claude asks one thing at a time.
What Claude will do
- •Asks which supplier it is, what you want to sell from them and where your shop runs.
- •Reads the supplier's whole file and shows what the shop takes from it: prices, stock, photos, categories and variants.
- •If the supplier has a format of its own, writes a short description for it, tests it on the whole file and deploys the shop so it knows the description.
- •Proposes a price rule and shows it on real goods: the cheapest, the most expensive and the items the minimum margin lifts.
- •Turns the supplier's hundreds of categories and filters into a clear category tree with your own names.
- •Walks you through the trial preview, then photos and supplier stock, and records in the shop's notes how the supplier is connected.
What it will ask you for
- •The address of the supplier's file, entered only in the admin ("New source").
- •Your margin: a markup in percent and the lowest margin you are willing to sell at.
- •Which of the supplier's categories you want to sell and what they should be called in your shop.
- •Pressing "Go live" and showing the new products. Claude never does that for you.
Which files the shop reads
Heureka and Zboží.cz
ReadyThe most common format of Czech and Slovak suppliers. The shop recognises it by itself, including the usual deviations and the supplier's own extra fields. When a supplier puts the purchase price or stock in a field of its own, a field swap in the file preview is all it takes.
Shoptet XML
ReadyA file in Shoptet's format, with variants inside the product, purchase price, stock and photos.
Google Shopping
ReadyA Google Merchant feed (RSS or Atom) with colours, sizes and variant groups.
CSV table
ReadyA table of goods at an address, with English or Czech column names.
The supplier's own format
Claude Code connects itClaude Code writes a short description of the file: where the name, price, stock, photos and variants are. It tests it on the whole file and runs it through the same automatic checks as the built-in formats, on an anonymous sample. Writing to the shop and the safety checks are the same for every supplier, and the description never touches them.
When the supplier changes the file later, the run stops and /dodavatel oprava updates the description.
Trial first, then live
Every supplier starts with a trial: the shop reads the whole file and sums up in one sentence what it would do, for example "Adds 2,141 products, 14 have no category, 2 variant groups to check". It shows the prices, doubtful variant groups, goods you already have in the shop, goods sold in packs, how many photos will download and how much the database grows. Nothing in the shop changes until you press "Go live".
What you decide
- •Price: a markup in percent on the purchase price, the lowest margin as an amount and in percent, and rounding (whole units, …9 or …90, or x.90 in euros). A supplier without a purchase price: its retail price as it is, or ± %. The shop price is always final, incl. VAT; the shop knows from Settings whether you are a VAT payer and calculates accordingly.
- •Foreign currency: a fixed rate that you set. Claude suggests today's rate, and prices change only when you change the rate.
- •What the supplier keeps up to date: by default the price. Name, texts, photos and categories are taken once, when the product is created. Whatever you edit in a product, the supplier never overwrites.
- •Your own price: reprice a product or put it on sale and the price is yours. "Back to the rule" hands it back to the supplier.
- •Categories: which of the supplier's categories you take and where they belong in your shop. Goods from categories you do not take are never created at all.
- •Showing: new products wait hidden in Products › "New from suppliers". Show the ones you pick, or a whole category at once. If you prefer, turn on "Show new products at once".
Preview: /dodavatel connecting a wholesaler with its own format
A shortened sample conversation, about a minute and a half, shown in English translation. The supplier, goods and numbers are made up.
Preview transcript
- Owner: /dodavatel I want to load products from a supplier
- Claude runs: Bash(npx --yes tsx@4.19.2 zdroje/cli.ts zdroje)
- Output: No source yet. The owner adds one in the admin: Products › Sources › "New source".
- Claude: Let's connect your supplier. I will ask one thing at a time.
- Claude: Who do you want to load goods from?
- Owner: Owl Wholesale, toys
- Claude: Don't paste their file address here: it often works like a password. Enter it in Products › Sources › "New source".
- Admin: source "Owl Wholesale" added · Trial
- Claude runs: Bash(npx --yes tsx@4.19.2 zdroje/cli.ts nahled "Owl Wholesale" ukazky=3)
- Output: Format not recognised: the file uses the supplier's own tags.
- Claude: The file has a layout of its own. I will write a short description for it and test it on the whole file.
- Claude runs: Write(src/product-source-formats/owl-wholesale.ts)
- Claude runs: Bash(npm run test:zdroje:popisy)
- Output: owl-wholesale: sample of 20 items, 3 variant groups · ok
- Claude runs: Bash(npx --yes tsx@4.19.2 zdroje/cli.ts nahled "Owl Wholesale" format=owl-wholesale)
- Output: Whole file: yes, 2,418 items · purchase price 100 % · photos 98 % · doubtful groups 4
- Claude: Everything reads. I will deploy the shop so it knows the description. Now the price: what margin do you want?
- Owner: 40 %, but at least €1.20 an item
- Claude runs: Bash(npx --yes tsx@4.19.2 zdroje/cli.ts nahled "Owl Wholesale" ukazky=0 cena.zaklad=nakup cena.prirazka=40 cena.marze=1,20 cena.zaokrouhleni=,90)
- Output: Building blocks 120 pcs: purchase €12.40 excl. VAT → +40 % → incl. VAT 21 % → €21.90
- Output: Plush owl 20 cm: purchase €1.90 excl. VAT → raised to the minimum margin → €3.90
- Claude: The supplier has 214 categories, many of them filters like "Sale" or "Under €10". I suggest 6 of your own: Building sets, Plush toys, Games, For toddlers, Crafts, Garden. Like this?
- Owner: Yes, but no garden
- Claude runs: Bash(npx --yes tsx@4.19.2 zdroje/cli.ts kategorie "Owl Wholesale" --mapa zdroje/pracovni/owl-wholesale-kategorie.txt)
- Output: 188 paths mapped, 26 ignored · 5 shop categories created (hidden)
- Claude runs: Bash(npx --yes tsx@4.19.2 zdroje/cli.ts beh "Owl Wholesale")
- Output: Trial: adds 2,031 products, 4 variant groups to check, 6 items sold in packs
- Output: Photos about 1.5 hours · the database grows by about 60 MB
- Claude: The trial changed nothing. The cheapest item is the plush owl at €3.90, the most expensive a playhouse at €189.90.
- Claude: Check the 4 variant groups in Pairs › groups and the 6 items sold in packs. When it looks right, press "Go live". That is always your call.
- Admin: "Go live" · 2,031 products created, hidden
- Claude: Shall I start downloading the photos now? It will take about 1.5 hours.
- Owner: Yes
- Claude runs: Bash(npx --yes tsx@4.19.2 zdroje/cli.ts fotky "Owl Wholesale" beh)
- Claude: One more thing, stock. In the Overview click "Set up supplier stock (trial)". I suggest a reserve of 1 piece, since the supplier ships the goods.
- Claude runs: Bash(npx --yes tsx@4.19.2 zdroje/cli.ts sklad "Owl Wholesale" beh nahled)
- Output: Stock (trial): 2,031 items paired, 1,874 stock levels would change
- Admin: "Switch stock live" · Live
- Claude runs: Update(CLAUDE.md)
- Claude: Owl Wholesale is connected. The catalogue loads every night and the stock every hour. Show the products from "New from suppliers", category by category.
How the connection goesOpen this if you would rather do it yourself, or want to know what is happening under the hood.
- 1
New source: in Products › Sources › "New source" you enter the file address (and the login, if the supplier gave you one) and click "Add and preview the file".
- 2
Format: the shop reads a Heureka, Shoptet, Google or CSV file straight away. For a supplier's own format Claude writes a description, tests it and deploys the shop; then in Fields › "File preview" you see the file being read.
- 3
Price, fields and categories: Claude proposes the price rule, what the supplier keeps up to date and the category tree. You adjust them and see examples on real goods right away.
- 4
Trial: you and Claude go through the cheapest and most expensive goods, doubtful variant groups, pairs with goods you already have, goods without a category and goods sold in packs.
- 5
Live: you press "Go live". The products are created hidden and the photos start downloading.
- 6
Stock: in the Overview, "Set up supplier stock (trial)", a preview of the stock levels, then "Switch stock live". Stock goes through stock sync with all its safety checks and history.
- 7
Showing, and every day after: you show the products category by category. The catalogue then loads every night and the source card shows the last run and what changed. Problems arrive in the morning e-mail with a ready request for Claude Code.
Safety checks that cannot be switched off
- •A cut-off or damaged file is refused as a whole: "The file is cut short, its end is missing. Nothing was changed."
- •If the file holds over a fifth fewer goods than last time, the run stops and waits for you.
- •Goods that disappear from the file are sold out only after two complete runs, and hidden after 30 days. They come back by themselves when the supplier lists them again. Nothing is deleted. When a lot disappears at once, you decide.
- •A price that drops below half or rises by over half is held. When many prices change at once, all of them are held and wait for you.
- •A held price never sells at a loss: if the old price is now below cost plus the minimum margin, the product waits for "Approve price".
- •Without an approved trial, one run adds at most 300 new products.
- •Texts, photos and prices you edit are never overwritten by the supplier, and a product you delete is never created again.
- •The same goods are never created twice, not even from two suppliers. Goods you already have in the shop are offered for pairing in the trial.
Good to know up front
- •The shop downloads photos once, makes them smaller (about 120 kB a photo) and stores them in your own storage: Cloudflare R2, Vercel Blob or your server's disk. 10,000 products with 5 photos each come to about 6 GB, which fits in R2's free 10 GB. Downloading thousands of photos takes hours; the trial tells you how many. The storage is part of your hosting, not a fee for the shop.
- •Database: the trial tells you up front how much it grows. Free database plans are usually around 0.5 GB; for a big catalogue you pick a larger plan with your database provider.
- •One VAT rate: the shop works with one VAT rate so that every invoice is right. In a VAT payer's shop, goods at another rate are not created and are listed separately. Want to sell them? Claude Code sets up the other rate in the shop: the admin offers you the request for it right next to those goods.
- •Texts arrive in the supplier's language. On request Claude Code translates them or rewrites them in your own words with you, in batches, which also helps in search engines.
- •Goods the supplier ships can, now and then, sell just as the supplier runs out. A stock reserve in the stock settings helps, and an order for goods the supplier withdrew shows up in Orders › Needs attention.
- •The shop does not show the supplier's crossed-out "recommended price": under EU rules a crossed-out price must refer to the lowest price of the last 30 days. You run a sale with your own price.
Where your shop runs
Your own server (VPS)
Recommended for suppliersEverything: the catalogue every night, stock every hour, photos with no time limit, big files too.
Vercel Pro
Almost everythingThe catalogue every night, stock every hour. A file that takes longer than about 3 minutes to download is loaded from your own server or from your computer with Claude Code.
Vercel Hobby
Smaller suppliersOnce a day and smaller files. Claude Code runs the first big import and the photos from your computer. Vercel does not allow its Hobby plan for a shop that takes payments.
When the supplier changes the file
Typically a new file layout, a changed address or password. The run stops, nothing changes, and the morning e-mail brings a ready request. Claude finds the cause and fixes the format description or the settings; it never gets around the safety checks.
Copy this prompt into Claude Code
/dodavatel kontrola
Or in plain words: the supplier source is not working, find out why.
When something breaks
An error message is not the end of the world. Almost always it is enough to read the whole thing and let Claude Code fix it.
First aid: copy the whole error
Do not shorten it and do not retype it in your own words. Select the entire message in the terminal or in the browser, paste it into Claude Code and ask what happened. Claude works inside your project and under your supervision, so before it changes anything it can tell you what it wants to change and why.
One prompt for any error
Here is the error I got: [paste the full error text]. Diagnose the cause in this project and fix it; before you change anything, tell me what and why.
This prompt covers most situations. The cases below are just a shortcut for the ones people hit most often.
The four most common snags
Port 3000 is already in use
After npm run dev it says port 3000 is taken, or the shop opens on a different port number. Usually an older dev server is still running in the background.
Copy this prompt into Claude Code
When I run npm run dev it says port 3000 is already in use. Find out which process is holding that port and give me two options: stop that process, or start the dev server on a different port. Before you stop anything, tell me what the process is.
The local address of the shop is http://localhost:3000, see chapter 7.
Database error or a wrong DATABASE_URL
The shop will not start and reports a connection problem or missing tables. Most often the Neon database is asleep after a period of inactivity, or the connection string in .env is incomplete.
Copy this prompt into Claude Code
The shop reports a database error: [paste the full error text]. Read DATABASE_URL from my .env file, check whether the connection string is complete and whether the database can be reached. If it runs on Neon, tell me how to verify that the database is not asleep. Then run npx prisma db push and tell me what it printed. Do not delete or overwrite any data without my approval, and do not print any credentials.
Never paste the connection string anywhere. Claude reads it from .env itself, and .env.example lists every key the shop uses.
A variable is missing on Vercel while it works locally
Everything runs on your machine, but the deployed shop fails or parts of it do not work. Almost always one of the keys you have locally in .env is missing on Vercel.
Copy this prompt into Claude Code
The shop works locally but the deployed version on Vercel does not. It says this: [paste the full error text or describe what does not work]. Read the key names from my .env file and compare them with this list of variables from Vercel: [paste the variable names from Vercel, Settings → Environment Variables]. Tell me which ones are missing, briefly what each is for, and what I should add. Do not print any key values.
Copy only the variable names out of Vercel, never their values.
Orders stay unpaid because the webhook never arrives
The customer paid by card, but in the admin the order is still marked unpaid. That means Stripe could not reach the shop.
Copy this prompt into Claude Code
Customers are paying by card but orders stay marked unpaid in the admin. Read the file src/app/api/stripe/webhook/route.ts and tell me what URL the webhook in Stripe should point to and which events it should listen for. Then walk me through it: whether the Endpoint URL in the Stripe dashboard matches, whether STRIPE_WEBHOOK_SECRET is the same in .env and on Vercel, and how to read the webhook log in Stripe so we can see where it failed. Guide me step by step, I will do the clicking.
The webhook address is your domain plus /api/stripe/webhook, see chapter 9.
If you are still stuck
Write to me by e-mail. Describe what you already tried and attach the whole message, so there is something to go on. I am one person, so I will get back to you as soon as I can.
E-mail supportRunning your shop
The shop is live and orders are coming in. Here is what you click through in the admin and what you hand over to a prompt.
The admin at /admin
You sign in with the password you set in chapter 11. What you get there:
Orders
A list of orders you can filter by status, by payment and search through. In the order detail you change the status, flip paid and unpaid, add a tracking number, correct the address and keep internal notes.
Invoices and credit notes
The invoice for an order is generated for you and you download it as a PDF. When you cancel a whole order or just some of its items, the shop issues a credit note for it, which you download the same way.
Refunding money
You return the money where it came from, meaning in the Stripe dashboard or by bank transfer. The shop keeps the paperwork for it, but it never sends money on its own.
Products, categories and stock
Creating and editing products including variants, sorting them into categories, and stock counts. Products › Sources holds the goods from your suppliers and their latest runs.
Support
Tickets your customers open through the support form on the shop.
The rest
Discount codes, dispatch, feeds, newsletter, accounting and shop settings. Each has its own page in the admin. Nastavení shows what is still missing before launch, and Produkty › Vyhledávání shows what customers searched for and did not find.
What you hand over to a prompt
Editing products and bulk import
Single products you edit by clicking in the admin. When there are many of them, the product list has an Excel import: an .xlsx file both creates and updates products, matched by product code.
Copy this prompt into Claude Code
I want to fill the shop with products and keep them up to date. Show me where products are created and edited in the admin, and explain the bulk Excel import: which columns the file must have, what is required for a new product, how variants are entered and what happens to products that are not in the file. Prepare a sample file so I can see the format.
The import matches on the product code. Empty columns do not overwrite existing data. Take a backup before a larger import, see below.
Changing the texts on the site
The texts live directly in the shop pages. Claude finds them by how they read on the site and rewrites them everywhere they repeat.
Copy this prompt into Claude Code
I want to change a text on the site. Find it in the pages and components (src/app, src/components) and update it everywhere it repeats. The text I want to change currently reads: [paste the text as you see it on the site]. It should now read: [write how it should be]. Before you save, show me which file you found it in.
Back up the database before you risk anything
Products, orders and invoices live in the database, not in the project folder. A copy of the code will not save them. A backup is one prompt and a short wait.
Copy this prompt into Claude Code
Make a backup of this shop's database. Read the connection details yourself from DATABASE_URL in the .env file and do not print them in the chat. Use pg_dump to save the backup into a backups folder and put today's date in the file name. If I do not have pg_dump installed, tell me how to install it. Make sure the backups folder stays out of git, and at the end tell me the path to the file and how large it is.
You never copy the connection string anywhere. Claude reads it from .env itself.
When you really want a backup
- •Before a bulk product import from Excel.
- •Before updating dependencies and before any change that touches the structure of the database.
- •Before any change you are unsure about. Restoring from a backup is always cheaper than working out what went missing.
Updating dependencies
The shop stands on libraries that keep moving. It pays to update in small steps rather than all at once, and to check after every step that the shop still builds.
Copy this prompt into Claude Code
I want to update this project's dependencies carefully. First list what is out of date and tell me where an update is likely to break something. Then update in small steps, run the build after each step, and tell me what changed and whether it passed. Before you run the build, remind me that it also touches the database and wait for my confirmation.
Take a database backup with the prompt above before you start.
The build touches the database
In this project npm run build also runs prisma db push, so it changes the structure of whichever database DATABASE_URL points to. Before you run it, check which database that is and have a backup. The build also runs npm run db:search itself, so the search indexes stay in place. More on that in chapter 7.
You do not have to remember commands
Stuck?
First aid is always the same: tell Claude Code in the terminal what happened and paste the message you see. If that does not help, write to me.