/tessera

Open source and ready to use ticket shop with lots of customization abilities and feature rich admin dashboard. Several payment providers (stripe, paypal, sofort) are available out of the box and new ones can be added with ease.

Primary LanguageTypeScriptMIT LicenseMIT

Logo Welcome to Tessera 👋
Your open source ticket shop

License: MIT Build Status CI Status Codecov Docs badge

Open source and ready to use ticket shop with lots of customization abilities and feature rich admin dashboard. Several payment providers (stripe, paypal, sofort) are available out of the box and new ones can be added with ease.

Demo

⚡️ Quickstart

📥 Install

npm install

▶️ Run

  1. Create a .env file containing all values of .env.example except the optional ones
  2. Set up a database (further instructions here)
  3. If you're not using postgresql please update the provider flag inside the schema.prisma
  4. Optional: Configure payment providers in .env (e.g. stripe, sofort, paypal)
  5. Optional: Configure email service to send invoices and digital digits (e.g. gmail)
  6. Push prisma db schema to your database and generate prisma client with:
    prisma db push
    prisma generate
  7. (OPTIONAL) seed the database with demo configuration:
     prisma db seed
  8. Start the server at port 3000 using:
    npm run build
    npm run start:default
  9. Open the ticketshop at the url in the console
  10. Open the admin page at URL/admin
  11. Create your first admin user with the register button (the first user is granted with admin permissions)

🐳 Setup Docker

  1. Pull the image using docker pull ghcr.io/mbpictures/nextjs-ticketshop
  2. Create a container docker create --name nextjs-ticketshop -p 3000:3000 --add-host=host.docker.internal:host-gateway nextjs-ticketshop
  3. Update the host of your database URL to postgresql://USERNAME:PASSWORD@host.docker.internal:PORT/DATABASE?schema=public if you want to use the database running on your host OS. If you want to use a database container, replace host.docker.internal by the name of your database container and add a docker network.
  4. Copy your environments file inside the container: docker cp .env nextjs-ticketshop:/ticketshop/.env
  5. Start the container docker start nextjs-ticketshop
  6. You can access your ticketshop at http://localhost:3000

🎯 Features

  • Select events, seats and collect customer information (address, e-mail, etc)
  • Three delivery possibilities: Download (Template Ticket with QR), Postal delivery and box office
  • Payment: PayPal, stripe (iban & credit card), sofort and invoice
  • Sending emails (with templates) containing invoice and/or tickets
  • Easy to use admin section with event management, seat map editor, viewing orders, marking invoices as payed
  • RESTful API to manage events and orders with third party tools or webhooks
  • Customizable ticket shop UI with import function for MUI themes
  • Multi-Language Support and translation editor
  • Ticket control webapp (to scan and verify downloaded tickets)
  • Notifications (e.g. for new orders)
  • Event scheduling
  • Google Wallet API for event tickets (needs environment variables)

🔜 Planned

  • Customizeable webhooks (to automate receipt of payment detection etc.)

If you miss some features, which are not planned, please create an issue ❗

👨‍💻 Tech stack

  • This project uses React for frontend
  • MUI as UI library
  • Next.JS is used as WebSDK and as server backend
  • All data is stored in a database (e.g. Postgre) and with prisma as ORM accessed
  • Integration testing is done with cypress
  • Continuous Integration using GitHub Actions

📝 Documentation

You can find a detailed documentation here

👥 Author

👤 Marius Butz

⭐️ Show your support

  • Give a ⭐️ star if this project helped you!
  • Create a 🍴 fork and contribute by fixing bugs or adding features