- Buzz is a Frappe app for event management with a Vue 3 (FrappeUI) dashboard and Frappe Builder/public pages.
- Backend is organized into Frappe modules:
Buzz,Events,Ticketing,Proposals. - Frontend dashboard lives in
dashboard/, built with Vite and published intobuzz/public/dashboardandbuzz/www/dashboard.html.
- App bootstrap and hooks:
buzz/hooks.py- Requires
frappe/payments. - Scheduler:
buzz.tasks.unpublish_ticket_types_after_last_date(daily). - Doc events: assigns
Buzz Userrole on user creation; syncs Speaker Profile display name on User update. - App icon entry in Desk apps screen.
- Requires
- Core API:
buzz/api.py- Booking, tickets, add-ons, sponsorship, check-in, languages, translations.
- Payments integration:
buzz/payments.py- Creates
Event Paymentrecords and generates payment links via the Payments app.
- Creates
- Utilities:
buzz/utils.py- App-install guard decorator, custom field helpers, role assignment.
- Install/fixtures:
buzz/install.pycreates default Event Categories and zoom integration fields if installed.buzz/fixturesandbuzz/patchesfor setup and migrations.
Buzz Event(buzz/events/doctype/buzz_event)- Primary entity; holds schedule, category, venue, ticketing/payment settings, sponsorship settings.
- Creates default
Sponsorship TierandEvent Ticket Typeafter insert. - Optional Zoom webinar creation/updates when
zoom_integrationis installed.
Event Category,Event Venue,Event Host- Category slug creation; venue location geojson and map embed cleanup.
Event Talk,Talk Speaker,Speaker Profile,Event Track- Talks can be generated from proposals; speaker profiles tied to User records.
Event Sponsor,Sponsorship Tier,Sponsorship Deck Item- Sponsor uniqueness enforced per enquiry.
Event Check In- Used for check-in records and attendance reporting.
Event Payment Gateway- Child table for multiple payment gateways per event.
Additional Event Page- Event-specific extra pages with route validation.
Event Booking- Holds attendees, pricing, tax, UTM parameters, custom fields.
- On submit: generates
Event Ticketdocuments and applies add-ons/custom fields.
Event Ticket- Generates QR code, sends ticket email + print format attachment.
- Creates Zoom webinar registration (if enabled).
- Supports transfer/cancellation flows.
Event Ticket Type- Inventory logic; tracks max tickets and remaining count.
Ticket Add-on+Ticket Add-on Value+Attendee Ticket Add-on- Add-on definitions and per-ticket selections.
Bulk Ticket Coupon- Auto-generates code; limits usage via claimed count.
Ticket Cancellation Request+Ticket Cancellation Item- Cancel booking or specific tickets on acceptance.
Additional Field- Generic key/value for ticket/booking custom fields.
Talk Proposal- Maps into
Event Talkand auto-creates users/speaker profiles if needed.
- Maps into
Sponsorship Enquiry- Handles approval/payment flow; creates
Event Sponsoron payment completion.
- Handles approval/payment flow; creates
Buzz Custom Field- Event-specific custom fields applied to bookings or tickets.
Buzz Settings- Central configuration for transfer/add-on/cancellation windows.
- Dashboard calls
buzz.api.get_event_booking_datato load ticket types, add-ons, custom fields, and payment gateways. buzz.api.process_bookingcreates anEvent Bookingwith attendees, add-ons, custom fields, and UTM parameters.- If total is 0, booking is auto-submitted; otherwise
Event Paymentis created and a payment URL is returned. - On payment authorization,
Event Booking.on_payment_authorizedmarks the payment received and submits the booking. - Booking submission creates
Event Ticketrecords and triggers QR + email flow.
- Ticket creation generates QR code file and email (with print format attachment).
- Transfers are handled via
buzz.api.transfer_ticketwith window checks fromBuzz Settings. - Add-on preference changes use
buzz.api.change_add_on_preferencewith window checks. - Cancellation requests are created via
buzz.api.create_cancellation_requestand are accepted/rejected in Desk.
- Web form submits
Sponsorship Enquiry. - Approval moves status to
Payment Pendingand triggers email notification. - Payment link is generated via
buzz.api.create_sponsorship_payment_link. - Payment authorization creates
Event Sponsorand marks enquiry as paid.
- Dashboard scanner validates tickets with
buzz.api.validate_ticket_for_checkin. - Successful check-in creates
Event Check Inand returns event/ticket context.
- Booking:
get_event_booking_data,process_booking,get_booking_details,create_cancellation_request. - Ticket actions:
get_ticket_details,transfer_ticket,change_add_on_preference. - Sponsorships:
get_sponsorship_details,get_user_sponsorship_inquiries,create_sponsorship_payment_link,withdraw_sponsorship_enquiry. - Check-in:
validate_ticket_for_checkin,checkin_ticket. - Payments:
get_event_payment_gateways(plus payment helpers inbuzz/payments.py). - User + i18n:
get_user_info,get_enabled_languages,update_user_language,get_translations.
- Events:
Event Overview(tickets sold, add-ons sold, sales) inbuzz/events/report/event_overview.Event Attendance Summarywith dynamic per-day check-ins and chart inbuzz/events/report/event_attendance_summary.
- Ticketing:
Event Add-Ons Overviewinbuzz/ticketing/report/event_add_ons_overview.Detailed Event Registrationswith dynamic custom fields, add-ons, UTM params inbuzz/ticketing/report/detailed_event_registrations.
- Dashboard is served via
buzz/www/dashboard.html(built fromdashboard/output). - Web forms:
Apply for SponsorshipandPropose a Talkunderbuzz/buzz/web_form/.
- Frappe Builder assets are under
buzz/builder_filesandbuzz/public/builder_files(currently empty stubs/asset containers).
- Entry:
dashboard/src/main.jsmountsApp.vuewith router, resources, translation plugin, and socket. - Build:
dashboard/vite.config.jsoutputs tobuzz/public/dashboardand updatesbuzz/www/dashboard.html. - Base URL:
/dashboard(router history usescreateWebHistory("/dashboard")).
- Public-like flows: booking (
/book-tickets/:eventRoute) and check-in (/check-in). - Account area under
/account:- bookings list/details, tickets list/details, sponsorships list/details.
- Guard:
router.beforeEachchecksbuzz.api.get_user_infoand redirects to/loginif unauthenticated.
- Uses
frappe-uicreateResourceandcreateListResourcefor API calls. - API endpoints map directly to backend whitelisted methods (see API Surface above).
- Session state in
dashboard/src/data/session.jshandles login/logout and cookie-based session user.
- Booking flow:
BookingForm.vue,PaymentGatewayDialog.vue,BookingSummary.vue. - Ticket management:
TicketDetails.vue,TicketTransferDialog.vue,AddOnPreferenceDialog.vue,CancellationRequestDialog.vue. - Sponsorship management:
SponsorshipDetails.vue,SponsorshipPaymentDialog.vue,SponsorLogoUploader.vue. - Check-in:
CheckInScanner.vue,EventSelector.vue,QRScanner.vue. - Shared:
Navbar.vue,LanguageSwitcher.vue,SuccessMessage.vue.
useTicketValidationhandles check-in validation flow and audio feedback.usePaymentSuccesshandles success banners + confetti and URL cleanup.useBookingFormStoragekeeps draft booking data in localStorage per event.useLanguagechanges user language and reloads translations.
- Payments app required (gateway link generation + payment receipt recording).
- Zoom integration optional;
Buzz Eventcan create/update webinars and register attendees.
- Roles:
Buzz User,Frontdesk Manager(fixtures in hooks). - Check-in APIs restricted to
Frontdesk Manager. - Sponsorship details restricted to enquiry owner or users with permission.
- Booking logic:
buzz/api.py,buzz/ticketing/doctype/event_booking,dashboard/src/components/BookingForm.vue. - Ticket lifecycle:
buzz/ticketing/doctype/event_ticket,dashboard/src/pages/TicketDetails.vue. - Sponsorship lifecycle:
buzz/proposals/doctype/sponsorship_enquiry,dashboard/src/pages/SponsorshipDetails.vue. - Check-in flow:
buzz/api.py,dashboard/src/pages/CheckInScanner.vue. - Event configuration:
buzz/events/doctype/buzz_eventand related event doctypes.
- Payment gateway selection is event-scoped via
Event Payment Gatewaychild rows. - Event routes are auto-generated when publishing (
Buzz Event,Additional Event Page). - Custom fields are event-scoped (
Buzz Custom Field) and can apply to booking or ticket. - Ticket type availability is enforced at booking time, plus daily auto-unpublish by scheduler.
erDiagram
BUZZ_EVENT ||--o{ EVENT_TICKET_TYPE : has
BUZZ_EVENT ||--o{ TICKET_ADD_ON : has
BUZZ_EVENT ||--o{ EVENT_BOOKING : has
BUZZ_EVENT ||--o{ EVENT_SPONSOR : has
BUZZ_EVENT ||--o{ SPONSORSHIP_TIER : has
BUZZ_EVENT ||--o{ BUZZ_CUSTOM_FIELD : has
BUZZ_EVENT ||--o{ EVENT_CHECK_IN : has
BUZZ_EVENT ||--o{ ADDITIONAL_EVENT_PAGE : has
EVENT_BOOKING ||--o{ EVENT_BOOKING_ATTENDEE : has
EVENT_BOOKING ||--o{ ADDITIONAL_FIELD : has
EVENT_BOOKING ||--o{ UTM_PARAMETER : has
EVENT_BOOKING ||--o{ EVENT_TICKET : generates
EVENT_TICKET ||--o{ TICKET_ADD_ON_VALUE : has
EVENT_TICKET ||--o{ ADDITIONAL_FIELD : has
EVENT_TICKET_TYPE ||--o{ EVENT_TICKET : sold_as
ATTENDEE_TICKET_ADD_ON ||--o{ TICKET_ADD_ON_VALUE : has
TICKET_CANCELLATION_REQUEST ||--o{ TICKET_CANCELLATION_ITEM : includes
TICKET_CANCELLATION_REQUEST }o--|| EVENT_BOOKING : cancels
EVENT_CHECK_IN }o--|| EVENT_TICKET : for
SPONSORSHIP_ENQUIRY }o--|| BUZZ_EVENT : for
SPONSORSHIP_ENQUIRY ||--o{ EVENT_SPONSOR : creates
TALK_PROPOSAL }o--|| BUZZ_EVENT : for
TALK_PROPOSAL ||--o{ EVENT_TALK : maps_to
dashboard/src/pages/BookTickets.vuebuzz.api.get_event_booking_datato load event booking config.buzz.api.process_bookingviadashboard/src/components/BookingForm.vue.
dashboard/src/pages/BookingDetails.vuebuzz.api.get_booking_detailsfor booking + ticket data.buzz.api.create_cancellation_requestviadashboard/src/components/CancellationRequestDialog.vue.buzz.api.transfer_ticketviadashboard/src/components/TicketsSection.vue.
dashboard/src/pages/TicketDetails.vuebuzz.api.get_ticket_details.buzz.api.change_add_on_preferenceviadashboard/src/components/AddOnPreferenceDialog.vue.buzz.api.transfer_ticketviadashboard/src/components/TicketTransferDialog.vue.
dashboard/src/pages/SponsorshipsList.vuebuzz.api.get_user_sponsorship_inquiries.
dashboard/src/pages/SponsorshipDetails.vuebuzz.api.get_sponsorship_details.buzz.api.withdraw_sponsorship_enquiry.buzz.api.get_event_payment_gatewaysandbuzz.api.create_sponsorship_payment_linkviadashboard/src/components/SponsorshipPaymentDialog.vue.
dashboard/src/pages/CheckInScanner.vuebuzz.api.validate_ticket_for_checkinandbuzz.api.checkin_ticketviadashboard/src/composables/useTicketValidation.js.
dashboard/src/data/user.jsbuzz.api.get_user_infofor session user details and roles.
dashboard/src/composables/useLanguage.jsbuzz.api.get_enabled_languages,buzz.api.update_user_language.
dashboard/src/translation.jsbuzz.api.get_translations.
- Tickets / booking changes
- Update
buzz/api.pyfor API shape changes andEvent Booking/Event Ticketdoctypes for business logic. - Keep
BookingForm.vuepayload mapping in sync with backend expectations. - Update reports if new fields should be exported (
Detailed Event Registrations).
- Update
- Add-on or custom field changes
- Check
Buzz Custom Fieldlogic andAdditional Fieldusage in booking/tickets. - Update frontend rendering in
CustomFieldInput.vueandBookingForm.vue.
- Check
- Payment flow changes
- Update
buzz/payments.pyand any event-scoped gateway selection logic. - Ensure payment redirects still land on
/dashboard/...?...success=true.
- Update
- Sponsorship flow changes
- Update
Sponsorship Enquiryfor status transitions andSponsorshipDetails.vuefor UI state. - Verify sponsor creation in
on_payment_authorized.
- Update
- Check-in changes
- Update
buzz.api.validate_ticket_for_checkinandCheckInScanner.vue/useTicketValidation.js. - Confirm role gating for
Frontdesk Managerremains consistent.
- Update
- Event publishing or public pages
- Review
Buzz Eventroute generation andAdditional Event Pageroute uniqueness. - If using Builder, update assets under
buzz/builder_filesand publish tobuzz/public/builder_files.
- Review