feat: add QR code event check-in system
Backend: - Add event_checkin_tokens table with unique tokens per event - Implement GET /api/events/:slug/details endpoint (on-demand token generation) - Implement POST /api/events/checkin/:token endpoint (date validation only in production) - Implement DELETE /api/events/:slug/leave endpoint - Add comprehensive test suite for check-in endpoints Frontend: - Add EventDetailsPage with QR code display, participant list, and stats - Add EventCheckinPage with success/error screens - Add "Leave Event" button with confirmation modal to EventChatPage - Install qrcode.react library for QR code generation - Update routing and API client with new endpoints Features: - QR codes valid from (startDate-1d) to (endDate+1d) - Development mode bypasses date validation for testing - Automatic participant count tracking - Duplicate check-in prevention - Token reuse for same event (generated once, cached)
This commit is contained in:
@@ -199,6 +199,25 @@ export const eventsAPI = {
|
||||
const data = await fetchAPI(`/events/${slug}/messages?${params}`);
|
||||
return data;
|
||||
},
|
||||
|
||||
async getDetails(slug) {
|
||||
const data = await fetchAPI(`/events/${slug}/details`);
|
||||
return data;
|
||||
},
|
||||
|
||||
async checkin(token) {
|
||||
const data = await fetchAPI(`/events/checkin/${token}`, {
|
||||
method: 'POST',
|
||||
});
|
||||
return data;
|
||||
},
|
||||
|
||||
async leave(slug) {
|
||||
const data = await fetchAPI(`/events/${slug}/leave`, {
|
||||
method: 'DELETE',
|
||||
});
|
||||
return data;
|
||||
},
|
||||
};
|
||||
|
||||
export { ApiError };
|
||||
|
||||
Reference in New Issue
Block a user