John Jomi
All Projects
In Development/Case Study

Eventra — Intelligent Event Management Platform

Eventra is an enterprise-grade event management platform that automates the full lifecycle of complex events, turning passive event hosting into a data-driven, community-centric experience. It is built on Next.js 15 with PostgreSQL and pgvector, Drizzle ORM, Clerk authentication and Google Gemini.

The Problem

Running a large event means stitching together a registration tool, a payment processor, a mailing list, a check-in app and a spreadsheet of attendees — none of which talk to each other. Eventra collapses that toolchain into one platform where the data collected at registration actually informs what happens during and after the event.

Architecture

Eventra follows a feature-first modular architecture. Four integrated engines sit behind a central Engine Router, with Server Components and Server Actions carrying all business logic rather than a separate API tier.

EngineResponsibility
IntelligenceGemini-backed content generation, predictions and moderation
Recommendationpgvector semantic matching between users and events
CommunicationEmail, SMS and in-app chat dispatch
LifecycleEvents, ticketing, orders and payments

Authentication and authorization

Clerk handles authentication behind a layered authorization system. Middleware intercepts every non-public route and enforces sign-in, with admin routes receiving an additional role check before the request proceeds. Server Actions independently re-validate through helpers such as requireAuth, requireEventPermission and validateEventOwnership, so authorization is never left to the routing layer alone.

  • Eight roles from attendee through organizer to admin, each with a distinct permission set
  • Per-event authorization context resolving role, permissions and organizer status
  • Granular staff permission validation for check-in and support workflows
  • Signature-verified webhooks for Clerk and payment events

Event lifecycle

Events move through an explicit state machine — draft, published, active, completed, archived — with registration and check-in modelled as nested states. A published event whose capacity fills moves into an active waitlist and back again as spots free up.

  • Multi-step creation wizard with AI-assisted scheduling
  • RRule-based recurring events and sub-event hierarchies
  • Campus location selector with predefined venues
  • Co-organizer support and per-event custom branding
  • Public and private visibility controls

AI intelligence engine

Google Gemini 1.5 Flash, orchestrated through Genkit flows, drives automation across planning, content and analytics rather than being bolted on as a chat widget.

CapabilityWhat it does
Smart event planningGenerates descriptions, agendas and marketing copy
Predictive analyticsEstimates turnout from registration trends
Task generationProduces structured Kanban tasks with subtasks and priorities
Event chatbotEvent-scoped Q&A with persisted conversation history
Report generationStructured six-section post-event reports
Content moderationReal-time sentiment analysis and filtering

Vector recommendation engine

User and event embeddings are generated through the Gemini embedding API and stored as 768-dimensional vectors in pgvector. Cosine similarity search then matches attendees to events, and attendees to each other, on meaning rather than keyword overlap.

  • User interest embeddings derived from bio, skills and preferences
  • Event embeddings derived from title, description and category
  • Connection matchmaking based on stated professional goals
  • Recommendation caching with a TTL to keep search off the request path

Ticketing, payments and communication

The lifecycle engine handles multi-tier pricing, QR-based check-in and waitlists, routing paid registrations through Dodo Payments while free events skip straight to order creation. The communication hub then fans out across channels with delivery tracking at every step.

  • Seven transactional HTML email templates delivered through Resend
  • Twilio SMS for time-critical notifications
  • Bulk email with sent, delivered, opened, clicked, bounced and failed tracking
  • Event-scoped chat rooms supporting direct and group messaging
  • QR ticket rendering and bulk PDF certificate export

Data model

Thirty-four PostgreSQL tables managed by Drizzle ORM, with pgvector columns for embeddings. Users anchor events, tickets, orders, posts, chat messages, badges and feedback; events in turn own ticket tiers, waitlists, staff, sponsors, media, issues, Kanban tasks, reports and an optional campus map with its own nodes.