Multi-store
One schema, many stores. Store context is enforced at the database layer with PostgreSQL row-level security.
- Store switcher in the admin
- Staff invites, roles and per-action permissions
- Every admin read and write is store-scoped server-side
Payments
A PaymentProvider interface with Stripe, NMI and Sezzle implemented, plus payment reconciliation and ledgered, provider-aware refunds.
- Per-store gateway accounts with test/live mode
- Stripe PaymentIntents and mode-bound webhook settlement
- Subscriptions through Stripe Billing
REST API + OpenAPI
Versioned REST under /v1, built on Hono and zod. The OpenAPI document at /v1/openapi.json is generated from the route schemas.
- Typed storefront client generated from the contract
- Outbound webhooks
- Static catalog exports for fast storefront browse
Browser admin
A React admin for running the store day to day: dashboard, orders, catalog, inventory, customers, discounts, returns and reports.
- Draft orders, order editing, partial fulfillment
- Gift cards, promotions, points and reviews moderation
- Staff, tax zones, currency rates and settings
Storefront
A reference Qwik storefront over the REST API. No brand is hard-coded: identity, theme and contact details are resolved per host at runtime.
- Catalog, collections, search and product pages
- Cart, checkout, customer accounts and order tracking
- Production storefronts can consume the API independently
Software licensing
Sell apps as well as goods. Paid order lines can issue app licenses with device activation and protected updates.
- Seat limits and update eligibility
- Protected update manifests and download artifacts
- Renewals extend the entitlement