Event Feedback
Event Feedback System
The event feedback system replaces external Google Forms with built-in attendee and partner forms that live inside the BizTech app.
Why This Exists
- Feedback stays in one place with event metadata, analytics, and exports
- Admins can build forms per event without code changes
- Attendees and partners submit feedback without signing in
- Responses are queryable through our API and stored in DynamoDB
- Five question types: SHORT_TEXT, LONG_TEXT, MULTIPLE_CHOICE, CHECKBOXES, LINEAR_SCALE
End-to-End Flow
- An admin opens
/admin/event/{id}/{year}→ Feedback tab (FeedbackTab.tsx) - They enable attendee and/or partner feedback and customize questions using
FeedbackQuestionsBuilder.tsx - The app saves form config to the event record via
PATCH /events/{id}/{year} - Backend validates questions through
normalizeFeedbackQuestions()infeedbackHelpers.js— checks types, labels, choices, scale bounds, assigns UUIDs ensureDefaultOverallRatingQuestion()prepends the locked overall-rating question- Admins share the public links or generated QR codes for each form
- Users submit answers at
/event/{id}/{year}/feedback/{formType}— rendered byEventFeedbackForm.tsx - Backend validates each response via
validateFeedbackPayload()— per-type rules (text length, choice validity, scale bounds) - Submissions are stored in
biztechEventFeedbacktable - Admins review responses, search, sort, and export JSON in the Feedback tab
Key Routes
| Route | Access | Purpose |
|---|---|---|
/admin/event/{id}/{year} | Admin | Event dashboard with Feedback tab |
/event/{id}/{year}/feedback | Public | Hub page — attendee vs partner selection |
/event/{id}/{year}/feedback/attendee | Public | Attendee feedback form |
/event/{id}/{year}/feedback/partner | Public | Partner feedback form |
Default question
Both forms always include the locked default question: "How would you rate this event overall?" (overall-rating) as a required 1–10 linear scale. This is injected by ensureDefaultOverallRatingQuestion() and cannot be removed by admins.
Key Files
| File | Purpose |
|---|---|
bt-web-v2/src/components/EventsDashboard/FeedbackTab.tsx | Admin builder + responses UI + QR generation |
bt-web-v2/src/components/Events/FeedbackQuestionsBuilder.tsx | Question editor for all 5 question types |
bt-web-v2/src/pages/event/[eventId]/[year]/feedback/index.tsx | Public feedback hub |
bt-web-v2/src/pages/event/[eventId]/[year]/feedback/[formType].tsx | Public form page — loads config and renders form |
bt-web-v2/src/components/Events/EventFeedbackForm.tsx | Renders questions, handles validation, submits |
serverless-biztechapp-1/services/events/handler.js | getFeedbackForm, submitFeedback, getFeedbackSubmissions handlers |
serverless-biztechapp-1/services/events/feedbackHelpers.js | Question normalization + response validation (~350 lines) |
serverless-biztechapp-1/services/events/serverless.yml | HTTP routes + biztechEventFeedback table definition |
In This Section
Admin Form Builder
How admins configure forms, question types, QR links, and review responses.
Public Forms
Attendee-facing form: question rendering, validation, and submission states.
Backend API
Endpoints, feedbackHelpers.js pipeline, payloads, auth, and DynamoDB schema.