Sell-by-Weight Engine
Per-product pricing per kilogram. A live slider — 0.5 to 10 kg in ½-kg steps — recalculates in real time and flows cleanly through cart, checkout and order records.
A neighborhood supermarket, re-engineered from a blank stylesheet.
A fully custom WordPress + WooCommerce platform — hundreds of live products across 80+ departments, a sell-by-weight engine, curated smart baskets, a uniform product spec system, Hebrew cart-recovery emails, and shop-floor barcode tooling. Native right-to-left, because Hebrew is a first-class citizen here סופר זול אסולין · טרי · עד הבית
The goal wasn't a re-skin — it was a system. Every feature ships as an isolated, toggleable module with graceful fallbacks and no dependency on paid plugins. Disable any module tomorrow; the store keeps selling.
Per-product pricing per kilogram. A live slider — 0.5 to 10 kg in ½-kg steps — recalculates in real time and flows cleanly through cart, checkout and order records.
Eight curated bundles — Shabbat, BBQ, Breakfast, Monthly Staples and more. Per-item steppers, one-tap “add everything”, and stock-aware graceful skipping.
One template for every product — kosher & dietary badges, full nutrition table, ingredients & allergens, provenance and packaging. Identical layout with or without data.
Forest-green & honey palette with orange reserved strictly for CTAs. Sticky glass header, live mega-menu, backdrop blur, and uniform product cards.
Category · price · stock · promotions — server-rendered, RTL-aware, cache-friendly. Replaced a heavyweight third-party plugin outright.
Abandoned-cart email sequences fully localized — live cart contents with product images, tuned timing, and tracked recovery performance.
GroceryStore LocalBusiness schema, rich product JSON-LD, automated meta & focus keyphrases for every product — including ones that don’t exist yet. GA4 + Search Console wired.
Self-hosted newsletter with admin dashboard & CSV export, plus a true exit-intent popup — once per session, only on real exit. WhatsApp click-to-chat & floating cart.
Removed 575 duplicate products from a bad import with zero downtime, cross-referenced a 7,334-row product dataset, and shipped a phone-camera barcode scanner for shop-floor enrichment.
Faithful recreations of the production widgets — same logic, same RTL behavior, demo data only. Drag the slider. Tap the steppers.
Each capability lives in its own isolated unit — loaded independently, safe to disable, shipping its own assets.
// module-per-concern · load independently · disable safely theme/ ├── Core design system · assets · Woo wiring ├── Homepage composable, data-driven sections ├── Weight Pricing sell-by-weight engine (opt-in) ├── Ready Baskets curated bundles + bulk cart ├── Product Spec uniform spec-sheet template ├── Product Filter faceted server-side filtering ├── Newsletter capture · export · exit-intent └── SEO / GEO structured data + meta
@supports safety nets for older browsers.Prices are defined per kg, but all internal math runs in integer grams — eliminating floating-point drift in cart totals. Different weights of one product become separate cart lines via unique keys, and the per-kg price is snapshotted at add-to-cart time so later edits never corrupt an open cart.
Product cards are anchors wrapping images — native drag ghosting and navigation fight pointer capture. The fix: document-level mouse events with preventDefault, draggable=false, click suppression after drag, and snap disabled mid-drag. Buttery in RTL, on every browser tested.
The production host minifies and re-serves every asset under content-hash URLs. The theme leans into it: new files earn new hashes automatically, critical overrides ship in dedicated late-loading files, and @supports fallbacks keep old browsers from ever seeing broken glass.
Descriptions and focus keyphrases generate at render time via filter hooks — not stored per product. Every future product inherits rich, localized meta the moment it’s published.
A bad CSV import spawned 575 duplicates overnight. Recovery ran date-scoped batch operations against the live store — trashing only the duplicates, verifying originals kept their images and categories, and cross-checking final counts. No downtime, no lost products.
Enrichment needed barcodes as a join key against a 7,334-row product dataset. Instead of hardware, the project shipped a self-contained HTML5 scanner — phone camera, live decode, local storage, CSV export — served over HTTPS so it works anywhere in the store. A later cloud-synced version is open source.
Forest green and honey over warm paper — with orange spent on exactly one job: the call to action.
Layered blur, hairline borders and light sheen across cards, header and overlays.
Product cards keep identical height, image framing and rhythm — whatever the content.
Aurora gradients, Ken-Burns hero, reveal-on-scroll — all behind prefers-reduced-motion.
Not mockups — actual captures from production. Fresh produce sold by the kilo, curated baskets, uniform spec sheets, and RTL faceted filtering.





Hundreds of customers shop from a phone — so the phone came first. Hamburger nav, a full-bleed hero, a two-up trust bar, and touch-friendly carousels.
