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
Jersey City Partner Quests
The local business partnership model has a clear geographic target: Jersey City indie businesses — coffee shops, game stores, breweries, other indie retailers. The quest framing is “go on quests to hit businesses” — members earn XP for visiting partner locations as part of a quest chain rather than just passive check-ins.
Quest examples:
- “The Brewer’s Route” — check in at 3 local breweries in one week
- “Scholar’s Circuit” — visit the library, a partner café, and Dungeon Books in one day
- “The Merchant’s Road” — check in at 5 Jersey City small businesses this month
The shop becomes the quest hub and home base; the surrounding neighborhood is the dungeon. Partners don’t need to understand the game — they just need an NFC reader. Their benefit is foot traffic; the guild handles the narrative.
This is also the Pokémon Go sponsored-location model, but inverted: instead of Niantic selling locations to enterprise partners, we’re building a small-business-native version where indie shops can participate without enterprise contracts or sponsorship fees.
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
- fictional-guild-references — Goblin Slayer quest board, DanMachi guild network