User flow architecture

How Convenes fits together — roles, flows, routes and the data behind each step.

Roles

Super admin
Platform-wide
What this role can do
  • See and manage every conference
  • Create a conference and assign it to an organiser
  • Grant platform roles
Organiser admin
Per conference
What this role can do
  • Create and publish their conference
  • Halls, agenda, speakers, ticket types, meal slots
  • Approve or reject registrations, issue complimentary tickets
  • Add volunteers and co-admins, read attendance and feedback
Volunteer
Per conference
What this role can do
  • Open the scan portal for their assigned conference
  • Scan tickets for hall check-in
  • Redeem meal and snack tokens
Participant
Per conference
What this role can do
  • Browse and register for published events
  • Hold a QR ticket and meal tokens
  • Add sessions to their calendar
  • Submit feedback after sessions

Roles are stored in a dedicated roles table and scoped per conference, so the same person can organise one event and attend another.

1. Creating and publishing an event

Setup flow
Sign up  ->  Dashboard  ->  New conference
                                   |
                                   v
                       Draft conference record
                                   |
        +--------------+-----------+-----------+--------------+
        v              v           v           v              v
      Halls         Agenda      Speakers   Ticket types    Meal slots
     (capacity)   (day/hall/    (bio,      (price, food,   (breakfast,
                   time slot)   chief      kit, window)     lunch, snacks,
                                guest)                      dinner)
        \_____________________ Publish _____________________/
                                   |
                                   v
                    Public page /e/<slug>  ->  poster + share links

2. Registration and ticketing

Registration flow
Participant                Organiser                   System
-----------                ---------                   ------
Open /e/<slug>
Fill registration  ---->   Registrations tab
(custom fields)            review queue
                           |
                           +-- Approve  --------------> Ticket + QR code issued
                           |                            Meal tokens created if
                           |                            food is included
                           +-- Reject   --------------> status = rejected
                           |
                           +-- Complimentary (by email)
                                 -> approved registration
                                 -> ticket + tokens, no payment

Ticket appears in /my-tickets with its QR and meal tokens.

3. Check-in, attendance and food

Scan flow
Volunteer opens /volunteer/<conference id>
        |
        |  chooses hall / session, or a meal slot
        v
  Camera scans the participant's QR (ticket code)
        |
        v
  Server-side validation
        |-- unknown code            -> invalid
        |-- wrong conference        -> invalid
        |-- already checked in      -> already scanned
        |-- token already redeemed  -> rejected
        `-- valid                   -> attendance row / token redeemed

Organiser sees it live in the Attendance tab:
headcount per hall, per session, per participant, meal redemption.

4. Feedback and reporting

Feedback flow
Session ends
     |
     v
Participant opens Feedback
     |  picks event, then "Overall event" or a finished session
     |  gives 1-5 stars + optional comment
     v
feedback row (one per user per session)
     |
     v
Organiser Feedback tab: average rating, response count, comments

Route map

RouteAccessPurpose
/PublicLanding page
/eventsPublicAll published conferences
/e/$slugPublicEvent landing page: about, agenda, speakers, register, share
/doc/flowPublicThis document
/authPublicSign in and sign up
/dashboardSigned inManaged conferences, volunteer assignments, registrations
/conferences/newOrganiserCreate a conference
/manage/$idOrganiser adminOverview, halls, agenda, speakers, tickets, registrations, attendance, team, feedback
/volunteer/$idVolunteerQR scan portal for check-in and meal tokens
/my-ticketsParticipantTickets, QR codes and meal tokens
/feedbackParticipantSubmit event and session feedback
/profileSigned inPersonal details

Data model

profiles
Name, email, phone, organisation, avatar — created on sign-up
user_roles
Platform roles (super_admin, organizer, volunteer, participant), never on profiles
conferences
The event: title, category, venue, dates, timezone, status, custom fields
conference_members
Per-conference admins and volunteers
halls
Rooms with capacity
sessions
Agenda entries: day, hall, time, type, capacity
speakers / session_speakers
Speaker and chief-guest profiles linked to sessions
ticket_types
Name, price, quantity, includes food / kit, sale window
registrations
One per user per conference: status, answers, complimentary, food flag
tickets
Issued on approval; unique code encoded in the QR
attendance
One row per scan: ticket, hall or session, volunteer, timestamp
meal_slots / meal_tokens
Meal windows and single-use tokens per ticket
feedback
Rating and comment, per event or per session

Every table has row-level security scoped by conference membership or by the signed-in user. Public event pages read a published-only slice. Scans and privileged admin operations are validated server-side, so a screenshot of someone else's QR still fails the checks it should.

Ready to try it? Browse events or create a conference.