A store for one merchant is a fair weekend build: a catalog with variants, a cart, Stripe Checkout taking the card, a webhook that records the paid order, and a small admin to pack and ship it. The platform is what you give up. BigCommerce brings hosted checkout in 100-plus currencies, live carrier rates, a promotions engine, B2B price lists, multi-storefront and Amazon, eBay and ad-feed channels, all running during the busiest week of the year. For a few dozen products and a few orders a day the build is enough; a growing shop is better off on Medusa, Saleor or WooCommerce than on a home-made cart.
Before you buildBigCommerce has no free plan, only a 15-day trial. If you sell a handful of items, a Stripe Payment Link or a free WooCommerce install may be enough before you build anything.
Build me a small online store to replace BigCommerce for one merchant. Requirements: - Node.js 22 + TypeScript: Fastify with server-rendered Eta templates and a little vanilla JS. `npm start` serves http://localhost:4400; the admin is at /admin. - Storage: better-sqlite3 at ./data/store.db; product images in ./data/images/, resized to 400 and 1600 px WebP with `sharp`. Prices are integer cents in the one currency set in config.json. - Catalog: products with up to three option types, variants with SKU, price and stock, a category tree, brand, weight, up to 8 images and a slug. Product pages at /products/<slug> carry meta tags and JSON-LD Product data; add sitemap.xml and robots.txt. - Cart in a signed cookie. Checkout through Stripe Checkout Sessions (`stripe` package, keys in .env), so card details never reach my server. Shipping rates come from config.json by country and weight band; Stripe Tax is on or off with one flag; discount codes (percent, fixed, free shipping) have a minimum spend and a usage cap. - Orders: /webhooks/stripe verifies the signature, creates the order once per session id, lowers stock and sends a confirmation over SMTP (`nodemailer`); a sold-out variant can't be added to the cart. Refunds are recorded after I issue them in Stripe. - Admin behind ADMIN_PASSWORD (signed cookie): product editor, orders moving paid > packed > shipped (a tracking number sends the shipping email), a low-stock list, discount codes and CSV export of orders. - Import: a BigCommerce product CSV with a column-mapping screen and a dry-run summary before anything is written (images are downloaded from their URLs), plus a 301 table loaded from BigCommerce's redirects CSV. - Single merchant. No customer accounts, no telemetry. Outbound calls: Stripe, SMTP and image downloads. - Out of scope: multi-currency, marketplace and ad-feed channels, B2B price lists, multi-storefront, POS, live carrier rates. - README: Stripe test mode with `stripe listen`, the DNS cutover and 301 plan, and an honest note that sales tax or VAT filing and card-data scope on my storefront are my job, not the code's.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own BigCommerce.
Add history import to the store in this folder. Requirements: - An Import page takes BigCommerce's customers CSV (Bulk Edit template) and orders CSV (Default template) and shows a column mapping and a dry-run count before writing. - Imported customers become contact rows for email, with no passwords (BigCommerce doesn't export them) and a consent flag set from the marketing column if there is one, otherwise off. - Imported orders are stored as read-only history with their original numbers, dates, totals and addresses, and never touch stock. - Show imported orders in the admin with an "imported" badge and include them in the CSV export. - Update the README.
Add abandoned-cart recovery to the store in this folder. Requirements: - Turn on promotional-email consent in the Stripe Checkout Session and listen for checkout.session.expired. - If the shopper agreed, send one email an hour after expiry and one after 24 hours, each with a fresh Checkout link and the cart contents; send nothing without consent. - Stop the sequence when an order from the same email arrives, and add a one-click signed unsubscribe page. - Show sent, recovered and revenue recovered in the admin. - Update the README.
Add product filtering to the store in this folder. Requirements: - On category pages, filter by option value (size, colour), brand, price range and in-stock only, with the state kept in the query string so a filtered page can be shared and indexed or blocked per rule. - Show counts per option value that respect the other active filters. - Back it with SQL indexes and test that a category with 5,000 generated products answers in under 100 ms. - Add rel=canonical to the unfiltered category page. - Update the README.
Add product reviews to the store in this folder. Requirements: - A review form on product pages (name, 1-5 stars, text) for buyers only: the link arrives in the shipping email and carries a signed token tied to one order line. - Reviews wait in a moderation queue in the admin; approved ones show on the product page. - Add JSON-LD AggregateRating only when there are at least three approved reviews. - Escape all review text wherever it is rendered. - Update the README.
A shop that can't take payments on a sale day costs far more than $39 a month. BigCommerce runs hosting, checkout and the channel connections as one managed service, with no extra order fee when you use one of its embedded payment partners.
Estimate · A small VPS runs about $5 a month and a transactional email tier covers a shop's order emails. Stripe's card fees apply on top, just as they do on BigCommerce, so the saving is the plan fee. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Core | $39 | $29 | Up to $30K of trailing-12-month GMV, then an automatic move to Growth; online storefront, POS and marketplace channels, multi-currency, single-page checkout, 4 inventory locations, 24/7 chat and email support. |
| Growth | $105 | $79 | Up to $100K of trailing-12-month GMV, then a move to Scale; adds customer groups, abandoned cart saver, persistent cart, stored cards, 5 inventory locations and 24/7 phone support. |
| Scale | $399 | $299 | $33,333 of GMV a month with a 0.9% overage above that; adds product filtering, custom filters, Google customer reviews and 8 inventory locations. |
| Performance | — | $1,499 | Custom volume; price lists, advanced promotions, a customer success manager, API support and custom payment terms. |
No free plan. A 15-day trial needs no credit card and can take real payments once a payment partner is set up.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: Hosted, PCI-handled checkout with local payment methods and 100-plus currencies, Real-time shipping rates from UPS, USPS, FedEx, Royal Mail and other carriers.
About $39 a month on the Core plan, $468 a year (checked 2026-10-19).
Hosted, PCI-handled checkout with local payment methods and 100-plus currencies; Real-time shipping rates from UPS, USPS, FedEx, Royal Mail and other carriers; Amazon, eBay, Walmart and ad-feed channels (Google, Meta, TikTok, Pinterest); The built-in promotions engine, customer groups, abandoned-cart emails and B2B price lists; The app marketplace, theme store and 24/7 support. If any of those matter to you, keep paying.
Yes: Medusa (open source), Saleor (open source), Bagisto (open source).