Events

Events System Overview

Events are the central entity in the BizTech platform. Nearly every other system, registrations, payments, check-in, feedback, the companion app, the admin dashboard, and partnerships operates on or connects to an event.


What Is an Event?

An event is a record in the biztechEvents DynamoDB table identified by a composite key: id (string slug like "blueprint") + year (number like 2026). It stores everything needed to run an event: name, dates, capacity, pricing, registration questions, feedback questions, and image URL.

Events are created by admins, registered for by users, and managed through the admin dashboard. The same event record powers the public event listing, the registration form, the check-in scanner, the feedback forms, and the companion app.


Systems That Depend on Events

                              ┌─────────────────┐
                              │   biztechEvents  │
                                 (id + year)
                              └────────┬─────────┘

          ┌────────────────┬───────────┼───────────┬────────────────┐
          │                │           │           │                │
   Registrations      Payments     Feedback    Companion       Admin
   (capacity,         (pricing     (question   (active event   Dashboard
    status,           from event)   config     detection,      (manage
    waitlist)                       on event)   per-event       everything)
                                                config)
SystemHow it uses events
RegistrationsReads capac for waitlist logic, registrationQuestions for forms, eventID;year as sort key
PaymentsReads pricing.members / pricing.nonMembers for Stripe session amounts
FeedbackReads attendeeFeedbackQuestions / partnerFeedbackQuestions arrays and enabled flags
Companion AppUses getActiveEvent to auto-detect current event; per-event config in companion-events.ts
Check-InQR scanner and manual check-in update registration status for a specific event
Admin DashboardEvent CRUD, registration management, analytics, feedback review
Partnerships CRMPartners register for events; partnerRegistrationQuestions define their form

Event Lifecycle at a Glance

  1. Create — Admin fills out the event form (/admin/event/new). Backend writes to biztechEvents.
  2. Configure — Admin uploads a thumbnail image, adds registration questions, configures feedback questions, sets pricing.
  3. Publish — Admin sets isPublished: true. Event appears on the public events page (/events).
  4. Registration — Users register at /event/{id}/{year}/register. Paid events go through Stripe. Capacity enforcement automatically waitlists overflow.
  5. Event DaygetActiveEvent returns the live event. Admins check in attendees via QR scanner. Companion app activates.
  6. Post-Event — Feedback forms go live. Admin reviews submissions. Analytics tab shows breakdowns.

See Event Lifecycle for the detailed stage-by-stage walkthrough.


Event Identification

Every event is uniquely identified by id + year. This two-part key allows the same slug to be reused across years:

idyearResult
blueprint2025Blueprint 2025
blueprint2026Blueprint 2026
kickstart2025Kickstart 2025

This key is used in:

  • URL paths: /event/blueprint/2026/register
  • Registration sort keys: eventID;year = "blueprint;2026" (semicolon-joined)
  • Feedback keys: eventFormKey = "blueprint;2026;attendee"
  • API paths: GET /events/blueprint/2026

Where Event Data Lives

TableKeyWhat it stores
biztechEventsid + yearThe event record itself — name, dates, capacity, pricing, questions, image
biztechRegistrationsid (email) + eventID;yearOne record per user per event — status, responses, points
biztechEventFeedbackid (UUID)Feedback submissions linked to events via eventIDYear and eventFormKey
biztechUsersid (email)User records (joined via registration data for admin dashboard ?users=true)

Key Backend Files

FileWhat it does
services/events/handler.jsAll 10 event endpoint handlers (create, get, getAll, update, del, getActiveEvent, createThumbnailPicUploadUrl, getFeedbackForm, submitFeedback, getFeedbackSubmissions)
services/events/helpers.jsgetEventCounts() (delegates to registration helpers), addIdsToRegistrationQuestions()
services/events/feedbackHelpers.jsFeedback question normalization, validation, default question injection
services/events/serverless.ymlEndpoint routing, IAM permissions, S3 bucket, biztechEventFeedback table definition
services/registrations/handler.jsRegistration handlers that read event data for capacity and pricing
services/payments/handler.jsPayment handlers that read event pricing

Key Frontend Files

FileWhat it does
src/pages/admin/event/new.tsxAdmin event creation page
src/pages/admin/event/[eventId]/[year]/edit.tsxAdmin event edit page
src/pages/admin/event/[eventId]/[year]/index.tsxAdmin event dashboard (Data Table, QR Scanner, Teams, Analytics, Feedback tabs)
src/pages/events.tsxPublic events listing page
src/pages/event/[eventId]/[year]/register/index.tsxAttendee registration page
src/pages/event/[eventId]/[year]/register/partner/index.tsxPartner registration page
src/pages/event/[eventId]/[year]/feedback/index.tsxFeedback hub (attendee/partner selection)
src/pages/event/[eventId]/[year]/feedback/[formType].tsxPublic feedback form
src/components/Events/EventForm.tsxShared event form for create/edit
src/components/Events/EventThumbnailUploader.tsxImage upload with compression
src/components/Events/AttendeeEventRegistrationForm.tsxAttendee registration form
src/components/Events/PartnerEventRegistrationForm.tsxPartner registration form
src/components/Events/EventFeedbackForm.tsxPublic feedback form renderer
src/components/Events/FeedbackQuestionsBuilder.tsxAdmin feedback question editor
src/components/Events/EventFormSchema.tsZod schema for the event form
src/components/EventsDashboard/EventDashboard.tsxAdmin dashboard container
src/components/EventsDashboard/AnalyticsTab.tsxAnalytics visualizations
src/components/EventsDashboard/FeedbackTab.tsxFeedback builder + response viewer
src/components/EventsDashboard/EventCard.tsxEvent card for listing pages
src/queries/events.tsEvent fetch hooks (useEvents(), useAllEvents())

All Event Endpoints

MethodPathAuthHandlerPurpose
POST/events/CognitocreateCreate event
GET/events/PublicgetAllList all events
GET/events/{id}/{year}PublicgetGet event (supports ?count, ?users)
PATCH/events/{id}/{year}CognitoupdateUpdate event
DELETE/events/{id}/{year}CognitodelDelete event
GET/events/getActiveEventPublicgetActiveEventGet currently active event
POST/events/event-image-upload-urlCognitocreateThumbnailPicUploadUrlGet S3 presigned upload URL
GET/events/{id}/{year}/feedback/{formType}PublicgetFeedbackFormGet feedback form config
POST/events/{id}/{year}/feedback/{formType}PublicsubmitFeedbackSubmit feedback
GET/events/{id}/{year}/feedback/{formType}/submissionsCognitogetFeedbackSubmissionsList feedback submissions

In This Section

Event Data Model

Every field on an event record, with types and examples.

Event Creation Flow

Full trace from admin form to DynamoDB write.

Active Event Detection

How the companion app discovers the current event.

Event Image Upload

The thumbnail pipeline from browser to S3.


Previous
Profiles Service