Skip to content

Events

The Events app is a full event management system supporting online, in-person, and hybrid events. It covers the complete lifecycle from event creation through ticket sales, speaker management, and attendance tracking.

  • Event creation with title, slug, description, location type (online, in-person, hybrid), capacity, and scheduling
  • Ticket management with multiple ticket types per event, pricing, quantity limits, and sale windows
  • Speaker profiles attached to events with name, title, bio, and avatar
  • Revenue tracking with ticket sales and payment integration
  • Event statuses — draft, published, cancelled, completed
  • Thumbnail images for event listings
  • Public event browsing at /events
RoutePurpose
/business/apps/eventsDashboard with stats (total events, published, tickets sold, revenue) and recent events list
/business/apps/events/newCreate a new event
/business/apps/events/[id]Single event detail and management

The core entity with fields for organizer_id, title, slug, location_type (online, in_person, hybrid), starts_at/ends_at, timezone, optional capacity, status (draft, published, cancelled, completed), and ticket_count_sold.

Defines ticket tiers for an event: name, price, quantity limit, sold_count, and optional sales_start/sales_end windows.

Records individual ticket purchases with buyer_id, quantity, total_amount, ticket_code for check-in, and status (pending, confirmed, cancelled, refunded).

Event speakers with optional profile_id linkage, name, title, bio, avatar_url, and sort_order.

Aggregate stats type: total_events, published_events, total_tickets_sold, total_revenue.

  • Stats grid — four cards showing total events, published count, tickets sold, and revenue (USD formatted)
  • Quick nav — links to My Events, Create Event, and a public Browse Events page
  • Recent events list — card rows showing event thumbnail (or placeholder icon), title, location type, date, tickets sold, and a color-coded status badge (draft=secondary, published=default, cancelled=destructive, completed=outline)
  • Services: getOrganizerStats and listMyEvents from $lib/apps/events/services
  • Types: Event and EventStats from $lib/apps/events/types
  • Currency formatting: Uses Intl.NumberFormat with USD currency style
  • Public routes: Browse events at /events (outside the business app scope)
  • Database: Stored in a separate ext_events schema