Fan Event Schedule
Schedule application for fan events
Built on Laravel REST API backend with a ReactJS frontend. Styled using Google's Material Design via MaterializeCSS.
Page Options:
- Home Page
- Schedule
- Exhibitors
- Rules & Policies
- Guests
- Maps
Schedule is laid out into a grid view or a list view. More views might be added in the future Provides social media links and other settings to set. Provides login functionality for admins to add, edit, delete content.
Requirements
- MySQL/MariaDB Server
- PHP >= 7.2.0
- PHP Extensions: BCMath, Ctype, JSON, Mbstring, OpenSSL, PDO, XML
- Composer
- NodeJS
Ubuntu 18.04 Installation with Nginx
- Make sure server is up to date
apt-get update && apt-get upgrade
- Instal NGINX
apt install nginx
&systemctl enable nginx.service
- Install MariaDB (newest version that supports large index keys by default)
apt-get install software-properties-common
apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
add-apt-repository "deb [arch=amd64,arm64,ppc64el] http://mariadb.mirror.liquidtelecom.com/repo/10.4/ubuntu $(lsb_release -cs) main"
apt update
apt install mariadb-server mariadb-client
systemctl enable mariadb.service
- Secure MariaDB installation
mysql_secure_installation
- Setup firewall
ufw app list
ufw allow OpenSSH
ufw allow 'Nginx HTTP'
ufw allow 'Nginx HTTPS'
ufw enable
ufw status
- Install PHP, extensions, and other tools
apt install php-fpm php-common php-mbstring php-xmlrpc php-soap php-gd php-xml php-mysql php-cli php-zip php-bcmath
apt install composer unzip
- Update PHP settings to process for Nginx
nano /etc/php/<version>/fpm/php.ini
memory_limit = 256M
upload_max_filesize = 64M
cgi.fix_pathinfo=0
- Clone repository into /var/www/html. Rename if you want to.
- Setup nginx to have permission over the folder
chown -R www-data:www-data /var/www/html/<Folder Name>
chmod -R 755 /var/www/html/<Folder Name>
- Setup nginx sites-available for folder. Create symbolic link to sites-enabled
- Restart Nginx to refresh changes
systemctl restart nginx.service
- Go into MariaDB and create a new database for the website
CREATE DATABASE <database name>;
Installation
- Go into folder
- Install composer modules
- Development:
composer install
- Production:
composer install --no-dev --optimize-autoloader
- Development:
- Install node modules
npm install
- Development:
npm run dev
ornpm run watch
- Production:
npm run prod
- Change
.env.example
file into.env
- Update entries within the
.env
file to match database and other information- If in production, be sure to set
APP_ENV=production
andAPP_DEBUG=false
- Update
MIX_EVENT_NAME
with your event name in quotes
- If in production, be sure to set
- Generate a new key
php artisan key:generate
- Create database tables
php artisan migrate
- If you want it seeded, then
php artisan migrate --seed
- You can wipe and seed again by doing
php artisan migrate:fresh --seed
- Generate encryption keys for API Auth
php artisan passport:install
- Create user account by sending register email and password to api url
- Send
email
,password
,c_password
to/api/register
via POST form-data curl -X POST -F 'email=<email>' -F 'password=<password>' -F 'c_password=<password>' http://localhost/api/register
- Send
To-Do
Additional Items
- Setup Redis cache
- Setup Event Types
- Setup Exhibitor Types
- Setup Guest Types
- Setup Settings configuration
- Setup Locations configuration
-
- My Schedule
- Ability to add events to personal schedule
- Probably use localStorage to store