For bands · from a fan
Let something else do the typing.
You don’t have to understand any of this to end up with a store you own. An AI coding assistant will do nearly all of it while you watch, and stop to ask you for the few things only you can do. This page explains the words first, because being handed jargon is what makes people quit.
The three words, in plain English
- GitHub
- A folder for your store’s files that lives on the internet instead of one laptop. It keeps every past version, so nothing you do is permanent and nothing is lost when a laptop dies. Free. You need an account and nothing else; you will rarely open it again after the first day.
- Cloudflare
- The company that runs the store for you and shows it to people. Free at the size a band needs. This is the only part that has to stay switched on.
- A repository, or “repo”
- Just that folder, with a name. Yours will be something like
yourband-store. When people say “it’s open source,’’ they mean you can copy this folder and it’s yours, free, to change however you like.
That is the whole vocabulary. If someone uses a fourth word at you, they are showing off.
What an assistant does, and what it won’t
Claude Code, Codex, Cursor and the like all work the same way here: you paste a set of instructions, it reads the store’s files, and it does the work while telling you what it’s doing. You approve, or you say “no, do it this way.’’
It will copy the store, put your products in from a Shopify export, change the colours and type to look like your band, point your domain at it, and explain anything you ask it in the middle of doing it.
It will not, and should not, create any account for you or handle your money. The instructions below explicitly forbid it from making accounts on your behalf, from putting a secret key in a file, and from adding any tracking script. When it needs Stripe, GitHub or Cloudflare, it tells you exactly what to click and waits. That is the correct behaviour and you should be suspicious of anything that doesn’t work that way.
Start here
Open an assistant.
Any of them. If you have none, Claude Code runs in a terminal; Cursor is an app that looks more like a normal editor. Both have free tiers to try.
Paste the instructions below.
They tell it what you’re doing, what it may not do, and what to ask you for. One button copies the lot.
Answer its questions.
It will ask about your band, your products and your domain. Plain answers are fine. “I don’t know’’ is fine.
Stop whenever you like.
Nothing is half-broken if you walk away. Come back and say “carry on where we left off.’’
The instructions to paste
This is the whole thing. It names the template, sets the rules it has to follow, and lists what it must ask you rather than guess.
Read them first
You are helping a band own its merch table: build as much of their own online store as possible on their own domain, using no outside services except the unavoidable ones (a payment processor, a host, and a mailing-list tool), and help them set those up step by step. Work in this folder. Follow these rules for the whole job. RULES - Never create an account anywhere on the band's behalf. When a service is needed, tell them exactly what to click and what it costs, wait, and continue when they say it's done. - Never put a secret (API keys, passwords) in a file that gets committed. Use environment variables and a .env file that is git-ignored. - Never add analytics, ad pixels, social pixels, link shorteners, or any third-party script. The store's only outside calls are to the payment processor. - Every price, stock number and product name is the band's. Never invent products, never change a price without being asked. - If a step costs money, say the amount before doing it. If a step is irreversible (DNS changes, cancelling a plan), confirm first. - Finish each session with a short summary: what was done, what the band must do next, the next three steps. - There is a finished, open-source store to start from: https://github.com/rattlesnake-ike/merch-table (MIT). Static pages on the band's domain, a cart, Stripe Checkout, pre-orders, bundles, drops, stock, restock requests, redirects, feeds, a Shopify importer, hosted free on Cloudflare. Prefer it to building from nothing; read its README first. STEP 1 — INTERVIEW (keep it short; ask everything at once) Ask for: the band's name; their official website and where the domain is registered; the current store URL (Shopify or otherwise) and roughly how many products; the sizes they sell; where orders ship from and who packs them; which payment accounts they already have (Stripe, PayPal, Square); the mailing-list tool they use, if any; what hosting they can log in to (Cloudflare, Netlify, Vercel, GitHub, a WordPress host); how comfortable they are with technical work; their monthly budget for the store; whether they want to keep running WordPress or would rather have a simple static site. STEP 2 — RUNG 0: OWN THE EXITS (do this even if nothing else happens) - Domain: confirm it is registered in the band's name at a registrar they control. If it was bought through Shopify, walk them through transferring it out. - Exports: from the Shopify admin, export Products (CSV with images), Customers (CSV) and Orders (CSV). Save them in ./exports/ with today's date. Tell them to repeat this monthly. - Mailing list: help them start a list outside the store (Buttondown, Mailchimp's free tier, or a self-hosted tool) and import the customer emails who opted in. Put the sign-up on their site, not only at checkout. - Tracking: list the Meta, Google, TikTok and other pixels in their Shopify settings and help them remove the ones they don't use. - Feed: confirm the store's public product feed is on (https://<store>/products.json returns products) and that the band's homepage links to the store with a plain link. - Do NOT switch payment providers while on Shopify: the Basic plan adds 2% to every sale that doesn't go through Shopify Payments. STEP 3 — RECOMMEND A RUNG (explain the trade-off in five lines, then wait for a yes) - 10 items or fewer: a static site with Stripe Payment Links. No cart, no platform, nothing to maintain. - Up to a few hundred items and no wish to run WordPress (the default): the merch-table store above. Static pages with a cart and Stripe Checkout, the checkout session created by one small Cloudflare Worker. Nothing to the platform; Stripe's 2.9% + 30¢ only. Hosted on Cloudflare's free plan (commercial use allowed; Vercel's free plan is not for stores). Snipcart (2% a sale, or $20 a month under $1,000) is the no-code alternative if they'd rather not have a function at all. - They already run WordPress: WooCommerce (free, open source) with WooPayments or Stripe at 2.9% + 30¢, on a managed WordPress host they pay for ($11–40 a month). - They want hosted and simple: Big Cartel (free for 5 products, $15 a month for 50, $30 for 500, no commission) with their own Stripe. Skip the build steps; help with the import and the cutover. Read the current rates from the vendors' pages before quoting them; numbers change. STEP 4 — BUILD IT (as far as you can without their credentials) - If this folder is empty, start from the finished store: git clone https://github.com/rattlesnake-ike/merch-table . then npm install, and read README.md. store.json holds the band, shipping and colours; products.json holds the catalogue; npm run import -- exports/<file>.csv turns the Shopify export into products.json; npm run check validates it; npm run dev runs it locally. Only build from nothing if they ask for something the template can't be bent to. - Product pages come from the Shopify export: keep each product's handle so URLs stay /products/<handle> and old links can be redirected one-to-one. - Bring in the product images from the export's image URLs; store them in the repo or the host's asset storage, not hotlinked from Shopify. - Sizes and variants: model them; show sold-out sizes struck through, as the store publishes them. - Cart and checkout: Stripe Checkout (or Snipcart), in test mode until the band has activated their account. Turn on the things fans expect from a Shopify store: Apple Pay and Google Pay and Link, discount codes (Stripe promotion codes), adjustable quantities, a shipping address with rates by region, receipts. Pre-orders are a product with a ship date on its page and in the receipt; bundles are one product whose line item is the bundle. Sales tax through Stripe Tax if they need it (it costs extra; say so). - Quality bar: the store must be at least as good as the one it replaces. Same information on every product page, faster (static pages, images sized for the web, self-hosted fonts), and a Lighthouse score of 95 or better on performance and accessibility. Show them the two side by side before cutover. - Shipping: collect the address at checkout; start with flat rates by region from the band's current settings. - Redirects: generate a list of old Shopify URLs → new URLs and a redirects file for the host. - Publish /merch.json: a plain JSON feed of every product (name, url, price, currency, kind, available, sizes, image, updated), regenerated whenever products change, so any fan tool can read the table without scraping. - Add schema.org Product JSON-LD on each product page, a sitemap, and an RSS feed of new items. - No third-party scripts. Self-host any font. Pass a basic accessibility check (labels, contrast, keyboard). - Check it on a phone-sized viewport. STEP 5 — OUTSIDE SERVICES (the band at the keyboard; you dictate) - Payments: Stripe (or PayPal or Square) in the band's name. Activate the account, get the publishable and secret keys into .env, turn on Checkout or Payment Links. Tell them the fee: 2.9% + 30¢ on US cards. - Host: Cloudflare Pages, Netlify or GitHub Pages for a static site (free); a managed WordPress host for WooCommerce. Deploy from this folder; give them the preview URL. - DNS: at their registrar, point shop.<band>.com at the host (a CNAME). Explain propagation. - Mailing list: the tool from rung 0; add the sign-up form to the site. - Postage: Pirate Ship (free, USPS and UPS at commercial rates) or a fulfilment partner that connects to any store. STEP 6 — TEST - Place a test order end to end in test mode; refund it. Check shipping rates, the confirmation email, the sold-out state, and the redirects. Check /merch.json is valid JSON and lists every product. Check the site with third-party scripts blocked: it should work exactly the same. STEP 7 — CUTOVER - Switch DNS. Keep the Shopify redirects on for 90 days, then export the last orders and cancel the plan once the last order has shipped. Update the store link on the band's homepage, Bandcamp and social bios. STEP 8 — HAND-OFF - Write a README: how to add a product, change a price, mark a size sold out, ship an order, export data, and where every account lives. List the next steps: a fulfilment partner if the closet fills up, a shared store with label-mates, a second table on Bandcamp for records, and the monthly export habit. Start with STEP 1 now.
If it goes sideways
- It’s doing something I didn’t ask for
- Say so, plainly: “stop, undo that, here’s what I actually want.’’ It can undo anything, because GitHub keeps every version.
- It asked for a password
- Don’t give it one. Nothing here needs a password shared with an assistant. Keys, yes, and only into the settings screens that ask for them.
- I don’t understand what it just said
- “Explain that like I’ve never done this’’ works. So does “why?’’
- I’d rather click the buttons myself
- The step-by-step has no assistant in it at all.
More prompts, in orderThe manual wayShould I even?
Written by a fan.No affiliate links; nobody here is paid by any assistant, GitHub or Cloudflare.