Chobble Tickets is a free, open source scheduling & event management project written in TypeScript and released under AGPL-3.0. It has 32 GitHub stars, 3 forks and 104 open issues, and was last pushed 12 hours ago. On this registry it ranks #23 of 23 tracked projects in Scheduling & Event Management, with 5 head-to-head comparisons available.

What is Chobble Tickets?

Chobble Tickets is an AGPL-3.0-only event ticketing and reservation system for event organisers who want private sales without per-ticket platform fees, built by Chobble CIC and deployable on Bunny Edge Scripting or any Deno environment with libsql.

What it is

Chobble Tickets is a TypeScript reservation system that runs on Bunny Edge Scripting or any Deno environment with libsql. It encrypts all PII at rest, handles free and paid listings through Stripe, Square, or SumUp, and ships every feature under AGPL-3.0-only with no proprietary add-ons. Chobble CIC, a community interest company, develops it and locks its assets to the community. It lives in the Bun, Deno, edge, libsql, and self-hosted ecosystems.

The concrete problem is per-ticket platform fees and loss of control over attendee data. Chobble Tickets is positioned as a no per-attendee fee alternative to BookItBee, Eventbrite, Seetickets, and similar paid ticketing products. It replaces their hosted, proprietary checkout with a self-hostable system where the organiser runs the database, holds the encryption key, and keeps PII encrypted at rest. It handles free and paid listings, capacity limits, booking deadlines, deposits, refunds, and check-in rather than only selling tickets.

Key capabilities

  • Standard listings with fixed capacity and daily listings with per-date capacity and a calendar picker.
  • Multi-listing booking combines listings in one URL such as /ticket/listing1+listing2, with one form, one checkout, and a dashboard link builder.
  • Payments through Stripe, Square, and SumUp via a provider interface; an API key in admin settings configures the webhook endpoint.
  • Deposits and partial payments using a flat, percentage, or per-item amount, plus a signed, PII-free balance link at /pay/:token.
  • PII encrypted at rest with a 32-byte base64-encoded AES-256 DB_ENCRYPTION_KEY; listing images and file attachments encrypted on Bunny CDN.
  • Check-in uses unique tickets, a listing QR code SVG at /ticket/:slug/qr, and a non-transferable toggle requiring ID verification.
  • Embedding via iframe with configurable CSP frame-ancestors, custom thank-you URL, global terms and conditions, manual attendee creation for walk-ins and comps, and bulk refunds.

Who uses it and how

  • Event organisers who want ticketing without per-attendee fees can use the hosted instance at tix.chobble.com for £5/month or £50/year, or self-host.
  • Self-hosters fork the repository, create a Bunny Database, link a Bunny Edge Script to it, and add secrets DB_URL, DB_TOKEN, DB_ENCRYPTION_KEY, and SCHEDULED_TASK_KEY.
  • Teams running related events use listing groups and multi-listing booking to sell combined listings through /ticket/listing1+listing2 with one form and one checkout.
  • Organisers with door sales, comps, or walk-ins use manual attendee creation from the admin listing page, while non-transferable listings require ID verification at check-in.
  • Community-interest and privacy-focused groups can adopt it because Chobble CIC locks assets to the community and the licence is AGPL-3.0-only.

Getting started

Fork the repository, connect it to Bunny Edge Scripting, add Bunny Database and encryption secrets, and deploy via GitHub Actions; the schema auto-migrates on first request and /setup/ sets admin password and currency. Hosted instances are available at tix.chobble.com.

How it compares

Chobble Tickets replaces paid ticketing products such as BookItBee, Eventbrite, and Seetickets, which charge per-ticket platform fees and operate as proprietary hosted services. Chobble Tickets is AGPL-3.0-only and self-hostable on Bunny Edge Scripting or any Deno environment with libsql, while the paid products are proprietary hosted services. The cost model differs: paid platforms take a per-attendee cut, whereas Chobble Tickets has no per-ticket fee, with an optional hosted instance at £5/month or £50/year and self-hosting limited to infrastructure costs; data ownership also differs because the organiser controls the database and PII is encrypted at rest with the organiser's AES-256 key.

When to use it — and when not to

Use it when the organiser wants no per-ticket fees, control over attendee PII, and is willing to operate Bunny Edge Scripting or a Deno environment with libsql, including Bunny Database, secrets, Bunny CDN storage for uploads, and an external monitor. Do not pick it if the organisation needs turnkey SaaS or cannot manage database credentials, a 32-byte encryption key, and deployment through GitHub Actions. The project is small, with 32 stars, 3 forks, and 104 open issues, and the README excerpt is incomplete around check-in.

project readme (upstream, from github) — read inline

Chobble Tickets

Chobble Tickets is a reservation system that runs on Bunny Edge Scripting (or any Deno environment) with libsql, which encrypts all PII at rest and handles free and paid listings with Stripe, Square, or SumUp.

It is developed by Chobble CIC - a community interest company, which means the assets are locked to the community and cannot be sold off.

Website: tickets.chobble.com

This is not "open core" - every feature is available under AGPL-3.0-only with no proprietary add-ons. If you prefer not to host it yourself, I offer hosted instances at tix.chobble.com for £5/month or £50/year.


Deploy on Bunny Edge Scripting

This is the recommended way to deploy it. Fork the repo, connect it to Bunny, and deploy via GitHub Actions - you can pull in upstream changes and push your own customisations on your own schedule.

  1. Fork or clone this repository

  2. Create a Bunny Database in the Bunny dashboard - note the database URL and token

  3. Create a Bunny Edge Script using your repository as the linked source

  4. Add secrets to the script in the Bunny dashboard:

    Secret Description
    DB_URL Your Bunny database URL
    DB_TOKEN Your Bunny database auth token
    DB_ENCRYPTION_KEY 32-byte base64-encoded AES-256 key
    SCHEDULED_TASK_KEY Unique 32-byte base64url maintenance key
  5. Add GitHub Actions secrets to your repository: BUNNY_SCRIPT_ID and BUNNY_ACCESS_KEY

Pushes to main trigger the deploy workflow automatically. The database schema auto-migrates on first request. Visit /setup/ to set your admin password and currency.

For image uploads, also add STORAGE_ZONE_NAME and STORAGE_ZONE_KEY as Bunny secrets. Configure an external monitor using the scheduled maintenance guide. See the CONFIG_KEYS reference for all optional variables.


Features

Listings

  • Standard listings (fixed capacity) and daily listings (per-date capacity with calendar picker)
  • Listing groups for organising related listings together
  • Optional listing date and location fields, displayed on the ticket page
  • Configurable contact fields: email, phone, postal address (any combination)
  • Special instructions field for attendee notes
  • Terms and conditions - set globally in settings, attendees must agree before booking
  • Capacity limits, max tickets per purchase, registration deadlines
  • Multi-listing booking - combine listings in one URL (/ticket/listing1+listing2), one form, one checkout
  • Multi-booking link builder on the dashboard for generating combined-listing URLs
  • Listing QR code SVG (/ticket/:slug/qr) for posters and printed materials
  • Embeddable via iframe with configurable CSP frame-ancestors
  • Custom thank-you URL or default confirmation page
  • Non-transferable tickets - per-listing toggle requiring ID verification at check-in
  • Listing image and file attachment uploads (encrypted, stored on Bunny CDN)
  • Manual attendee creation from the admin listing page (walk-ins, comps)

Payments

  • Stripe, Square, and SumUp, with a provider interface so adding others is straightforward
  • Enter your API key in admin settings and the webhook endpoint configures itself
  • Checkout sessions with metadata, webhook-driven attendee creation
  • Configurable booking fee added to each transaction
  • "Pay what you want" pricing with optional minimum and maximum
  • Deposits / partial payments: take a flat, percentage, or per-item amount up front and track the rest as owed
  • Self-service balance payment: attendees get a signed, PII-free /pay/:token link to pay off what they owe, no login
  • With no provider configured, paid bookings are still accepted and recorded as a balance owed
  • Automatic refund if capacity exceeded after payment or listing price changes during checkout
  • Admin-issued full refunds for individual attendees or all attendees in bulk

Check-in

  • Each ticket gets a unique URL (/t/:token) with a QR code
  • Staff scan QR to reach check-in page, toggle check-in/out
  • Built-in QR scanner - open from a listing page, uses device camera, check-in-only (no accidental check-outs)
  • ID verification prompt for non-transferable listings before completing check-in
  • Cross-listing detection: scanner warns if a ticket belongs to a different listing
  • Multi-ticket view for multi-listing bookings (/t/token1+token2)

Wallet passes

  • Apple Wallet: generates .pkpass files with listing details and barcode
  • Web service API for automatic Apple pass updates (follows the Apple Wallet spec)
  • Google Wallet: inline RS256-signed "Add to Google Wallet" save links
  • Configurable via admin settings or environment variables

Localisation

  • ICU MessageFormat copy with locale picked from the Accept-Language header
  • Rebrand layer (I18N_REPLACEMENTS): substring replacements (for example ticket|booking) that rewrite copy without touching HTML, links, or interpolated values, applied once at load

Admin

  • Listing CRUD, duplicate, deactivate/reactivate, delete (requires typing listing name)
  • Calendar view for daily listings with per-date attendee counts
  • Attendee list with date filtering (daily listings), check-in status filtering
  • Attendee editing - update name, contact details, quantity, or reassign to a different listing
  • CSV export (respects active filters)
  • Per-listing and global activity log (creation, updates, check-ins, exports, refunds, deletions)
  • Holiday/blackout date management for daily listings
  • Multi-user with graded roles: owners invite managers (full back office) via time-limited links (7-day expiry), plus a content-only editor (edits listings/site but holds no data key, so attendee PII stays undecryptable) and a delivery agent (locked to its own run sheet)
  • Session management: view active sessions, kill all others
  • Attendee merge: deduplicate records with a review-then-apply diff that repoints ledger entries and posts write-off adjustments so balances stay correct
  • Contact history per email/phone: last-contacted, visit/booking counts, and an owner-encrypted private note, keyed by a blind HMAC index
  • Bulk email: compose/preview/send to filtered attendee groups with reusable subject/body templates (encrypted under the owner key); recipients get one-click unsubscribe / resubscribe / erase links
  • Catalog import/export: export any listing or group as portable JSON and re-import it to move a catalog between sites
  • Settings: payment provider config, email templates, custom domain, embed host restrictions, terms and conditions, password change
  • Privacy tools (/admin/privacy): plain-language data-minimisation guidance, automatic/manual purging of orphaned attendee records, and GDPR erasure of a contact's recognition record by email or phone
  • Demo mode (DEMO_MODE=true): replaces all user-entered text with generated sample data so demos hold no real PII
  • Branding: custom header image, website title, theme colours
  • Built-in admin guide (/admin/guide) with FAQ for all features
  • Ntfy error notifications for production monitoring (optional; sends domain + error code only, never PII)

Logistics

  • Optional postcode/address lookup on booking and admin forms, via a same-origin proxy that keeps the provider key server-side, caches results encrypted, and rate-limits anonymous use; provider is pluggable
  • Drop-off and collection dates per booking (collection on the last booked day)
  • Van/agent allocations: assign a drop-off and collection agent per booking, filter the calendar by agent
  • Delivery driver login (agent role): an auto-generated run sheet of today's and tomorrow's drop-offs and collections with per-leg done toggles, walled off from the rest of admin

Multi-site hosting

  • One-click site builder: provision a new tenant on Bunny Edge or Deno Deploy, auto-creating its database and its own encryption key
  • Sell sites as products: buying a "site" listing auto-provisions and assigns a live site to the buyer, with its own renewal tracking and tokenised /renew flow
  • Self-updating fleet: each site records its build commit; the host sees which sites are behind and redeploys them from the latest GitHub release
  • Secret backfill: detects host secrets a site is missing and fills them in without overwriting deliberately-changed values

Embedding

  • Generated and snippets to drop the booking form onto an existing site
  • /order.js widget turns any data-add-listing link on the operator's own site

readme truncated — read the full docs on github

Frequently asked questions

Is Chobble Tickets free to use?

Chobble Tickets is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Chobble Tickets do?

Event ticketing with no per-ticket platform fees

What is Chobble Tickets written in?

Chobble Tickets is primarily written in TypeScript. Its source is publicly available at https://github.com/chobbledotcom/tickets, and it has 32 GitHub stars.