πͺ A free, open-source seat booking system designed for small venues, theatre groups, and community events.
Built for organizations with small budgets but big dreams. Professional booking experience without enterprise costs.
π Live Demo: eventseats.hannahgoodridge.dev π Documentation: GitHub Docs π¬ Built by: Hannah Goodridge
# Clone the repository
git clone https://github.com/Hannah-goodridge/eventseats.git
cd eventseats
# Install dependencies
npm install
# Copy environment variables
cp env.example .env.local
# Set up the database (see Database Setup below)
# Start development server
npm run devVisit http://localhost:3000 to see your booking system!
- π« Interactive Seat Selection: Visual seat map with real-time availability
- π Multiple Ticket Types: Adult, child, and concession pricing
- π± Mobile Responsive: Works perfectly on all devices
- π Secure: Built with security best practices
- π Embeddable: Simple iframe embedding for any website
- π Admin Dashboard: Manage shows, performances, and bookings
- πͺ Multi-Venue Support: Perfect for theatre groups and community centres
- π Open Source: MIT licensed, self-host for free
- π§ Email Notifications: Automated booking confirmations
- π·οΈ QR Code Tickets: Digital tickets with QR codes
- π³ Payment Processing: Stripe integration (in progress)
- πͺ Custom Seating Charts: Visual seat map editor
- Node.js 20+ (Download here)
- PostgreSQL or Supabase account (Get free account)
- Stripe account for payments - Optional (work in progress) (Get account)
git clone https://github.com/Hannah-goodridge/eventseats.git
cd eventseats
npm installCopy the example environment file:
cp env.example .env.localEdit .env.local with your values:
# Database (Supabase recommended)
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
SUPABASE_SERVICE_ROLE_KEY=your_service_role_key
# NextAuth.js
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your_secret_key
# Stripe (optional for payments - work in progress)
STRIPE_SECRET_KEY=sk_test_...
STRIPE_PUBLISHABLE_KEY=pk_test_...Option A: Supabase (Recommended)
- Create account at supabase.com
- Create new project
- Open Supabase SQL Editor and run the contents of
database-setup.sql - Then run
docs/setup-demo-user.sqlto create a demo admin user
Option B: Local PostgreSQL
# Install PostgreSQL locally
# Create database
createdb eventseats
# Apply schema and demo data
psql eventseats -f database-setup.sql
psql eventseats -f docs/setup-demo-user.sql# Development mode
npm run dev
# Production build
npm run build
npm start- Visit
http://localhost:3000/admin/login - Create your first admin account
- Add your venue and seating layout
- Create your first show
- Start selling tickets! π
- Quick Start Guide - Set up EventSeats in minutes
- Embedding Guide - Add booking to your website
- Simple Embedding - Quick embed setup
- Vercel Deployment - One-click deployment
- Railway Deployment - Simple hosting
- Self-Hosted Setup - VPS deployment
- Squarespace Integration - Website integration
- Venue Setup Examples - Real venue configurations
- Embed Examples - HTML embedding examples
- Demo User Setup - Database setup script
- Contributing Guide - How to contribute
- API Documentation - REST API reference (coming soon)
- Database Schema - Database structure (coming soon)
- Stripe Checkout Guide - Accept payments without handling card data
| Service | Cost | Difficulty | Best For |
|---|---|---|---|
| Vercel | Free tier available | Easy | Quick testing |
| Railway | $5/month | Easy | Production ready |
| DigitalOcean App Platform | $5/month | Medium | Scalable apps |
| AWS/GCP | Variable | Hard | Enterprise |
- VPS (DigitalOcean, Linode, Vultr)
- Docker deployment included
- PM2 process management
- Nginx reverse proxy setup
See our Deployment Guide for detailed instructions.
We love contributions! EventSeats is built by the community, for the community.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Test thoroughly:
npm test - Commit with clear message:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
# Clone your fork
git clone https://github.com/YOUR_USERNAME/eventseats.git
cd eventseats
# Add upstream remote
git remote add upstream https://github.com/Hannah-goodridge/eventseats.git
# Install dependencies
npm install
# Run tests
npm test
# Start development
npm run dev- π Translations - Make EventSeats available in more languages
- π¨ Themes - Create beautiful themes for different types of events
- π Integrations - Payment gateways, email services, CRM systems
- π± Mobile App - React Native companion app
- π§ͺ Testing - More comprehensive test coverage
- π Documentation - Improve guides and tutorials
See CONTRIBUTING.md for detailed guidelines.
- π GitHub Documentation
- π¬ GitHub Discussions
- π Issue Tracker
- β Star this repository if it helps you!
- π¦ Share on social media with #EventSeats
- π Sponsor the project
EventSeats is MIT licensed. You can:
- β Use commercially
- β Modify freely
- β Distribute
- β Sub-license
- β Use privately
See LICENSE for full details.
Built with amazing open-source tools:
- Next.js - React framework
- Supabase - Database and auth
- Tailwind CSS - Styling
- TypeScript - Type safety
Special thanks to all contributors who make EventSeats better! π
Made with β€οΈ by Hannah Goodridge