Svelte Commerce is a production-ready open-source headless ecommerce storefront built with SvelteKit and TypeScript. It connects to commerce backends through APIs, so you can build fast, SEO-friendly storefronts independently of your ecommerce backend — Shopify, WooCommerce, Vendure, Saleor, Medusa and 21 more.
Backend support
Svelte Commerce talks to any backend through a connector package. No file in this repo names a
connector. Every service resolves through $lib/core/services, and which connector answers is
decided by what package.json installs. Switching backends is two steps:
1. Install the connector in place of the stock one, so npm i — and any Docker build, which
installs from package.json alone — resolves it:
npm uninstall @misiki/litekart-connector
npm i @misiki/shopify-connector # or vendure, medusa, saleor, ...
2. Set that backend’s env in .env — PUBLIC_SHOPIFY_API_URL, PUBLIC_MEDUSA_API_URL, the
PUBLIC_LITEKART_* trio, and so on. The convention is PUBLIC_<BACKEND>_API_URL, with any extra
credentials read from the same prefix, so a connector this repo has never heard of configures
itself the same way. Per-backend guides are in docs/.
There is no third step, and nothing to uncomment. vite.config.ts resolves whichever
@misiki/*-connector is installed and exposes it as $connector;
src/lib/core/connectors/active.ts is the one module that wraps it, for every backend. Set
PUBLIC_CONNECTOR to override that — to attach a connector this repo has never heard of
(PUBLIC_CONNECTOR='@my-co/custom-connector'), or to choose when several are installed.
@misiki/kitcommerce-core imports @misiki/litekart-connector by name — its peerDependency — so
a shim in vite.config.ts redirects that specifier onto the connector you installed. It does
nothing while Litekart is installed.
Each connector maps one platform’s API onto a shared 43-service surface (product, cart,
checkout, order, auth, address, …). Coverage below is measured, not asserted: a script
traces which services actually reach the HTTP layer, following each connector’s own request helpers.
Every endpoint was written by reading the platform’s authoritative source — the OpenAPI spec,
the RAML, the router registration, or the controller code itself. We did not guess routes, and
where a route could not be verified we left an explicit placeholder rather than ship a
plausible-looking path that 404s in a merchant’s store.
But none of these have been run against a live production instance. That is the single biggest
gap, and the one thing platform maintainers can fix that we cannot.
| Platform |
npm package |
Coverage |
Cart |
Checkout |
Order |
Auth |
Help wanted with |
| Litekart |
@misiki/litekart-connector |
39/43 |
✅ |
✅ |
✅ |
✅ |
— |
| Vendure |
@misiki/vendure-connector |
39/43 |
✅ |
✅ |
✅ |
✅ |
— |
| Medusa |
@misiki/medusa-connector |
31/43 |
— |
✅ |
✅ |
⛔ |
address, auth, cart, category, payment-method, product, search, user |
| Broadleaf Commerce |
@misiki/broadleaf-connector |
28/43 |
✅ |
✅ |
✅ |
✅ |
— |
| Saleor |
@misiki/saleor-connector |
28/43 |
— |
— |
— |
⛔ |
address, auth, cart, category, checkout, coupon, order, page, payment-method, search, user |
| Shopware |
@misiki/shopware-connector |
28/43 |
✅ |
✅ |
✅ |
✅ |
coupon |
| Virto Commerce |
@misiki/virto-connector |
28/43 |
✅ |
✅ |
✅ |
✅ |
— |
| WooCommerce |
@misiki/woocommerce-connector |
27/43 |
✅ |
✅ |
✅ |
⛔ |
auth, wishlist |
| Magento Open Source |
@misiki/magento-connector |
26/43 |
✅ |
✅ |
✅ |
✅ |
review, wishlist |
| Spree Commerce |
@misiki/spree-connector |
26/43 |
✅ |
✅ |
✅ |
✅ |
review |
| X-Cart |
@misiki/x-cart-connector |
26/43 |
✅ |
✅ |
✅ |
✅ |
vendor |
| EverShop |
@misiki/evershop-connector |
25/43 |
✅ |
✅ |
✅ |
✅ |
review, vendor, wishlist |
| Spryker |
@misiki/spryker-connector |
25/43 |
✅ |
✅ |
✅ |
✅ |
coupon |
| nopCommerce |
@misiki/nopcommerce-connector |
24/43 |
✅ |
✅ |
✅ |
✅ |
coupon, currency |
| PrestaShop |
@misiki/prestashop-connector |
24/43 |
✅ |
✅ |
✅ |
⛔ |
auth, payment-method, review, wishlist |
| Sylius |
@misiki/sylius-connector |
24/43 |
✅ |
✅ |
✅ |
✅ |
page, vendor, wishlist |
| Swell |
@misiki/swell-connector |
23/43 |
✅ |
✅ |
✅ |
✅ |
review, state, vendor, wishlist |
| Bagisto |
@misiki/bagisto-connector |
22/43 |
✅ |
✅ |
✅ |
✅ |
coupon, page, payment-method, vendor |
| commercetools |
@misiki/commercetools-connector |
21/43 |
✅ |
✅ |
✅ |
✅ |
country, currency, page, vendor |
| OroCommerce |
@misiki/orocommerce-connector |
21/43 |
✅ |
✅ |
✅ |
✅ |
currency, review, vendor, wishlist |
| Sharetribe |
@misiki/sharetribe-connector |
21/43 |
— |
✅ |
✅ |
✅ |
address, cart, country, coupon, state, wishlist |
| CS-Cart |
@misiki/cs-cart-connector |
20/43 |
✅ |
✅ |
✅ |
⛔ |
address, auth, country, coupon, currency, state, wishlist |
| Shuup |
@misiki/shuup-connector |
19/43 |
✅ |
✅ |
✅ |
✅ |
country, coupon, page, review, state, wishlist |
| Shopify |
@misiki/shopify-connector |
16/27 |
✅ |
✅ |
✅ |
✅ |
country, page, profile, review, vendor, wishlist |
| Django Oscar |
@misiki/oscar-connector |
15/43 |
✅ |
✅ |
✅ |
✅ |
coupon, currency, page, payment-method, review, search, state, vendor, wishlist |
| OpenCart |
@misiki/opencart-connector |
9/43 |
✅ |
✅ |
✅ |
⛔ |
address, auth, category, coupon, page, profile, search, user, vendor, wishlist |
✅ wired · ⛔ throws NotSupportedError — the platform has no real endpoint, and a stub that
mints a session for any password is an auth bypass, not a placeholder · — not yet wired
A low number is often the correct answer, not a to-do. OpenCart core ships exactly ten API
controllers — cart, coupon, currency, customer, login, order, payment, reward, shipping, voucher —
and no product, category or search controller at all. Its 9/43 is the honest ceiling for that API.
Services excluded from “help wanted” are Litekart-native concepts (reels, deals, chat,
gallery, popularity, banner, …) that have no equivalent on any third-party platform.
📣 How you can help
If you build or maintain one of these platforms, in priority order:
- A sandbox or demo instance we can point a storefront at. Even short-lived. Worth more than
any code review — it turns “verified against the spec” into “verified against reality”.
- Ten minutes telling us our idioms are wrong. We picked one way to do pagination, filtering,
sorting and session handling per platform. If it is not how you would do it, saying so saves us
a wrong assumption baked into every service.
- Answers on the gaps above. Most are “does this platform have X at all?” — instant for you,
guesswork for us.
- A pointer to the right docs. Three URLs we were given were dead (
spree.readthedocs.io,
api.sylius.com, django-oscar-api’s route page) and we fell back to reading source.
Per-platform open questions are in CONNECTORS.md —
e.g. does Shopware’s Store API have standalone voucher lookup? Is REST planned for
Magento_Review/Magento_Wishlist, which ship no webapi.xml? Is listing → Product the mapping
Sharetribe would recommend?
Open an issue or PR on the connector repo under github.com/misiki-in,
or start a discussion.
We will credit you in the connector README.
Storefront capability matrix
| Capability |
Litekart |
Shopify |
Medusa |
Vendure |
Saleor |
WooCommerce |
| Product listing / search |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
| Product detail page |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
| Categories / collections |
✅ |
✅ |
✅ |
✅ |
❓ |
✅ |
| Cart |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
| Checkout |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
| Payment methods |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
| Order placement |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
| Order history / detail |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
| Auth / registration |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
| Addresses |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
| Customer profile |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
| Wishlist |
✅ |
❓ |
❓ |
❌ |
❓ |
❓ |
| Reviews |
✅ |
❓ |
❓ |
❌ |
❓ |
❓ |
| Coupons / promotions |
✅ |
❓ |
❓ |
❌ |
❓ |
❓ |
| Multi-currency / regions |
✅ |
✅ |
❓ |
❌ |
❓ |
❓ |
| Faceted search (Meilisearch) |
✅ |
✅ |
✅ |
❌ |
✅ |
✅ |
| CMS pages, blog, banners, FAQ |
✅ |
❓ |
❓ |
❌ |
❌ |
❓ |
| Multi-vendor / marketplace |
✅ |
✅ |
❌ |
❌ |
❌ |
❓ |
✅ supported · ❌ not implemented yet · ❓ untested
Litekart is the reference implementation and is the most complete. The Medusa, Vendure
and Saleor connectors cover the core commerce path — browse, product, cart, checkout,
order — and are actively being extended. PRs welcome.
Maintainers of these platforms: we would rather ask than guess. The fastest way to help is
a sandbox instance we can point a storefront at, or ten minutes telling us our endpoint idioms
are wrong. Specific open questions per platform are in
CONNECTORS.md.
Required backend settings
Each backend needs a few settings changed before the storefront will work end to end.
Vendure
authOptions.requireVerification → false
See VENDURE.md for the full Vendure setup guide (env, store identity,
architecture, limitations, troubleshooting).
Saleor
- Require email confirmation for user registration →
false
isPhoneMandatory → false
- Allow unpaid orders in order settings → enabled
- Allow unpaid orders in channel settings → enabled
See SALEOR.md for the full Saleor setup guide.
Medusa
- Set a publishable API key and add your storefront origin to the Store CORS config.
See MEDUSA.md for the full Medusa setup guide.
Demos
Click on the button to directly deploy to Netlify, Vercel or ZopDay. Zero configuration required.
We also support docker images, use the following command to pull the latest docker image and deploy it:
评论