writeonce/docs/examples/ecommerce/apps/storefront/ui/home/home.wo
shoney.arickathil 9279175f26 scaffold sibling crates, multi-app ecommerce, REST + concurrency docs
- scaffold 14 placeholder crates (app, db, engine, gen, http, logic,
  policy, ql, service, sub, txn, ui, value, wal) — empty Cargo.toml +
  src/lib.rs to receive code phase-by-phase from `rt`
- restructure docs/examples/ecommerce into multi-app layout: apps/admin
  and apps/storefront, with shared/ types/logic/components, per-app
  app.wo + wo.toml, and reusable .htmlx components (layout, money,
  order-row)
- add reference/rest/{blog,ecommerce}.rest — VS Code/JetBrains HTTP
  request files driving the running prototype, including 501/404/405
  expectations for stubbed endpoints
- add docs/plan/09-concurrency-scaleout.md and docs/plan/ui/00-overview.md;
  refine docs/plan/assembly/02-writeonce-stance.md
- refresh templates (about, article, header/footer, home, layout, styles)
  and add static favicon/logo
- add infra/sync.sh and tighten .gitignore for reference/ symlinks
2026-05-04 13:39:58 +02:00

31 lines
1 KiB
Text

-- Storefront home — public product list. Live inventory: when a checkout
-- reserves the last unit, the "In stock" badge flips to "Out of stock" on
-- every open browser without refresh.
--
-- Angular-component-style layout: home/{home.wo, home.htmlx, home.css}.
-- home.wo is the declarative spec; home.htmlx (when added) lets an author
-- hand-tune the template while the compiler still generates the
-- <wo:live> + wo:bind subscription glue. See
-- [docs/plan/ui/00-overview.md](../../../../../plan/ui/00-overview.md).
##ui
#home
title: "Shop"
source: Product
live: true
columns:
- meta.images[0] label: "" renderer: image
- name
- sku renderer: code
- price renderer: money
- available label: "In stock" renderer: stock-badge -- computed on Product
sort:
default: name asc
actions:
row-click: /product/:sku
add-to-cart: add_to_cart(self, 1) role: Customer | Ops | Admin
pagination: 24