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.
🏠 Homepage
✨ Demo
npm install
- Create a
.env
file containing all values of .env.example except the optional ones - Set up a database (further instructions here)
- If you're not using postgresql please update the provider flag inside the schema.prisma
- Optional: Configure payment providers in
.env
(e.g. stripe, sofort, paypal) - Optional: Configure email service to send invoices and digital digits (e.g. gmail)
- Push prisma db schema to your database and generate prisma client with:
prisma db push prisma generate
- (OPTIONAL) seed the database with demo configuration:
prisma db seed
- Start the server at port 3000 using:
npm run build npm run start:default
- Open the ticketshop at the url in the console
- Open the admin page at URL/admin
- Create your first admin user with the register button (the first user is granted with admin permissions)
- Pull the image using
docker pull ghcr.io/mbpictures/nextjs-ticketshop
- Create a container
docker create --name nextjs-ticketshop -p 3000:3000 --add-host=host.docker.internal:host-gateway nextjs-ticketshop
- Update the host of your database URL to
postgresql://USERNAME:[email protected]:PORT/DATABASE?schema=public
if you want to use the database running on your host OS. If you want to use a database container, replacehost.docker.internal
by the name of your database container and add a docker network. - Copy your environments file inside the container:
docker cp .env nextjs-ticketshop:/ticketshop/.env
- Start the container
docker start nextjs-ticketshop
- You can access your ticketshop at
http://localhost:3000
- 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)
- Customizeable webhooks (to automate receipt of payment detection etc.)
If you miss some features, which are not planned, please create an issue ❗
- 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
You can find a detailed documentation here
👤 Marius Butz
- Website: http://marius-butz.de