Skip to content

QRTicketify is a platform that simplifies event ticketing by generating unique QR codes for attendees. These codes are sent via email, allowing for easy access and check-ins at events.

License

Notifications You must be signed in to change notification settings

RyderAsKing/QRTicketify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


QR Ticketify logo

GitHub Workflow Status GitHub License GitHub commit activity GitHub last commit


QRTicketify

QRTicketify is a comprehensive, free, and open-source event management and ticketing platform built using Laravel (PHP framework) for the backend and React for the frontend. It allows administrators to create and manage events effortlessly while sending tickets to users via email. These tickets are generated as QR codes, which can be scanned and verified through the system at point-of-sale (POS) locations, ensuring a smooth and secure event entry process.

Image

  • QR Code Generation: Generates unique QR codes for tickets that can be sent to users via email.
  • POS Integration: Tickets can be scanned and verified at POS for event entry.
  • Email Notification: Automatically send email notifications with ticket information and updates.
  • Multiple Event Management: Admins can create and manage multiple events.

QRTicketify Installation Guide (Laravel 11)

The following installation steps are for Ubuntu OS only.

Dependencies

APT Update

sudo apt-get update && sudo apt-get -y upgrade

Install Curl

sudo apt-get -y install curl

Install Necessary Tools

sudo apt -y install software-properties-common curl apt-transport-https ca-certificates gnupg

Add Ondřej Surý PPA repository for PHP

sudo add-apt-repository -y ppa:ondrej/php

Add Chris-lea Redis Server repository

sudo add-apt-repository -y ppa:chris-lea/redis-server

Download MariaDB setup and install it

curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash

Install Dependencies (Updated for PHP 8.2, Laravel 11)

sudo apt -y install php8.2 php8.2-{cli,gd,mysql,pdo,mbstring,tokenizer,bcmath,xml,fpm,curl,zip} mariadb-server nginx tar unzip git redis-server npm

Install Composer

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

Downloading Project Files

Create a directory for the project

sudo mkdir -p /var/www/qrticketify
cd /var/www/qrticketify

Clone the QRTicketify repository

sudo git clone https://github.com/RyderAsKing/QRTicketify.git ./

Set permissions

sudo chmod -R 755 storage/* bootstrap/cache/

Storage Setup, Key Setup, and Package Installation

Copy .env file

cp .env.example .env

Install Composer dependencies

composer install --no-dev --optimize-autoloader

Install NPM dependencies

npm install express express-ws ws axios

Generate Application Key

php artisan key:generate --force

Create a symbolic link for storage

php artisan storage:link

Database Setup

Login as root in MySQL

sudo mysql -u root -p

Create the database and user

CREATE DATABASE qrticketify;
CREATE USER 'qrticketify'@'127.0.0.1' IDENTIFIED BY 'USE_YOUR_OWN_PASSWORD';
GRANT ALL PRIVILEGES ON qrticketify.* TO 'qrticketify'@'127.0.0.1';
FLUSH PRIVILEGES;

Configuration

Edit the .env file

sudo nano .env

Example .env variables:

APP_NAME=QRTicketify
APP_URL="http://yourdomain.com"

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=qrticketify
DB_USERNAME=qrticketify
DB_PASSWORD=USE_YOUR_OWN_PASSWORD

Email Configuration (optional)

Update the following values in .env:

MAIL_MAILER=smtp
MAIL_HOST=smtp.your_email_provider.com
MAIL_PORT=587
MAIL_USERNAME=your_email_username
MAIL_PASSWORD=your_email_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=[email protected]
MAIL_FROM_NAME="${APP_NAME}"

Running Migrations and Setting Up Permissions

Run migrations and seed the database

php artisan migrate --seed --force

Set correct ownership

sudo chown -R www-data:www-data /var/www/qrticketify

NGINX Configuration

Create an NGINX config file

sudo nano /etc/nginx/sites-available/qrticketify.conf

Paste the following configuration

server {
    listen 80;
    root /var/www/qrticketify/public;
    index index.php index.html index.htm index.nginx-debian.html;
    server_name yourdomain.com; # Change this

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

Enable the NGINX config

sudo ln -s /etc/nginx/sites-available/qrticketify.conf /etc/nginx/sites-enabled/qrticketify.conf

Check for NGINX errors

sudo nginx -t

Restart NGINX

sudo systemctl restart nginx

SSL (Optional but Recommended)

Install Certbot and setup SSL

sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com

Worker Setup

Create a supervisor configuration for Laravel Queue workers

sudo nano /etc/supervisor/conf.d/qrticketify-worker.conf

Add the following configuration

[program:qrticketify-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/qrticketify/artisan queue:work --tries=3
autostart=true
autorestart=true
user=www-data
numprocs=1
redirect_stderr=true
stdout_logfile=/var/www/qrticketify/worker.log

Reread the configuration and start the worker

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start qrticketify-worker:*

Finishing Up

Enable Maintenance Mode

sudo php artisan down

Update the project

sudo git stash
sudo git pull
sudo chmod -R 755 /var/www/qrticketify

Run database migrations

sudo php artisan migrate --seed --force

Clear Cache

sudo php artisan view:clear
sudo php artisan config:clear

Update dependencies

sudo composer install --no-dev --optimize-autoloader
npm install express express-ws ws axios

Update Permissions

sudo chown -R www-data:www-data /var/www/qrticketify

Restart Queue Workers

sudo php artisan queue:restart

Disable Maintenance Mode

sudo php artisan up

Debugging

To check the logs, use the following command to get the last 100 entries:

tail -n 100 /var/www/qrticketify/storage/logs/laravel.log | nc termbin.com 9999

About

QRTicketify is a platform that simplifies event ticketing by generating unique QR codes for attendees. These codes are sent via email, allowing for easy access and check-ins at events.

Resources

License

Stars

Watchers

Forks