# KitCommerce — Open-Source Go & Svelte Enterprise Ecommerce

> Self-hosted, white-label, open-source ecommerce: GoCommerce is one Go binary with one dependency; Svelte Commerce renders on the server. MIT, free for life.

- Canonical: https://kitcommerce.store/
- Last updated: 2026-09-25

---

[Open source · MIT licensed · Free for life](https://kitcommerce.store/pricing/)

## Open-source ecommerce platform

Self-hosted, free for life, and yours to brand.

- **Enterprise-grade** — B2B, marketplace and multi-store in one engine
- **Fast by design** — One compiled Go binary, server-rendered pages
- **Built to scale** — Add servers behind a load balancer, one PostgreSQL
- **Over 1,000 tests** — And a documented contract for every route
- **It just works** — Up on your own server with one command
- **Your brand, no fees** — MIT licensed, white-label, 0% of your sales

[Deploy in minutes](https://kitcommerce.store/#one-command) · [Live demo](https://admin.kitcommerce.store/#email=demo%40kitcommerce.store&password=Demo1234)

- **1,817** GitHub stars, Svelte Commerce
- **338** forks
- **26** commerce backends connected

Own your code. Own your infrastructure. Own your customer data.

![The GoCommerce admin dashboard: net sales for the last thirty days, order, product and customer counts, a daily sales chart and a best-sellers table.](https://kitcommerce.store/assets/admin/dashboard-light.webp)

Built with

- Go
- Svelte
- PostgreSQL
- Meilisearch
- Docker

A look inside

### See it before you deploy it

A GoCommerce instance runs at `admin.kitcommerce.store` as a public demo: the link opens the sign-in screen with the demo account filled in — press Login and look around. It is a real store you can change; every email address and phone number in it is masked, and the team, its keys and its roles are frozen.

![GoCommerce dashboard detail from the seeded store: revenue, orders, products and customers, recent orders and the daily sales chart.](https://kitcommerce.store/assets/admin/focus/dashboard-light.webp)

Revenue, recent orders and daily sales. [Full screenshot ↗](https://kitcommerce.store/assets/admin/dashboard-light.webp)

![The GoCommerce products list: names, status, variant count, price and available stock.](https://kitcommerce.store/assets/admin/focus/products-light.webp)

Names, status, variants, prices and available stock. [Full screenshot ↗](https://kitcommerce.store/assets/admin/products-light.webp)

![The GoCommerce orders list: order number, customer, fulfillment status, payment status and total.](https://kitcommerce.store/assets/admin/focus/orders-light.webp)

Fulfillment and payment are separate states. [Full screenshot ↗](https://kitcommerce.store/assets/admin/orders-light.webp)

![The GoCommerce inventory screen: on-hand, reserved and available stock per SKU across locations.](https://kitcommerce.store/assets/admin/focus/inventory-light.webp)

On-hand, reserved and available stock per SKU. [Full screenshot ↗](https://kitcommerce.store/assets/admin/inventory-light.webp)

![The payment methods screen of a store with no gateway module installed: cash on delivery, built in and active.](https://kitcommerce.store/assets/admin/focus/payments-light.webp)

Cash on delivery is built in; gateways are modules. [Full screenshot ↗](https://kitcommerce.store/assets/admin/payments-light.webp)

![The shipping and delivery screen: one zone with USPS and FedEx rates by basket value.](https://kitcommerce.store/assets/admin/focus/shipping-light.webp)

Zones and rates by basket value; the most specific zone wins. [Full screenshot ↗](https://kitcommerce.store/assets/admin/shipping-light.webp)

![The plugins screen: storefront and marketing features already in the binary, switched on or off per store.](https://kitcommerce.store/assets/admin/focus/integrations-light.webp)

Seventeen switches already in the binary; a storefront reads the enabled ones. [Full screenshot ↗](https://kitcommerce.store/assets/admin/integrations-light.webp)

[Open live demo](https://admin.kitcommerce.store/#email=demo%40kitcommerce.store&password=Demo1234) · [Every screen, captured](https://kitcommerce.store/gocommerce/admin/)

Screenshots from a seeded instance: 64 products, 260 orders across 150 days. Every screen is one of the 61 in the admin.

- **61** admin screens
- **342** documented API operations
- **44** modules
- **79** storefront themes
- **8** live stores

Why teams pick it

### Self-hosted. Scalable. Fast.

Four mechanisms the GoCommerce docs describe, drawn with the names from the code. No timings or benchmark figures — none are published.

Scalable

#### Add processes, not coordination.

*Diagram:* Scaling GoCommerce by adding identical processes. A load balancer sends requests to three identical GoCommerce processes running the same binary; the third is drawn dashed with a plus sign to show that more can be added. There is no leader election between them. Every process reaches one PostgreSQL database through the PgBouncer connection pooler.

Run more identical processes behind a load balancer. Workers claim jobs with `FOR UPDATE SKIP LOCKED`, so instances need no coordination — only a shared volume for uploads.

Headless

#### One API, any front end.

*Diagram:* One GoCommerce API serving every front end. A storefront (Svelte Commerce or your own), a mobile app, the admin compiled into the binary, an AI agent over MCP, and Google and Meta product feeds all call GoCommerce, which serves 342 documented operations over REST with an OpenAPI description. Svelte Commerce reaches GoCommerce through an early connector (0.1.0) covering catalogue, cart, checkout and order lookup.

The storefront, the admin, an app and an agent all use the same API. Svelte Commerce reaches GoCommerce through an early connector (0.1.0) covering catalogue, cart, checkout and order lookup.

Modular

#### Import what you need.

*Diagram:* GoCommerce modules are compiled in only when imported. One GoCommerce binary holds the core (catalogue, cart, checkout, orders and inventory) with five imported modules docked into it: payments-razorpay, payments-stripe, fulfill-shiprocket, notify-msg91 and search-meilisearch. A dashed tile outside the binary stands for a module that is not imported, and so is not in the binary.

44 modules, each a directory under `ext/`. Import one and it’s compiled in; leave it out and none of its code ships.

Fast

#### Finished HTML, one process in front of the database.

*Diagram:* A server-rendered page beside a client-rendered bundle. In the server-rendered lane, Svelte Commerce sends the browser HTML that is ready to read. In the client-rendered lane, the browser receives a JavaScript bundle, then boots it, fetches data and renders before there is a page to read. Below, separately, GoCommerce is one compiled Go process that talks to PostgreSQL. No timings are shown because no benchmark figures are published.

A crawler and a shopper get the page itself, not a bundle to boot. No benchmark figures are published.

[See the full architecture](https://kitcommerce.store/go-svelte-ecommerce/) · [Developer features](https://kitcommerce.store/features/development/)

Sell

### A storefront buyers don’t wait for

Svelte Commerce renders every page on the server, so a shopper and a crawler both receive the page itself, not a bundle to boot. 79 live themes to start from; this one is a jewellery business selling on it today.

![The Arialshop desktop storefront: a jewellery hero image with a shop call to action and category navigation.](https://kitcommerce.store/assets/admin/focus/storefront-desktop.webp)

Real storefront capture · [Full desktop screenshot ↗](https://kitcommerce.store/assets/admin/storefront-home.webp)

#### Arialshop

arialshop.com

A real production jewellery storefront running on Svelte Commerce — lab-grown diamond rings, with variants, sizing and checkout.

[Visit store](https://arialshop.com)

[Browse 79 themes](https://kitcommerce.store/svelte-commerce/themes/) · [Explore Svelte Commerce](https://kitcommerce.store/svelte-commerce/)

Manage

### Run the business from one admin

Orders, stock, customers, refunds and staff, from the 61-screen admin compiled into the GoCommerce binary. Each of these is a thing in the code, not an adjective.

- **Rights, per resource** — 48 core rights, read and write gated separately, plus those modules add — for the admin and the API alike.
- **Scoped API keys** — A key carries a role, a prefix for the log line, a last-used time and a revocation.
- **Order timeline and edits** — Every change on the record; edit lines and stock moves with them.
- **Multi-location inventory** — Stock on hand per location, reserved separately, every movement on a ledger.
- **9 payment modules** — Money as integer minor units, never a float.
- **Idempotent writes** — Repeat a checkout request safely; a changed price answers 409 instead of charging.

[Operations features](https://kitcommerce.store/features/operations/) · [Checkout features](https://kitcommerce.store/features/checkout/)

Scale

### From one store to a platform

A marketplace, a wholesale catalogue and several storefronts run on the same engine, without replatforming. Each is a set of records, and each page names the file that does the work.

#### Multi-vendor marketplace

- Vendor accounts
- Vendor offers
- Moderation states
- Commission recorded per vendor

[Explore marketplace →](https://kitcommerce.store/solutions/marketplace/)

#### B2B commerce

- Customer groups
- Price lists
- Quantity breaks
- Scoped API keys

[Explore B2B →](https://kitcommerce.store/solutions/b2b/)

#### Direct-to-consumer

- The default store
- Cash on delivery built in
- Manual fulfillment built in
- Svelte Commerce in front

[Explore D2C →](https://kitcommerce.store/solutions/d2c/)

#### Multi-store

- Channels
- Per-channel publishing
- Per-channel price lists
- One default channel

[Explore multi-store →](https://kitcommerce.store/solutions/multi-store/)

Build

### A codebase developers actually want

A Go engine with its admin embedded, and a SvelteKit storefront — the two packages of KitCommerce, each MIT licensed and usable alone, with a documented API between them.

itswadesh/gocommerce

[GoCommerce](https://kitcommerce.store/gocommerce/)

Headless Go backend + Svelte admin. One binary, one dependency, PostgreSQL.

- **44** modules
- **342** API operations
- **1,000+** tests
- **61** admin screens

[Explore GoCommerce](https://kitcommerce.store/gocommerce/) · [Live demo](https://admin.kitcommerce.store/#email=demo%40kitcommerce.store&password=Demo1234) · [GitHub](https://github.com/itswadesh/gocommerce)

itswadesh/svelte-commerce

[Svelte Commerce](https://kitcommerce.store/svelte-commerce/)

Headless Svelte/SvelteKit storefront. Server-rendered, 26 backends.

- **26** backends
- **79** themes
- **1,817** stars
- **338** forks

[Explore Svelte Commerce](https://kitcommerce.store/svelte-commerce/) · [GitHub](https://github.com/itswadesh/svelte-commerce)

Integrate

### Developer-first integration

From catalogue to placed order in three requests, against the one-command stack. The same calls the GoCommerce README documents — no SDK, no API key for the storefront routes.

Cart to order, over HTTP

```
# 1 — the catalogue: public, no key
curl localhost/api/products

# 2 — open a cart and add a variant
CART=$(curl -sX POST localhost/api/carts | jq -r .data.id)
curl -X POST localhost/api/carts/$CART/line-items \
  -d '{"variant_id":2,"quantity":2}'

# 3 — check out; the same key again returns the same order
curl -X POST localhost/api/checkout/cod -H 'Idempotency-Key: demo-1' \
  -d '{"cart_id":"'$CART'","email":"buyer@example.com",
       "address":{"line1":"1 High St","city":"Town",
                  "postal_code":"12345","country":"US"}}'
```

Every route is in [core/openapi.json](https://github.com/itswadesh/gocommerce/blob/main/core/openapi.json) and served live at `/docs`.

- **342 operations, one contract** — 238 in the core and 104 from modules, all in OpenAPI 3.0.3. The admin uses the same API a storefront does.
- **Signed webhooks** — Every event POSTed with an `X-GoCommerce-Signature` HMAC-SHA256, retried up to 12 times with backoff, each delivery logged.
- **No SDK to wait for** — Anything that speaks JSON over HTTP is a client — or generate one in your language from the spec.
- **Safe to retry** — Send an `Idempotency-Key` and a repeated checkout returns the same order; a changed price answers 409 instead of charging.
- **Agents too** — The [MCP server](https://kitcommerce.store/gocommerce/mcp/) gives an AI agent 19 tools over the same services and rights.

[Developer features](https://kitcommerce.store/features/development/) · [44 modules](https://kitcommerce.store/integrations/) · [MCP server](https://kitcommerce.store/gocommerce/mcp/)

Coding agents

### Built for developers — and their coding agents

The repository is written to be read by a machine as well as a person. Claude, Codex, Cursor and Antigravity all pick up the same files; none of this implies a partnership with any of them.

#### Instructions are explicit

- `AGENTS.md`
- 14 architecture rules, 4 notes for agents
- 15 task guides in `skills/`

#### Changes are testable

- Over 1,000 tests
- Modular packages
- Predictable service boundaries

#### Runtime agents are supported

- MCP module, 19 tools
- Same domain services as REST
- Read-only mode

[Vibe-code the storefront, not the engine](https://kitcommerce.store/vibe-coding-commerce/)

One command

### Start on your own server in minutes

Three services, one command. This compose file is served from this domain and was run end to end before it was published here.

Get it and run it

```
curl -O https://kitcommerce.store/docker-compose.yml
curl -o .env https://kitcommerce.store/env.example
# edit .env — it will not start while a required secret is unset
docker compose up -d
```

[docker-compose.yml](https://kitcommerce.store/docker-compose.yml) · [env.example](https://kitcommerce.store/env.example)

*Illustration:* Terminal output: postgres, gocommerce and web containers started, then a 200 from localhost.

#### After one command

- **PostgreSQL** — the database GoCommerce owns
- **Commerce API** — 342 documented operations
- **Admin panel** — compiled into the same binary
- **Reverse proxy** — Caddy, so it answers on port 80

Admin

`http://localhost/`

Sign in with the email and password from your `.env`.

API documentation

`http://localhost/docs`

The OpenAPI contract this build actually serves.

Catalogue

`http://localhost/api/products`

Public and unauthenticated — the route a storefront calls.

**The storefront is separate:** this stack does not pair Svelte Commerce with GoCommerce. To do that, install the early GoCommerce connector (`@misiki/gocommerce-connector`, 0.1.0) in a Svelte Commerce checkout and point it at this stack — it covers catalogue, cart, checkout and order lookup, not customer accounts or search. [See the connector status](https://kitcommerce.store/gocommerce-svelte-commerce-connector/). GoCommerce builds from source on first run, because no image is published yet.

Everything in the box

### The full feature list, nothing sold separately

No plugin store, no per-feature pricing. Every line below ships in the KitCommerce packages — in the GoCommerce core or as a module you import.

#### Catalogue

- Products and variants
- Attributes from Shopify’s taxonomy
- Categories and collections
- Custom metadata on 15 tables

#### Search and discovery

- Filtering and sorting in the engine
- Meilisearch module
- Sitemaps and IndexNow modules
- Google Merchant and Meta feeds

#### Cart and checkout

- Guest carts and checkout
- Idempotent, never-repricing checkout
- Discount codes
- Abandoned-cart recovery

#### Orders and fulfilment

- Order timeline and edits
- Shipping in parcels, 12 carrier options
- Returns with per-line restock
- Invoices, picking sheets, packing slips

#### Payments

- Nine gateway modules
- Cash on delivery built in
- Refunds through the gateway
- Payouts by payment method

#### Customers and B2B

- Shopper accounts (identity module)
- Customer groups and price lists
- Quantity breaks
- Reviews and wishlists

#### Marketplace and multi-store

- Vendors, moderated, with their own logins
- Channels with their own price lists
- Roles and scoped API keys
- Stock across locations

#### Content and messaging

- CMS pages, menus and FAQ
- Newsletter and Klaviyo
- Email: Resend, SendGrid
- SMS: Twilio, MSG91

#### Infrastructure

- One Go binary and PostgreSQL
- 342 operations in OpenAPI
- Signed webhooks, events never lost
- gocommerce doctor and an MCP server

[Every feature, checked against the code](https://kitcommerce.store/features/)

### Works with what you already run

- Stripe
- Razorpay
- Adyen
- Shiprocket
- Delhivery
- Twilio
- SendGrid
- Meilisearch
- [44 modules →](https://kitcommerce.store/integrations/)

How it goes

### From download to your first order

1. **Download and run** — One command brings up PostgreSQL, the API with its admin, and a proxy on port 80. [The command](https://kitcommerce.store/#one-command)
2. **Configure your store** — Catalogue, payment methods, shipping zones, tax rates and staff — all from the admin. [What the admin does](https://kitcommerce.store/features/operations/)
3. **Customise it** — Import the modules you need, change the storefront’s Svelte components, and let a coding agent read `AGENTS.md` first. [44 modules](https://kitcommerce.store/integrations/)
4. **Launch on your infrastructure** — Your server, your domain, your PostgreSQL backups — and your brand on all of it. [Open source](https://kitcommerce.store/open-source/)

In production

### See what stores are running

8 live stores run Svelte Commerce today, each with the Lighthouse scores it actually got on 25 September 2026. None runs GoCommerce yet.

- ![JewelWeSell on a laptop and a phone](https://kitcommerce.store/assets/live/jewelwesell.webp)

  #### [JewelWeSell](https://jewelwesell.com/)

  jewelwesell.com

  Fine jewellery and custom designs — diamond rings and necklaces, sold manufacturer-direct.

- ![Jewels On Fire on a laptop and a phone](https://kitcommerce.store/assets/live/jewelsonfire.webp)

  #### [Jewels On Fire](https://jewelsonfire.com/)

  jewelsonfire.com

  Earrings, pendants, bracelets and rings, and custom pieces made to order, shipping in the US.

- ![Varni Jewels on a laptop and a phone](https://kitcommerce.store/assets/live/varnijewels.webp)

  #### [Varni Jewels](https://varnijewels.com/)

  varnijewels.com

  Jewellery with custom orders, casting, loose stones and engraving.

[All 8 live stores, with scores](https://kitcommerce.store/live-projects/)

Ownership

### Keep the freedom of self-hosting

One plan, and it is free, for life. The software costs nothing; hosting and third-party services still cost what they cost.

- MIT licensed
- Your infrastructure
- Your database
- Fork and white-label
- No hosted tier to outgrow
- 0% of your sales

[Pricing: free, for life](https://kitcommerce.store/pricing/) · [Compare with Shopify and others](https://kitcommerce.store/compare/)

Get going

### Download it. Build with us.

#### Download and build

Both repositories are public and MIT. Clone them, run them, change anything.

[Get the source](https://github.com/itswadesh/gocommerce)

#### Ask the community

Questions go in public, where the people who build both packages answer them.

[Join the Discord](https://discord.gg/GgdAeccwDR)

#### Have it built for you

The team behind both packages takes on custom builds — themes, integrations, whole stores. Tell them what you need.

[Talk to the team on WhatsApp](https://wa.me/918249028220?text=Hi!%20I%E2%80%99d%20like%20to%20discuss%20a%20custom%20build%20on%20GoCommerce%20and%20Svelte%20Commerce.)

FAQ

### Questions

**What is GoCommerce?**

GoCommerce is an open-source, headless ecommerce backend built with Go and PostgreSQL, with a Svelte-based admin compiled into the same binary. It serves 342 documented operations over REST.

**What is Svelte Commerce?**

Svelte Commerce is an open-source headless ecommerce storefront built with Svelte and SvelteKit. It reaches a commerce backend through a connector package, and 26 connectors exist today.

**What is KitCommerce?**

KitCommerce is an open-source ecommerce platform. Its packages are GoCommerce, the backend and admin, and Svelte Commerce, the storefront — MIT licensed, used together or either one on its own. It is free, self-hosted and has no paid editions.

**Can I self-host them?**

Yes. Both packages are MIT licensed and designed to run on your own infrastructure: GoCommerce is one binary and one PostgreSQL, Svelte Commerce is a Node server. The compose file on this site runs the backend, its admin and a proxy on port 80 in one command.

**Is there a platform fee or a paid plan?**

No. There is one plan and it is free, for life: no fee on your orders and no hosted tier to graduate to. Your own servers, domains and third-party services still cost what they cost — the software is free, hosting is not.

**Can I white-label it?**

Yes. Both packages are MIT, so you can rename them, restyle the storefront and the admin, and ship them under your own brand for yourself or for clients. Keeping the copyright notice in the source is the only condition.

**Can GoCommerce and Svelte Commerce work together?**

Through an early connector: @misiki/gocommerce-connector 0.1.0 lets Svelte Commerce browse a GoCommerce catalogue, fill a cart, check out and look up an order. Customer accounts and a search index are not covered yet. Either package also works alone: GoCommerce with any HTTP client, Svelte Commerce with 26 other backends.

**How do I get started?**

Download docker-compose.yml and env.example from this site, set your secrets in .env, then run docker compose up -d. The admin answers on http://localhost/, the OpenAPI docs on /docs and the catalogue on /api/products. Everything deeper — your own PostgreSQL, modules, the storefront profile — is in the GoCommerce README.

### A store on your own server, in one command

PostgreSQL, the API with its admin, and a proxy on port 80.

[Deploy in minutes](https://kitcommerce.store/#one-command) · [GoCommerce on GitHub](https://github.com/itswadesh/gocommerce) · [Svelte Commerce on GitHub](https://github.com/itswadesh/svelte-commerce)
