2026-03-23
Summary
Major Guild engineering session — built the core membership and loyalty backend end-to-end. Also paid nonprofit lawyer retainer.
Guild — What Got Built
Single session, ~4 hours. The full loyalty lifecycle is now functional:
- Square webhook registered (sandbox) —
payment.updated→ purchase log → loyalty points → Square custom attributes sync - Stripe webhook — subscription lifecycle (create/update/cancel/payment failure) → tier + status updates → Square sync
- Stripe products/prices created — Bronze 25, Gold 100 (monthly recurring)
- Point redemption API — staff-authenticated endpoint, supports store credit + experience + merch + digital perks
- Check-in API — NFC card UID or phone number lookup, 4-hour dedup, returns member info for kiosk display
- Square customer sync — custom attributes (
guild_tier,guild_points,guild_status,guild_member_id) visible in Customer Directory - Biome replaced ESLint + Prettier for linting/formatting with pre-commit hooks
- 28 unit tests covering loyalty engine and check-in logic
- E2E tested full lifecycle: subscribe → upgrade → downgrade → cancel → re-subscribe, all syncing across Stripe → Payload → Square
Key Design Decisions Made
- Points as universal currency — not auto-converted to store credit. Redeemable across multiple paths (store credit, experiences, merch, Discord roles). Tax implications only at redemption for monetary value.
- Square custom attributes over notes — namespaced to the app, safe for shops that use notes for other things. Important for product portability.
- Self-serve check-in — NFC card tap (primary) + phone number keypad (fallback) on a Raspberry Pi kiosk at the door. Wizard animation on check-in.
Ideas Captured
- Guild Seasons — monthly team competition, Harry Potter houses style. Random team assignment, collective point earning, winning team gets prizes/badges. See
plans/guild-seasons.md. - Achievement system — Dungeon Crawler Carl-inspired. Members earn achievements for milestones (purchases, check-ins, events, tier upgrades). Loot drops, equippable titles, Discord integration. Could be huge for the museum location ARG. See
plans/guild-achievements.md. - Guild kiosk — Raspberry Pi + touchscreen + NFC reader at the door. Wizard animation, welcome screen, points display. See
plans/guild-kiosk.md. - dungeon.club — domain for the member portal.
Manapool — First MTG Card Sale
- Shipped first MTG card sale via Manapool
- Supplies needed: #6 envelopes, magic tape, toploaders
- USPS doesn’t sell sheets of non-machineable stamps — need to buy separately
- Want to set up a proper system for selling MTG cards going forward
Nonprofit
- Paid Andrea Kantor (nonprofit lawyer) $3,000 retainer for incorporating Dungeon Arts Inc. as a 501(c)(3).
What’s Next
- Guild kiosk frontend (React on Pi, needs hardware)
- Member portal at dungeon.club (Next.js frontend)
- Hi.Events webhook for event attendance
- Achievement system design
- Stripe Checkout for member signup flow
Vault Updates
plans/roadmap.md— Guild added as active projectplans/membership-platform.md— synced with points currency + Square custom attributes decisionsplans/guild-seasons.md— new, team competition conceptplans/guild-achievements.md— new, achievement/gamification conceptplans/guild-kiosk.md— new, kiosk UX specreferences/square-integration.md— Guild section addedindex.md— Guild project linked