React + Tailwind · shadcn-compatible · MCP-ready · Vertical #3

AI builds the shop window. This is the back office.

Drop-in components for merchant admin: orders that tell you what you're actually looking at, empty states with a way out, stock bands that show the threshold behind the colour, variant grids with no silent gaps, and refund totals that cannot disagree with their line items. Same token system and AI context pack as OnSystem's other kits.

Get the kit See it live →
Live now · one-time purchase · instant delivery.
What your AI ships by default
DashboardSalesCustomersOrders
Total orders
12,485
↑ 3.1%
Processing
234
↑ 12
Customer orders
45,6370
↑ 45
All Orders
OrderCustomerTotalStatus
ORD-7823Jennifer Lee$89.99Cancelled
The same screen, on OnSystem
◧ Orders⌕ ◔ RN
Total orders
12,485
↑ 3.1% vs last week
Processing
234
↑ 12 orders vs last week
Customer orders
456,370
This week
Orders · filtered by Status: Cancelled · 1 of 12,485
OrderCustomerTotalStatus
ORD-7823Jennifer Lee$89.99Cancelled

Same orders, same filter. One says "All Orders" while showing only the cancelled ones, mixes percentages with raw counts in a single tile row, and prints 456,370 as "45,6370." The other names the filter, says how many of how many you are seeing, labels every delta with its unit, and routes every number through one formatter. Both are real defects, found in a real store admin.

Why AI-built store admin goes wrong

Ten failures, from real store admin

We audited AI-generated e-commerce back offices across two different tools, the same way we audited internal tools and fintech. One finding came before all the others: AI builds storefronts, not back offices. Storefront templates clear 500 forks; admin tops out at 66. The back office is where the defects live because it is where nobody is looking.

1

No empty state at all

Search for something that isn't there and the table renders bare column headers over nothing. No message, no illustration, no way to clear the search. OnSystem's table ships two distinct empty states: "no matches for these filters," which echoes the filters and offers a way out, and "no records yet," which says so plainly.

2

The table lies about its filter

Filter to Cancelled and the caption still reads "All Orders." The label and the data disagree, silently. Here the caption is composed from the active filters and the real row counts, so it cannot drift from what is on screen.

4

Eight rows, no pagination

A tile claims 12,485 orders. The table shows eight, with no pager and no "showing 1 to 8 of 12,485." Pagination and a result count are not optional when the source is larger than the page.

5

Numbers that don't reconcile

A real store admin printed 456,370 as "45,6370." Elsewhere, profit appeared to exceed revenue because neither figure stated its period. Every amount routes through one formatter, and a tile that implies a window has to name it.

7

Mixed units in one tile row

"+3.1%", "+12", "+45", "+2.8%" side by side, percentages and raw counts, none labelled. A delta declares its unit, so a count cannot masquerade as a percentage.

10

Charts measuring nothing

Three "width(-1) and height(-1)" warnings on first paint, because responsive charts sat inside parents with no resolved height. Every chart here renders into a frame with a real pixel height, resolved before the chart measures it.

What you get

A complete merchant-admin kit

10

E-commerce components

Orders list and order detail, products list and product detail, inventory levels, refund flow, plus four primitives: stock status (which derives its band from the quantity and the reorder point, never a hand-set colour), money total (which has no total field, because it computes one), variant matrix, and chart frame.

+

Reuses the shared primitives

Button, FormField, FormSection, Can, ConfirmDialog, FilterBar, DataTable, StatCard, ActivityFeed, AppShell and LockedIndicator carry over unchanged. The registry auto-installs whichever your e-commerce components need, with no separate purchase.

5

Themes, one class

Light, Dark, Berlin Nights, Sunny California, Console 47: the exact same WCAG-AA audited theme layer as the other kits. Switch the whole system with a single class.

AI

The context pack

A rules file for Cursor, Claude Code, v0, Bolt, or Lovable, tuned for merchant-admin conventions: filter-bound captions, real empty states, stated stock thresholds, totals that reconcile. Every new screen your AI builds keeps them.

Install like shadcn

npx shadcn add, the exact workflow you already use for free components, pointed at your licensed e-commerce registry.

MCP

Or just ask your AI

The same registry works with Claude Code, Cursor, and any other MCP-enabled assistant, with no extra setup. Run npx shadcn@latest mcp init once, then ask it to add OrdersList, VariantMatrix, or any component by name.

Perpetual + updates

One-time purchase. Perpetual access and free updates to the bundle as merchant-admin conventions evolve.

How it works

Three steps to on-system

Buy your license

One checkout, one license key, delivered instantly along with the AI context pack.

Point shadcn at it

Add one block to your components.json with your key. That's the whole setup.

Add components

Run npx shadcn add @onsystem-ecommerce/OrdersList. It pulls the component, the primitives it composes (DataTable, FilterBar), and the shared lib automatically.

Prefer asking your AI? npx shadcn@latest mcp init wires Claude Code or Cursor up to the same registry from step 2, with no separate setup.
The part nobody else has

It doesn't just look right once.

Component libraries fix the screen you're on. OnSystem's AI context pack fixes every screen you build next. Feed it to your AI coding tool and it keeps captions bound to filters, empty states real, and totals reconciled from then on.

# feed the context pack to your AI once
> add a refunds table for cancelled orders

caption names the active filter and the row count
filtered-to-zero state offers a way out
totals computed from line items, never entered
zero hardcoded colors
# on-system, automatically
Pricing

One price. Everything.

$199.99
Buy E-commerce
Instant delivery: your license key, the kit zip, and registry access arrive the moment you buy.

Building across more than one vertical? All Access bundles all three kits for $499.99, which is $99.98 less than buying them separately.

Questions

Good to know

Do I need another kit to use this one?

No. The E-commerce kit is fully self-contained. Any shared primitive an e-commerce component needs (Button, FilterBar, DataTable, StatCard and the rest) installs automatically with your e-commerce license, at no extra cost.

How is it delivered?

Through a private registry you install with the shadcn CLI you already use: npx shadcn add @onsystem-ecommerce/<component>. Your license key unlocks it. Updates appear automatically, with no re-downloads. It's also MCP-ready: run npx shadcn@latest mcp init once and ask Claude Code or Cursor to add a component by name instead.

Which AI tools does the context pack work with?

Cursor, Claude Code, v0, Bolt, and Lovable: anywhere you can supply a rules file or project context.

What stack does it assume?

React + TypeScript + Tailwind, built on shadcn/ui conventions. The components are dependency-free portable .tsx: your code, no runtime lock-in.

One-time or subscription?

One-time. You get perpetual access and free updates to the bundle.

Does this connect to Shopify or WooCommerce?

No. This is a UI component library, not a storefront integration. The components take your data as props, wherever it comes from. What they guarantee is how that data is presented: filters named, empty states real, totals reconciled.

Live now

Ship a back office worth using.

Your license key, e-commerce context pack, and components arrive the moment you buy.

Get the E-commerce kit
One-time purchase · perpetual access + free updates · see all three kits →