- Copy rules from
firestore-photobooth-rules.txtto Firebase Console → Firestore Rules - Copy rules from
storage-photobooth-rules.txtto Firebase Console → Storage Rules - Click Publish on both rule sets
- Verify rules are live (check Firebase Console timestamp)
- Run
npm run buildto build production bundle - Run
npm run devor deploy to hosting (Vercel/Firebase Hosting) - Verify all routes accessible:
/staff/scanner✓/photobooth/capture✓/photobooth/select✓/printer/client✓/photobooth/gallery✓
- Computer connected to WiFi (same network as printer)
- WiFi printer powered on and connected
- Test print from computer (verify printer works)
- Open browser (Chrome or Edge recommended)
- Navigate to:
https://your-app-url/printer/client - Allow Wake Lock permission when prompted
- Verify green "Connected" indicator appears
- Do not close this tab or browser
- Position computer near printer for monitoring
- Fully charged (or connected to power)
- WiFi connected
- Camera tested (open default camera app)
- Browser: Navigate to
/staff/scanner - Test QR scanner works (scan any test QR)
- Grant camera permission for photobooth
- Add test user to Firestore
registrations:{ uid: "test123", firstName: "Test", lastName: "User", teamCode: "TEAM01", payment_status: "captured", role: "participant" } - Add test team to Firestore
teams:{ teamCode: "TEAM01", teamName: "Test Team", allottedClassroom: "Room 101" } - Generate QR code for test user (or use UID directly)
- Check-in: Add check-in record to
checkinsfor test user - Scan: At
/staff/scanner, select "Photobooth", scan test QR - Capture: Take 3-5 photos, click "Continue"
- Select: Choose favorite photo, click "Print"
- Print: Monitor printer client - should auto-print
- Collect: Pick up physical print from printer
- Gallery: Check
/photobooth/gallery- photo should appear
- Scanner validates: check-in ✓, payment ✓, no duplicates ✓
- Camera uses back camera (not selfie) ✓
- Photos upload to Firebase Storage
photobooth/test123/✓ - Selection shows all uploaded photos ✓
- Print queue document created in Firestore ✓
- Printer client shows "Currently Printing..." ✓
- Physical print outputs (full-page, high quality) ✓
- Print queue status updates: pending → printing → completed ✓
- Gallery displays completed print ✓
- Stats on printer client increment ✓
- Scan same test user again
- Should show: "
⚠️ DUPLICATE BLOCKED! Already printed!" - Alert should show timestamp of previous print
- Verify no second print queue entry created
- Delete test documents from
printQueuecollection - Delete test photos from Storage
photobooth/test123/ - Delete test check-in from
checkinscollection - Refresh printer client page (clears recent prints display)
- Leave test user/team in place (or delete if not needed)
- Show full workflow on test user
- Explain each screen transition
- Demonstrate duplicate blocking
- Show "Back to Scanner" button importance
- Explain 2-3 minute expected time per participant
- Print copies of
STAFF-PHOTOBOOTH-QUICKREF.md - Show where to find help (tech support location)
- Explain what to do if printer fails
- "What if they already printed?" → Blocked automatically, one per person
- "Can they print multiple photos?" → No, one photo per person
- "What if photo doesn't print?" → Printer retries 3 times, then check printer
- "How do they get digital copy?" → Gallery page (public)
- "What if camera doesn't work?" → Check permissions, restart browser
- Power on printer computer
- Open printer client (verify green connection)
- Test printer (print test page)
- Charge Pixel device to 100%
- Staff devices logged in to admin/staff accounts
- Quick staff refresher on workflow
- Printer client still connected (green indicator)
- Printer has paper
- Printer has ink/toner
- Stats look normal (failures < 5%)
- Recent prints list updating
- Gallery showing latest photos
- No long queue at printer station
- Tech support location: ________________
- Admin Firebase access: ________________
- Printer vendor support: ________________
- Backup device location: ________________
- Check green indicator → red = disconnected
- Refresh browser page
- Wait 5 seconds for reconnection
- Verify green indicator returns
- If still red: Check WiFi, restart browser
- Check browser permissions (Settings → Camera)
- Test with default camera app (verify hardware)
- Clear browser cache
- Restart browser
- If still failing: Use backup device
- Printer client will retry 3 times
- Check printer display for jam error
- Clear jam per printer manual
- Print queue will auto-retry
- If multiple failures: Note user details, print later
- User claims never printed before
- Check Firestore
printQueuecollection - Search for userId
- If genuinely false: Admin delete record
- User can retry immediately
- Check Pixel WiFi connection
- Check Firebase Storage console
- Verify
photobooth/{userId}/folder exists - Check browser console for errors (F12)
- Try recapture if persistent
Track throughout event:
- Total participants: _____ (from check-in)
- Total photos printed: _____ (printer client stats)
- Success rate: _____ % (successful / total)
- Average time per person: _____ minutes
- Failed prints: _____ (should be < 5)
- Duplicate blocks: _____ (system working correctly)
- Gallery views: _____ (if analytics enabled)
- Keep printer client open for 30 min (catch late submissions)
- Verify all pending prints completed
- Check Firestore for any "printing" status (stuck jobs)
- Update any stuck jobs to "failed" manually
- Export
printQueuecollection (backup) - Download all photos from Storage
photobooth/(backup) - Screenshot printer client stats
- Note any recurring issues
- Keep photos for X days (announce to participants)
- After retention period: Delete Storage
photobooth/folder - Archive
printQueuecollection (don't delete immediately) - Clear browser cache on printer computer
- What worked well?
- What issues occurred?
- How many people used photobooth?
- Any feature requests?
- Would we use this system again?
5 Minutes Before Opening Doors:
- Printer on ✓
- Printer client connected (green) ✓
- Pixel device charged ✓
- Scanner page loaded ✓
- Staff briefed ✓
- Test user deleted ✓
- Firebase rules live ✓
- Tech support ready ✓
GO LIVE! 🚀
Tech Support: ___________________________ Firebase Admin: ___________________________ Staff Lead: ___________________________ Printer Vendor: ___________________________
If system fails completely:
- Announce photobooth temporarily unavailable
- Collect participant emails/QR codes
- Take photos with separate camera
- Email digital copies post-event
- Apologize with swag/discount code
Deployment Date: _______________ Event Date: _______________ Deployed By: _______________ Status: ☐ Ready ☐ Testing ☐ Live ☐ Complete
Good luck! You've got this! 🚀📸