The open-source e-commerce platform for the TypeScript era.
Storefront, admin, checkout and plugins on TanStack Start, React 19 and Supabase — not on 2008-era PHP. Your store is a thin assembly of ~8 files; the core ships as versioned npm packages, so pnpm update delivers new pages and fixes to stores already in production.
No signup. No license key. MIT — your checkout, your data, your infra.
The core promise
Core updates that actually arrive
Every open-source cart makes you fork the codebase — and every fork starts drifting the day you deploy it. SimplyCMS mounts canonical pages straight from node_modules via TanStack Router virtual routes, so the framework of your store lives in versioned packages, not in your repo. Read how it works →
“Do not use git merge…”— a real storefront upgrade guide from a leading JS commerce framework. The next major dropped the update channel entirely.
Your repo never merges upstream.— the skeleton-update problem the industry left open, solved as the founding requirement of this architecture.
How it works
A real store in three moves
Scaffold the thin host
One command creates a working store: SSR storefront, admin panel, cart, checkout, default theme. The repo you own stays tiny.
❯ pnpm create simplycms-store my-store/ ├─ simplycms.config.ts # the source of truth ├─ routes.ts # mounts core route packages ├─ src/routes/my/ # your own pages ├─ supabase/migrations/ └─ themes/ · plugins/
Make it yours
Install themes and plugins as npm packages with simplycms add; switch and configure them from the admin — no rebuild. Add custom pages in src/routes/my/.
❯ simplycms add acme-theme --theme ❯ simplycms add acme-plugin-faq ❯ simplycms db:diff --write # reviewed SQL
Stay current, effortlessly
The core evolves as one synchronized release train. Updating is a dependency bump — new pages, fixes and SEO improvements included.
❯ pnpm update "@simplycms/*" ❯ pnpm simplycms doctor # config ↔ DB ↔ build sanity ❯ pnpm simplycms update # migrates the ~8 host files
Batteries included
A full store, engineered — not assembled from 40 plugins
Everything a production shop needs ships in the core packages and is tested as one system — including a packaging pilot that builds a real store from published tarballs before every release.
SEO-first SSR storefront
Canonical pages — catalog, product, cart, checkout — stream full HTML for crawlers and AI agents. sitemap.xml and robots.txt are generated by the server entry, not an afterthought plugin.
Admin panel included
Products, orders, reviews, users, discounts, themes and plugins under /admin — a client-side SPA guarded by server middleware. Owners activate and configure; nothing rebuilds.
Plugin SDK with a trust boundary
Plugins use ports from @simplycms/plugin-sdk — never a raw database client. Own tables live under a plg_* namespace; migrations ship inside the package and land as reviewed SQL.
Typed database pipeline
The schema — 40 tables and 93 row-level-security policies — is Drizzle TypeScript. simplycms db:diff emits SQL migrations for human review; generated types keep every query compile-checked.
Themes without lock-in
A theme is tokens + brand components — it never owns pages, so core updates can’t break it. Install from npm for upstream fixes, or --copy it into your repo and own every line.
i18n from day one
1,100+ message keys in mirrored uk/en catalogs, typed against a closed union. Themes and plugins carry their own catalogs — coverage is proven by AST-scanning tests, not promises.
The stack
Built on the stack you’d choose anyway
No legacy PHP, no jQuery admin, no template engine from 2008. One language across storefront, server functions, database schema and plugins — strict TypeScript, end to end.
Compare
The receipt, itemized
OpenCart pioneered the model we admire — install, extend, update. WooCommerce bolted a shop onto a blog engine. Shopify rents you a great one. SimplyCMS is that OpenCart promise, rebuilt on a modern stack you own.
SIMPLYCMS
HONEST RECEIPT · EST. 2026
LICENSE: MIT · NO KEY REQUIRED
| SimplyCMS | OpenCart | WooCommerce | Shopify | |
|---|---|---|---|---|
| Built as a store first | ✓ commerce-native core | ✓ but 2010s architecture | ✗ plugin on a blog engine | ✓ SaaS |
| Language & rendering | TypeScript · React 19 SSR | PHP · Twig templates | PHP · WP themes | Liquid · closed runtime |
| Your store repo | thin assembly, ~8 files | full source you patch | WP install + plugin soup | rented, no repo |
| Core updates | pnpm update — pages arrive | manual, mind the OCMODs | pray plugins survive | automatic (their roadmap) |
| Extensions | typed npm packages, reviewed SQL | zip uploads, file patches | 60k plugins, quality lottery | app store + revenue share |
| Own your data & infra | your Postgres + RLS, self-host | yours (your hosting) | yours (your hosting) | theirs — export CSVs |
| Price of the platform | MIT, $0 forever | free + paid modules | free + hosting + plugins | $/mo + per-transaction fees |
Honest footnote: Shopify is excellent if renting works for you. SimplyCMS is for teams that want the OpenCart ownership model on a modern, typed stack.
Ecosystem
Extensions with a contract, not a wild west
Everything installable is an npm package with declared core compatibility. Plugins live behind a ports-only SDK boundary — enforced by lint rules and tests, not by trust.
Write a plugin
Scaffold on the Plugin SDK: admin pages under /admin/<slug>, storefront slots, Zod-validated settings, your own plg_* tables with migrations and an i18n catalog — all inside one npm package.
Design a theme
A theme is design tokens plus brand components — Header, Footer, hero sections. It never owns pages, so a core update can’t break it. Ship it as npm or let stores copy it in and own it.
Publish under your scope
Name it simplycms-plugin-* or simplycms-theme-*, publish to npm under your own scope, then open a PR to the marketplace index — a JSON catalog that points at packages, never stores code.
Roadmap
Five phases shipped. One to go.
The platform is built in public — every phase has a written spec, an execution plan and a verifiable definition of done. Follow the roadmap on GitHub →
Foundation
Routes and pages moved into core packages; theme contract v2
shipped · Jul 2026Packaging pilot
Store built from real tarballs; production server preset
shipped · Aug 2026Scaffolder + CLI
create-simplycms-store, owner bootstrap, simplycms CLI
shipped · Aug 2026Plugin SDK
definePlugin, ports, trust boundary, reference FAQ plugin
shipped · Aug 2026Themes as packages
npm or copy-in install, admin sync, marketplace contract
shipped · Aug 2026v1.0 release train
Strict semver, engines checks, marketplace submissions open
nextYour next store is one command away.
Scaffold it, run it, own it. If it saves you a fork — leave a star so other builders find it.