Guild Quest Hub — Partner Network
Dungeon Books as the central “quest hub” in a network of local partner businesses. Members carry one guild card, tap it at any partner shop, and earn XP everywhere.
Current State
The kiosk architecture already supports multi-shop check-ins:
- Each partner shop gets its own record under the same Organization in Payload
- Each shop gets its own
kioskApiKey - Each shop gets its own Pi (or device) with
KIOSK_SHOP_ID+KIOSK_API_KEYenv vars - Check-ins are scoped to the correct shop
- XP and points accumulate across all locations (same member, same org)
No code changes are needed for the basic model.
Phone-as-Reader (Scalable Alternative to Pi + WalletMate)
Instead of giving every partner a Raspberry Pi + NFC reader, partners could use a phone:
Android (Web NFC API)
- Works in Chrome — staff opens
/kioskon their phone - Member taps their NTAG215 card on the back of the phone
- Web NFC reads the UID, same pipeline as the HID reader
- No app install needed — just a URL
- Requires HTTPS (Tailscale funnel or public deploy)
iOS (Limited)
- Safari does not support Web NFC
- Would need a native app or iOS Shortcut via Core NFC
- Apple doesn’t expose raw tag UIDs to the web
- Not a viable web-only path for iOS
Phone-to-Phone (Host Card Emulation)
- Member’s phone emulates an NFC tag, reader phone picks it up
- Android supports HCE natively
- iOS: recently opened but very limited
- Requires a companion app on the member’s phone — higher friction
- Not recommended for v1
Recommendation
Phone-as-reader with Web NFC on Android is the lowest-friction option for partner shops. The kiosk client component would need a second input mode — alongside HID keyboard capture, call navigator.nfc.read() when available. The card UID comes back the same way, so the server action and loyalty pipeline are identical.
Implementation for Partner Check-ins
What works today (no changes needed)
- Create partner shop in Payload admin under the same Organization
- Generate a
kioskApiKeyfor the partner shop - Give partner a Pi with the guild app, or an Android phone pointed at
/kiosk - Member taps their guild card → check-in logged to partner shop → XP awarded
Future enhancements
- Quest system — “Check in at 5 partner shops this month for bonus XP”
- Partner onboarding flow — self-serve setup instead of manual Payload admin
- Multi-shop kiosk selector — one device, multiple shops (URL param or shop picker)
- Partner dashboard — foot traffic analytics, how many guild members visited
- Web NFC input mode — for phone-as-reader at partner locations
Related
- guild-kiosk-build — kiosk implementation plan
- guild-kiosk — original kiosk concept and UX spec
- membership-platform — full system architecture
- nfc-hardware-research — WalletMate II and card decisions