ProjectR Docs

Glossary

Terms used across the platform.

TermMeaning
30-day claimclaimRecentOrdersForUser stamps a buyer's paid, unrewarded orders from the last 30 days, matched by the email and phone that buyer has verified, when their profile is created or gains an email, phone or Shopify customer id
Campaign nodeThe single Shopify discount node backing a voucher template; all of the template's voucher codes attach to it
Claim codeA printed QR code (Duit Raya/seasonal) that issues a voucher when scanned
CycleOne complete stamp card; completedCycles is a lifetime counter, redemptions consume redeemedCycles
Duit RayaThe seasonal QR claim-code campaign module (also the generic pool storage layer)
Field firewalltoMobileFormat() — mobile only sees fields explicitly mapped
FingerprintEAS runtime-version policy hashing native deps (+ mobile package.json scripts); mismatched fingerprints break OTA
The publicationThe projectR Shopify publication — the sole source of truth for what the app sells
Shake-to-winInstant rewards drawn from probability tiers when a special stamp position is crossed
Sharded counterConvex component counter (e.g. activeVouchers:<userId>) that must be kept in lockstep with table state
Silent corruptionThe failure mode of forgetting an aggregate update — stats drift with no error
Stamp outcomeorders.stampOutcome, the recorded reason an order did or did not earn stamps (awarded, below_min_spend, no_active_campaign, not_awarded, no_app_user, awaiting_payment, needs_review)
Subtotal ruleevaluateStampEligibility tests a campaign's minimum spend against the order subtotal after discounts, before shipping and tax. The workflow arg that carries it is misleadingly named orderTotal
Account stageMobile auth state from deriveAccountStage: guest, loading, unknown, closed, needs-details or ready
Sign-in sheetThe auth route group, opened as a modal over the screen that asked for sign-in