Shop¶
The shop app is the general-purpose e-commerce layer: items, add-ons, a
cart, checkout, and QR-code-based fulfillment. It is separate from the
register merchandise system (which is tied to registration tiers), though both
use Stripe.
What it does¶
Items & add-ons —
ShopItem(with an optional JSONformschema authored through the form builder) and quantity-limited add-ons.Cart & checkout —
ShopCart→ShopOrderwith order snapshots so a historical order reflects what was purchased at the time, not current prices.Stripe payments — checkout via Stripe; confirmation through webhooks.
QR-based fulfillment —
ShopFulfillmentand fulfillment terminals (QR-scan → validate → fulfill). A pending → validated → fulfilled → cancelled status machine.Validation terminals — endpoints for self-service / tether-mode fulfillment.
Status workflow¶
pending → validated → fulfilled → cancelled
Key models¶
Event
└─ ShopItem (form: JSON schema) → ShopCart → ShopOrder (snapshot)
└─ ShopFulfillment
Where to look¶
Models:
shop/models.pyViews:
shop/views.pyURLs (under
/app/shop/):shop/urls.pyFrontend:
ui/src/app/apps/shop/Form registry:
ui/src/app/apps/shop/shop-form-components/shop-components.ts