Files
suaveplan/openspec/changes/enterprise-react-store/proposal.md
2026-05-27 23:29:53 +01:00

2.7 KiB

OpenSpec Change: enterprise-react-store

  • Change ID: enterprise-react-store
  • Package: @suaveplan/react-store
  • Category: react
  • Target path: react/ui/react-store
  • Status: PROPOSED
  • Date: 2026-04-24
  • Reference spec: /mnt/s/web/suaveplan/enterprise/react-store.md

Summary

Deliver @suaveplan/react-store on genesis from scratch at enterprise quality. White-label React storefront for multi-tenant e-commerce: StoreClient (products, cart, orders, wishlist, coupons), StorefrontProvider, hooks (useStore, useProducts), and ready-to-use component sets for Cart, Checkout, Orders, Product, Reviews, and Wishlist. Ships formatMoney, StoreApiError, and English translations. Genesis adds Storybook stories for every component, Playwright E2E for the full purchase flow, and 100% coverage.


Current-state audit (genesis)

Package does not exist on genesis — fresh build.


Available workspace deps on genesis

Package Role
@suaveplan/error (workspace:^) StoreApiError base
@suaveplan/api-schemas (workspace:^) Shared pagination/sort schemas
@suaveplan/react-translate (workspace:^) i18n
@suaveplan/react-ui (workspace:^) UI primitives
zod (catalog:forms) Form schemas

External: lucide-react catalog:ui, react-hook-form catalog:forms, tslib catalog:build. React 18 peer.


Preserved public API surface

// Client
StoreClient, StoreApiError, formatMoney
Address, Cart, CartItem, OrderConfirmation, ProductDetail,
ProductListParams, ProductSummary, ProductVariant, StoreClientConfig

// Context
StorefrontProvider, useStore, useProducts

// Components
CartDrawer, CartItem (view), CartSummary
AddressForm, CheckoutForm, OrderConfirmationView
OrderHistory
ProductCard, ProductDetail (view), ProductListing
ReviewCard, ReviewForm, ReviewSection, StarRating
WishlistButton, WishlistPage

// i18n
storeTranslationsEn, StoreTranslationKeys

New additions for genesis

  1. Storybook for every component — default, loading-state, error-state, playground.
  2. Playwright E2E — browse products → add to cart → checkout → order confirmation flow.
  3. StoreApiError extending SuaveplanError — codes: STORE_FETCH_FAILED, STORE_CART_ERROR, STORE_CHECKOUT_FAILED.
  4. OTel instrumentation — store.add_to_cart, store.checkout spans.

File layout

react/ui/react-store/
  package.json
  tsconfig.json
  vitest.config.ts
  src/
    index.ts
    client/ (store.client.ts + types + md + test + index)
    context/ (store.context.tsx + md + test + index)
    components/
      cart/ product/ checkout/ orders/ review/ wishlist/
    locales/
      en.ts
  e2e/
    store-flow.spec.ts