Skip to content

Latest commit

 

History

99 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Geiger Events

A modern event platform for communities and small organisers.

Beautiful pages, fast ticketing, social momentum, and reliable check-in — without enterprise pricing.

Part of the Geiger suite.


Overview

Geiger Events is an all-in-one platform for creating events, selling tickets, managing guests, and running the door on the day. It is built for creators, communities, local businesses, workshops, meetups, and small conferences — organisers who need serious ticketing power without the cost and complexity of an enterprise suite.

The product has two sides: an organiser workspace for building and running events, and an attendee experience made up of public event pages and a personal members portal.

Highlights

Area What it does
Events Create and manage events, templates, and recurring series, each with its own editor and a public event wall.
Ticketing Reusable ticket types, tiers, bundles, discounts, early-bird and dynamic pricing, donations, group buying, memberships, and secure Stripe checkout.
Registrations RSVPs, custom forms, waitlists, approval gates, capacity limits, and dietary/accessibility collection.
Guests (CRM) A unified contact database with import, dedupe, segments, tags, notes, and export.
Check-in QR tickets, wallet passes, a check-in app, door sales, offline mode, kiosk mode, badge printing, and multi-gate scanning.
Campaigns Email, SMS, and WhatsApp outreach with templates, drip sequences, segmentation, and scheduling.
Advertising A simple control panel over Google Ads, Meta Ads, and related platforms.
Workflows A no-code automation engine with a visual builder and run history.
Conference Agenda builder, speakers, sponsors, expo booths, call for papers, and recordings.
Members portal Attendees manage tickets, orders, memberships, and refunds, show a QR pass, and message organisers directly.

For the full, non-technical tour see docs/product-overview.md.

Tech stack

  • Framework — Next.js 16 (App Router, SSR/SSG) and React 19
  • Styling — Tailwind CSS v4 and shadcn/ui, with the shared @geiger/ui component library
  • Icons — Lucide
  • Backend — Supabase (Postgres, Auth, Storage)
  • Payments — Stripe
  • Other — Recharts (charts), React Flow (workflow canvas), Leaflet (maps), qrcode / jsQR (tickets)

Getting started

Prerequisites

  • Node.js 20 or later
  • A Supabase project and a Stripe account

Installation

npm install

Environment

Create a .env file in the project root:

# Runtime (browser) — Supabase
NEXT_PUBLIC_SUPABASE_URL=your-supabase-url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key

# Server-only
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
STRING_URI=your-direct-postgres-connection-string   # migrations only
STRIPE_SECRET_KEY=your-stripe-secret-key
STRIPE_WEBHOOK_SECRET=your-stripe-webhook-signing-secret
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=your-stripe-publishable-key

Register the production endpoint https://geiger-events.vercel.app/events/api/stripe/webhook in Stripe for checkout.session.completed and checkout.session.async_payment_succeeded. The return page uses the same idempotent fulfillment path, but the webhook guarantees an order is recorded even if the buyer never returns after payment.

In Stripe Dashboard, open Developers → Workbench → Webhooks, then:

  1. Choose Create new destination and Events on your account.
  2. Select checkout.session.completed and checkout.session.async_payment_succeeded.
  3. Choose Webhook and enter the production endpoint above.
  4. Create the destination, reveal its whsec_… signing secret, and add it to Vercel as GEIGER_STRIPE_WEBHOOK_SECRET for the Production environment.
  5. Redeploy, complete a Stripe Checkout payment, and confirm its delivery shows HTTP 200 in the destination's Event deliveries tab.

Stripe sandbox and live-mode destinations have different signing secrets. Use the live destination's secret in Production; use a separate sandbox destination and secret for local/preview testing.

Database

Schema changes are timestamped SQL migrations in supabase/migrations/, applied in version order by @geiger/orm and recorded in events.geiger_migrations:

npm run db:status                     # applied vs pending
npm run db:new -- <name>              # scaffold a migration
npm run db:push                       # apply everything pending
npm run db:seed                       # re-runnable data

See MIGRATION_CONVENTIONS.md before writing any DDL.

Develop

npm run dev

Open http://localhost:3000 in your browser.

Project structure

app/                     Next.js App Router routes
  e/                     Public event pages
  w/                     Public organiser walls
  login/                 Members portal auth
  project/               Organiser workspace
components/
  internal/screens/      Organiser workspace screens (by area)
  internal/shared/       Shared screen kit (headers, tables, stats, dialogs)
  portal/                Attendee-facing members portal
  ui/                    shadcn primitives
lib/
  supabase/              Data-access layer (one module per area)
  portal/                Portal domain logic
  rbac.js                Permissions catalog
supabase/migrations/     Timestamped @up/@down migrations (npm run db:push)
supabase/seeds/          Re-runnable idempotent data (npm run db:seed)
docs/                    Product and reference documentation

Conventions

This codebase follows a consistent set of patterns. Read these before contributing:

Documentation

The Geiger suite

Geiger Events is one application in the broader Geiger suite, alongside Geiger Flow and Geiger Notes. The suite shares a common design language and the @geiger/ui component library, so every product feels native to the whole.

License

Private and unpublished. All rights reserved.

About

Geiger Events is a modern, all-in-one platform for creating events, selling tickets, and running the door — built for creators, communities, local businesses, and small conferences rather than enterprise teams. Organisers get a beautiful public event page, deep and flexible ticketing (tiers, bundles, discounts, memberships, group buying, and secure

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages