Fundema — AI-Powered Event Workspace

A real-time collaborative workspace for live event teams. Fundema replaces spreadsheets, notebooks, and fragmented tools with a single shared workspace — from pre-event planning through on-the-ground execution to post-event follow-up.

Built for H0: Hack the Zero Stack — Track 2: Monetizable B2B App.

Current Status

Fundema is unfortunately still in development however it has been tested at Vercel Ship London (June 2026) to manage field operations for a team of three across roles.

What's Built

Area Status
Event workspace (schedule, map, speakers, team, leads, notes, session claiming) ✅ Complete
AI lead enrichment (Gemini 2.5 Flash — background, talking points, opportunity score) ✅ Complete
AI voice transcription (Gemini 2.5 Flash, speaker-labelled) ✅ Complete
AI speaker enrichment from LinkedIn/GitHub (Gemini 2.5 Flash) ✅ Complete
AI team-specific talking points (Gemini 2.5 Flash, cached per team with hash freshness) ✅ Complete
AI business card OCR (Gemini 2.5 Flash — name, title, company, phone, email, website) ✅ Complete
AI floor plan detection (Gemini 2.5 Pro for parsing, 2.5 Flash for batch ingestion) ✅ Complete
Interactive SVG multi-floor map editor (per-floor background images, polygon rooms, undo/redo) ✅ Complete
Venue management (multi-location profiles, geo-coordinates, contact info) ✅ Complete
Invite code system (event codes, team codes, organiser codes with free credits/grants) ✅ Complete
Role-based onboarding (venue / organiser / attendee with tier assignment) ✅ Complete
Stripe billing (event fees, AI credit packs, venue Pro subscriptions) ✅ Complete
Bilingual UI (English / Welsh — 78 strings per language, locale persisted in localStorage) ✅ Complete
Super admin panel (user mgmt, pricing, invite codes, branding, orphan cleanup) ✅ Complete
Event payment gating (pending_payment status, Stripe checkout + free code redemption) ✅ Complete
Schema migration endpoint (GET/POST /api/migrate for Vercel deploys) ✅ Complete
Responsive design (mobile + desktop dashboard) ✅ Complete
Team content blocks (rich text, team profiles, pitch cards, ventures, rosters) ✅ Complete

What's Coming Next

Feature Priority Notes
Attendee networking High In-app messaging, meeting scheduling, digital business card exchange
Post-event analytics High Per-event ROI dashboard — leads captured, enriched, converted. Session attendance tracking
Integrations (Zapier, CRM) Medium HubSpot and Salesforce lead sync, Google Calendar sync, Slack notifications
Venue booking / CRM Medium Direct venue availability searches and booking requests from organiser workspace
Offline / PWA support Medium Service worker caching for offline schedule and map access
Event mobile app (native) Low White-label native apps for venues to offer attendees

Tech Stack

Layer Technology
Framework Next.js 16.2.6 (App Router, React 19)
Language TypeScript 5.7 (strict)
Styling Tailwind CSS v4.2 + shadcn/ui v4.8 + motion v12.40 + lucide-react icons
Database Amazon Aurora PostgreSQL (41 tables, Drizzle ORM v0.45.2, IAM auth via RDS Signer)
Auth Auth0 v4.22 (social login, SSO, MFA, org auto-enrollment via Microsoft 365 / Google Workspace)
AI Vercel AI SDK v6 + @ai-sdk/google v3 — Gemini 2.5 Flash (OCR, enrichment, talking points, transcription), Gemini 2.5 Pro (floor plan parsing)
Payments Stripe Checkout v22 + Webhooks, configurable prices in DB
Storage Vercel Blob v2 (image uploads with base64 fallback)
Deployment Vercel (serverless functions, edge middleware)

Architecture

Vercel (Edge)
  ├── Next.js 16 App Router + React 19
  ├── Server Actions (114 — type-safe DB operations)
  ├── API Routes (Stripe, Migrate, Upload, Transcribe, Enrich, OCR, Floor Plan, Pricing Tiers, Speaker Intel)
  └── Drizzle ORM v0.45.2
        │
        ▼ (TLS / IAM auth)
  Amazon Aurora PostgreSQL (41 tables)
        │
        ├── events, speakers, sessions, leads, notes, session_claims
        ├── venues, venue_locations, venue_maps, venue_map_floors, venue_map_rooms
        ├── floor_plan_cache, floor_cache_floors, floor_cache_rooms
        ├── teams, team_members, event_teams, event_members
        ├── team_profiles, pitch_cards, ventures, team_blocks
        ├── team_profile_highlights, pitch_card_points, venture_tags
        ├── speaker_topics, speaker_links, speaker_intel
        ├── session_speakers, session_talking_points
        ├── team_talking_points, lead_tags, lead_tag_assignments, lead_talking_points
        ├── pricing_tiers, pricing_tier_features, prices, event_purchases
        └── invite_codes, user_roles, organiser_events

Database: 41 Tables (Fully Normalized)

Every relationship is enforced at the database level with foreign keys — no JSONB arrays. Composite primary keys on event-scoped entities (speakers, sessions, etc.) enable consistent ON DELETE CASCADE throughout. Org-connected teams (365/GWorkspace) persist when empty; manually-created teams auto-delete when the last member leaves.

Schema categories:

  • Event & Membership: events, event_teams, event_members, organiser_events
  • Teams: teams, team_members, team_profiles, team_profile_highlights, team_blocks, team_talking_points, pitch_cards, pitch_card_points, ventures, venture_tags
  • Content: speakers, speaker_topics, speaker_links, speaker_intel, sessions, session_speakers, session_talking_points, session_claims
  • Leads: leads, lead_tags, lead_tag_assignments, lead_talking_points
  • Notes: notes
  • Venue & Maps: venues, venue_locations, venue_maps, venue_map_floors, venue_map_rooms, floor_plan_cache, floor_cache_floors, floor_cache_rooms
  • Pricing & Payments: pricing_tiers, pricing_tier_features, prices, event_purchases
  • Auth & Invites: user_roles, invite_codes

Getting Started

Prerequisites

  • Node.js 20+
  • A PostgreSQL database (Neon or Aurora)
  • Auth0 tenant
  • Stripe account (for billing features)
  • Google Generative AI API key (for all AI features — OCR, enrichment, transcription, floor plan detection)

Setup

  1. Clone the repo:

    git clone https://github.com/BigXee/v0-hynt-digital-event-app.git
    cd v0-hynt-digital-event-app
    
  2. Install dependencies:

    npm install
    
  3. Create .env.local from the template below and fill in the required variables:

    AUTH0_DOMAIN=
    AUTH0_CLIENT_ID=
    AUTH0_CLIENT_SECRET=
    AUTH0_SECRET=
    AUTH0_MANAGEMENT_CLIENT_ID=
    AUTH0_MANAGEMENT_CLIENT_SECRET=
    DATABASE_URL=
    APP_BASE_URL=http://localhost:3000
    GOOGLE_GENERATIVE_AI_API_KEY=
    STRIPE_SECRET_KEY=
    NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=
    STRIPE_WEBHOOK_SECRET=
    SUPER_ADMIN_EMAILS=admin@example.com
    
  4. Run database migrations:

   npm run db:migrate
  1. Seed the database (optional):
   npm run db:seed
  1. Start the development server:
   npm run dev

Available Scripts

Command Description
npm run dev Start development server
npm run build Production build
npm run start Start production server
npm run db:generate Generate Drizzle migration
npm run db:migrate Apply migrations
npm run db:push Push schema to database
npm run db:studio Open Drizzle Studio
npm run db:seed Seed sample data

Applying Schema Changes in Production

On Vercel, schema changes are applied by hitting the migration endpoint after deploy:

curl https://fundema-app.vercel.app/api/migrate

This runs any pending Drizzle migrations from the drizzle/ directory against your database.

Key Routes

Path Description
/ Public landing page
/home Authenticated home / dashboard
/events/[eventId] Event workspace
/dashboard/[role] Role-specific dashboard
/onboarding/role Role selection on first sign-in
/api/migrate Schema migration (GET + POST)
/api/stripe/* Stripe checkout sessions
/api/enrich AI lead enrichment
/api/ocr Business card OCR
/api/transcribe Voice transcription
/api/parse-floorplan AI floor plan detection
/api/ingest-floorplan AI floor plan ingestion (batch room creation)
/api/upload File upload to Vercel Blob
/api/pricing-tiers Pricing tier listing
/api/enrich-speaker AI speaker intelligence

Team

  • Marley Plant — Privacy & Deployment Lead
  • Zelig Northover-Barnes — Strategy & Client Lead
  • Simon Hedley — Strategic Advisor

Built for H0: Hack the Zero Stack — June 2026

Built With

Share this project:

Updates