Vendors

The vendors app manages the dealer/marketplace lifecycle end-to-end: from application, through jury selection, to table payment and at-show relationship management.

What it does

  • Vendor types & table sizesVendorType carries the application form (a JSON schema authored through the form builder) and now a configurable tasks list. Table sizes/quantities are part of the application.

  • Application workflow — vendors submit a Vendor record holding their form data. The record moves through a status machine: submitted approved / rejected / waitlisted archived.

  • Jury voting (real-time)Jury, Juror, JuryRating, and VendorDisplay power a collaborative evaluation session over Django Channels WebSockets (/ws/jurors/<display_id>/). Jurors rate vendors live; the consumer aggregates and broadcasts the rolling result and can auto-advance.

  • Configurable task flowVendorType.tasks is an authored, ordered list of required tasks (built-ins like pay-table, register-event, sign-contract, plus self-report tasks like book-hotel/custom-link). Completion state is computed by _compute_vendor_task_states() (built-ins derive from real data; self-report tasks read Vendor.task_completions). Tasks support prerequisites so authors can order them.

  • Ping conversations — a staff ↔ vendor messaging surface (VendorMessage) with sound-on-new and mute.

  • At-show — vendor check-in and a show-floor display.

Vendor lifecycle

application form → jury voting (WS) → approval
   → table payment (Stripe) → task flow (built-in + self-report)
   → at-show ping / check-in

Key models

Event
  └─ VendorType (form: JSON schema; tasks: JSON ordered task list)
        └─ Vendor (data: JSONField submission; status; task_completions: JSON)
              └─ VendorMessage (ping conversation)
  └─ Jury → Juror → JuryRating
  └─ VendorDisplay (the live display being voted on)

Where to look

  • Models: vendors/models.py

  • Views + task-state computation: vendors/views.py

  • URLs (under /app/vendors/): vendors/urls.py

  • Real-time voting: vendors/consumers.py, vendors/routing.py

  • Frontend: ui/src/app/apps/vendors/

  • Task component authoring registry: ui/src/app/apps/register/register-form-components/vendor-task-components.ts