This guide walks through the entire parent-to-admin flow as if you are a parent applying for a chess demo and the admin approving it with automated Zoom meeting integration.
- Application is running on
http://localhost:5173 - DEV_MODE is enabled (no Firebase credentials needed)
- Web3Forms API is configured for email sending
- Email:
parent@example.com - Role: Parent/Customer
- Email:
indianchessacademy@chess.com - Role: Admin
- Email:
coach@coach.com - Role: Coach
- Go to home page
- Click on "Book a Demo" or navigate to
/demo-booking - Verify the form has these fields:
- Parent Name
- Parent Email
- Parent Phone
- Student Name
- Student Age
- Chess Experience Level
- Preferred Date & Time
- Message (optional)
- Parent Name: John Doe
- Parent Email: parent@example.com
- Parent Phone: +91-9876543210
- Student Name: Arjun Doe
- Student Age: 10
- Chess Experience: Beginner
- Preferred Date & Time: Select any future date and time
- Message: "Interested in learning chess for my son"
- Click "Submit" or "Request Demo"
- ✅ Should see confirmation message
- ✅ Should be redirected to
/demo-confirmation - ✅ Demo record created in Firestore
demoscollection with:- Status:
PENDING - parentEmail:
parent@example.com - studentName:
Arjun Doe - createdAt: current timestamp
- Status:
- Click "Logout" (if still logged in as parent)
- Navigate to
/loginor/admin - Use DEV_MODE quick access button for admin:
- Email:
indianchessacademy@chess.com - ✅ Should automatically login as admin
- ✅ Should redirect to
/admindashboard
- Email:
- In Admin dashboard, click "Demos" in sidebar
- Navigate to
/admin/demos - ✅ Should see the demo you created with:
- Student Name: Arjun Doe
- Parent: John Doe (parent@example.com)
- Status: PENDING
- Preferred DateTime: [Your selected date/time]
- Click on the demo record for Arjun Doe
- Click "Assign Coach" button
- ✅ Modal opens showing:
- Student: Arjun Doe
- Parent: John Doe (parent@example.com)
- Preferred Time: [Your selected date/time]
- Select a coach from the list (AI-recommended or manual select)
- IMPORTANT: Provide a Zoom meeting link:
- Example:
https://zoom.us/j/1234567890 - Or any valid Zoom/Google Meet URL
- Example:
- Set scheduled date/time (should match preferred time)
- Click "Assign Coach"
✅ Should see:
- Demo status changed to
SCHEDULED - meetingLink stored in Firestore
- Confirmation email sent to parent (check email logs)
- Click on the scheduled demo again
- Click "Record Outcome" or similar button
- ✅ Modal opens with form for:
- Demo Outcome (radio buttons: Attended, No Show, Interested)
- Recommended Level (Beginner, Intermediate, Advanced)
- Recommended Student Type (Group Classes, 1-on-1)
- Parent Interest Level (Interested, Follow-up, Not Interested)
- Admin Notes (optional)
- Select Demo Outcome: "Highly Interested"
- Select Recommended Level: "Beginner"
- Select Recommended Student Type: "Group Classes"
- Select Parent Interest Level: "Interested - Send Payment Link"
- Add optional notes
- Click "Submit Outcome"
✅ Should see:
- Success message / Confetti animation
- Demo status changed to
INTERESTED - Email sent to parent@example.com with:
- Subject: "🎓 VJ AI Chess Academy - Complete Arjun's Enrollment"
- Body includes:
- Congratulations message
- 📅 Demo Class Link: [Your Zoom URL]
- Payment link to complete enrollment
- Open browser DevTools (F12)
- Go to Console tab
- ✅ Should see:
"✅ Payment link email sent successfully"
The email should contain:
Dear John Doe,
Thank you for your interest in VJ AI Chess Academy!
We are excited that Arjun showed great potential during the demo session.
📅 **Your Demo Class Link:**
https://zoom.us/j/1234567890
You can join the class using the link above at the scheduled time.
To complete the enrollment and start the chess journey, please click the link below to select a plan and make the payment:
👉 [Payment Link URL]
If you have any questions, feel free to reply to this email or contact our support team.
Best regards,
VJ AI Chess Academy Team
- Click on the interested demo again
- Click "Convert to Student" button
- ✅ Modal opens with student enrollment form
- Fill in student details (should be pre-populated)
- Select subscription plan
- Click "Convert"
✅ Should see:
- Demo status changed to
CONVERTED - Student record created in
studentscollection - Subscription created in
subscriptionscollection - Welcome email sent to parent@example.com
- Phase 1: Parent demo request created with PENDING status
- Phase 2: Admin can view pending demos
- Phase 3: Admin assigns coach and sets Zoom meeting link
- Demo status changes to SCHEDULED
- meetingLink stored in Firestore
- Phase 4: Admin marks outcome as INTERESTED
- Demo status changes to INTERESTED
- Email triggered automatically
- Phase 5: Email received with Zoom link included
- Subject line is correct
- Zoom meeting link is visible
- Payment link is included
- Phase 6 (Optional): Convert to student and verify welcome email
- Check Web3Forms API key in
.env - Check browser console for error messages
- Verify email service is called with all parameters
- Verify
meetingLinkwas saved in Firestore when assigning coach - Check that meetingLink is being passed to
sendPaymentLinkEmail() - Check browser console logs
- Verify you're logged in as admin (indianchessacademy@chess.com)
- Check Firestore console to see if demo was created
- Refresh the page
- DEV_MODE should bypass all role checks
- Admin role is auto-detected from email domain (ends with @chess.com)
- Parent role is default for other emails
- All timestamps use server time
- Meeting links must be valid URLs (they won't be validated at this stage)
- Emails are sent via Web3Forms API (may have rate limits on free tier)
- This is a complete test cycle from application to conversion