Skip to content

feat: batch RSVP wizard + Luma form scanner (sausage-24472)#153

Draft
snackman wants to merge 4 commits into
masterfrom
worktree-agent-ab5b0762
Draft

feat: batch RSVP wizard + Luma form scanner (sausage-24472)#153
snackman wants to merge 4 commits into
masterfrom
worktree-agent-ab5b0762

Conversation

@snackman

@snackman snackman commented May 4, 2026

Copy link
Copy Markdown
Owner

Summary

  • Batch RSVP wizard modal: 4-step flow (select events -> profile info -> custom fields -> review and submit) that lets users RSVP to multiple Luma events in their itinerary at once
  • Luma form scanner: API route and CLI script that scans Luma event registration forms to detect custom fields (company, dropdown, terms, etc.)
  • Batch job system: API routes for creating and polling RSVP jobs, with Supabase tables for form field cache, custom answer cache, and job tracking
  • Extended profile fields: phone, website, first_name, last_name added to profiles table and useProfile hook
  • RsvpButton states: Now supports pending, submitting, and failed states with appropriate icons
  • CLI scripts: scan-luma-forms.ts for bulk form scanning, process-batch-rsvp.ts for Playwright-based Turnstile token extraction and registration submission

Test plan

  • Verify the orange Batch RSVP FAB appears when logged in with Luma events in itinerary
  • Open wizard, verify events can be selected/deselected
  • Fill profile info and verify auto-save on blur
  • Verify custom fields step is skipped when no custom questions
  • Verify review step shows selected events and profile summary
  • Test submit flow and job status polling
  • Verify RsvpButton renders correctly for all 5 status states
  • Run npx tsx scripts/scan-luma-forms.ts --dry-run to verify form scanning

Generated with Claude Code

Add a multi-step batch RSVP wizard that lets users RSVP to multiple
Luma events in their itinerary at once. Includes:

- Luma form field scanner (API + CLI script)
- 4-step wizard modal: select events, profile info, custom fields, review
- Batch job API with status polling
- Supabase migrations for form cache, custom answers, and job tracking
- Extended profile with phone, website, first_name, last_name fields
- RsvpButton now supports pending/submitting/failed states
- Playwright-based batch processor script for Turnstile token extraction

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@vercel

vercel Bot commented May 4, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
sheeets Ready Ready Preview, Comment May 6, 2026 7:03pm

Request Review

- Fix RegistrationAnswer type to match Luma API (value/label/question_type)
- Guard against null insertedJobs in batch-rsvp route
- Fix stale handleClose closure in Escape handler (move before useEffect)
- Add polling cleanup on unmount to prevent memory leaks
- Add auth to scan-form route to prevent abuse
- Pass auth token from frontend when scanning forms
- Skip events with failed scans (no eventApiId) instead of silent 400
- Offset batch RSVP FAB when CheckInFAB is visible

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Instead of extracting Turnstile tokens (which Cloudflare blocks),
fill the Luma embed form natively and let Luma's JS handle Turnstile.

Note: Turnstile still detects Playwright-driven Chrome. The processor
script needs a CAPTCHA-solving service or persistent browser session
to work end-to-end. The API layer (job creation, polling) is fully
functional.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant