Phase 3 of the NIX Loyalty Platform: the customer-facing mobile app that members download after a cashier prompts them at the counter. Built with Expo SDK 57 (React Native) — one codebase, per-tenant white-label builds. This is the loyalty/spin app (no in-app ordering or payment in v1): phone + OTP onboarding, a points wallet, the gamified Spin, a browse-only menu, a rewards wallet, and a member QR shown at the till to earn & redeem.
demo tenant (spin-enabled + Get Coffee maroon theme, so testing stays
off the live get-coffee tenant). Repo nix-loyalty-app (e8e5d30)./me/home for a single-payload home (points, spin badge, promo & seasonal banners,
popular menu, nearby stores, recent activity), /menu for the browse catalog, /me/spin-chances
+ POST /spin/spin for the never-zero draw, the Reward Shop (/shop +
/shop/redeem — spend points for a coupon), /me/coupons for the wallet, and a
member QR modal for the counter. Per-tenant white-label theme drives the hero color; the
Spin tab auto-hides for tenants where spin is flagged off. v1 scope kept — tiers / ordering /
payment / referral appear as visual placeholders only.
End-to-end evidence (expo-web, real UI, local backend + demo tenant):
/pos/earn granted 3 spin chancesdemo
tenant; no store/EAS build cut yet. OTP uses the backend’s dev-log fallback locally. Seed content uses
placeholder stock photos. Next: physical-device test via Expo Go / EAS + deploy the P3/P4 backend to Fly.






