Shop: Snake Oil, Series 2026
A single-page checkout, written entirely in ClojureScript, with no backend and
no real payment. It renders the catalog, cart, checkout form, and order
confirmation into #shop-root with plain DOM — the wal-sh.projects idiom —
and emits a GA4-shaped funnel (shop_view, add_to_cart, begin_checkout,
purchase) through the site tracker.
What this is
The whole wal.sh adtech layer is a specimen: sinkholed beacons, $0.00
satire pricing, impressions that resolve to nothing. The store is in on it. The
catalog is the "Snake Oil, Series 2026" dry-goods line — medicine-show pitches
made tangible. Nothing ships; no card is captured; place-order returns a
local confirmation and stops there.
The feature flag
Ecommerce is off by default site-wide. The flag resolves in this order (first decisive wins):
| signal | source | example |
|---|---|---|
| URL param | ?shop=on / ?shop=off |
per-visit override; sticks to localStorage |
| localStorage | wal_shop_flag |
per-browser, set by a prior ?shop= or the API |
| env | window.__ADTECH_ENV__.ECOMMERCE_ENABLED |
the build/site default |
| default | — | false (shop closed) |
With the flag off you get a "shop is closed" notice. To try the store, append
?shop=on to the URL. The decision logic is pure
(wal-sh.commerce.checkout.core/ecommerce-enabled?) and unit-tested; the
adapter only sources the signals.
Architecture
Sell-side code lives under its own wal-sh.commerce namespace and depends on
wal-sh.adtech — the way a store depends on its ad stack:
wal-sh.commerce.checkout.core(.cljc) — catalog, cart ops, the price summary (reusingadtech.promo-enginefor subtotal + coupons andadtech.pricing-engine/format-usdfor money), form validation, and the local order. Pure; 49 assertions, cross-host (JVM + browser).wal-sh.commerce.checkout.browser(.cljs) — flag reads, DOM, localStorage cart persistence, and funnel events viawindow.__wal_tracker.
Public API for the console: window.__wal_checkout (.enabled, .cart(),
.summary(), .add(sku), .setQty(sku, n), .setFlag(on?)).