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.
- 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.
The following installation steps are for Ubuntu OS only.
sudo apt-get update && sudo apt-get -y upgrade
sudo apt-get -y install curl
sudo apt -y install software-properties-common curl apt-transport-https ca-certificates gnupg
sudo add-apt-repository -y ppa:ondrej/php
sudo add-apt-repository -y ppa:chris-lea/redis-server
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
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
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
sudo mkdir -p /var/www/qrticketify
cd /var/www/qrticketify
sudo git clone https://github.com/RyderAsKing/QRTicketify.git ./
sudo chmod -R 755 storage/* bootstrap/cache/
cp .env.example .env
composer install --no-dev --optimize-autoloader
npm install express express-ws ws axios
php artisan key:generate --force
php artisan storage:link
sudo mysql -u root -p
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;
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
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}"
php artisan migrate --seed --force
sudo chown -R www-data:www-data /var/www/qrticketify
sudo nano /etc/nginx/sites-available/qrticketify.conf
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;
}
}
sudo ln -s /etc/nginx/sites-available/qrticketify.conf /etc/nginx/sites-enabled/qrticketify.conf
sudo nginx -t
sudo systemctl restart nginx
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com
sudo nano /etc/supervisor/conf.d/qrticketify-worker.conf
[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
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start qrticketify-worker:*
sudo php artisan down
sudo git stash
sudo git pull
sudo chmod -R 755 /var/www/qrticketify
sudo php artisan migrate --seed --force
sudo php artisan view:clear
sudo php artisan config:clear
sudo composer install --no-dev --optimize-autoloader
npm install express express-ws ws axios
sudo chown -R www-data:www-data /var/www/qrticketify
sudo php artisan queue:restart
sudo php artisan up
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