feat: Volunteer Camp Registration & QR Attendance Verification Flow
Description
Currently, when a volunteer registers for an account, they bypass any sort of active camp sign-up process and immediately gain access to operational dashboard tools (e.g., Recording Vitals, Patient Registration, Queue Management). This creates a critical operational gap where volunteers might register online but not physically show up, yet the system treats them as active components of the camp.
We need to implement a formal "Join Medical Camp" process that links a volunteer to a specific camp date and provides them with a verifiable QR Code. This QR code must be scanned by an admin or coordinator on-site before the volunteer is granted access to their operational tools on the dashboard.
Requirements / Acceptance Criteria
-
Camp Signup Page: Create a new page ( /join-volunteer) where volunteers can view camp details, their expected roles, and formally click a "Join Medical Camp" button to enroll in the active camp session. -
QR Code Generation: Once successfully registered for the camp, the volunteer's dashboard should generate and display a personal QR code containing their User UUID. -
Dashboard Access Control: The volunteer dashboard should lock all operational tools behind a "Welcome" or "QR Verification" screen until the API confirms their attendance has been physically verified. -
Admin Scanning Tools: Implement a QR Code scanner ( QRScanner.tsx) within the Admin'sStaffAttendancePage.tsx. Admins should be able to scan the generated QR codes (or manually input UUIDs) to mark volunteers as "present". -
Standardized New User Flow: Remove any automated camp signups during the initial account creation process to ensure both brand new and returning volunteers go through the exact same flow (Welcome Screen -> Join Camp Page -> QR Verification).
Technical Considerations
- Will likely need the
qrcodelibrary installed on the frontend to handle rendering. - Ensure the state transitions on the dashboard ([VolunteerCampFlow.tsx] handle all 3 API states gracefully:
-
signup: false(Show Welcome Screen) -
signup: true, attendance: false(Show QR Code) -
signup: true, attendance: true(Show Full Dashboard)
-
- Handle backend errors properly (e.g. if the user tries to click the join button but the backend says "Already Signed Up", the frontend should gracefully recover and show the QR code anyway).
Edited by Praneeth Ashish