1 · Quick start
For experienced operators on a fresh server:
- Upload the release zip to your web root and extract it.
- Create a MySQL database and a user with full privileges on it.
- Visit
https://yourdomain.com/installin a browser. - Follow the wizard — it will migrate, seed, create your admin, configure cron and run a health check.
- Log in at
/admin/login.
2 · Requirements
Server
- ✓ PHP 8.2 or higher
- ✓ MySQL 5.7+ / MariaDB 10.4+ / MySQL 8
- ✓ Apache (mod_rewrite) or Nginx
- ✓ HTTPS strongly recommended (push notifications require it)
PHP extensions
- openssl · pdo · pdo_mysql · mbstring
- tokenizer · json · curl · xml · ctype
- bcmath · zip · gd (or Imagick)
- fileinfo · intl (recommended)
3 · Upload & unpack
Choose whichever path matches your hosting.
cPanel / shared hosting click to toggle
1. Open File Manager, navigate to public_html (or a subfolder).
2. Upload the release zip and choose Extract.
3. Point your domain's document root at .../gcxpass/public. If you can't change document root, copy the contents of public/ to public_html/ and edit index.php to point at the moved vendor/ and bootstrap/.
VPS (Ubuntu + Nginx) click to toggle
cd /var/www
unzip gcxpass-release.zip -d gcxpass
sudo chown -R www-data:www-data gcxpass
sudo chmod -R 775 gcxpass/storage gcxpass/bootstrap/cache
4 · Create the database
From cPanel → MySQL Databases (or your hosting panel):
- Create a new database, e.g.
gcxpass - Create a user, e.g.
gcxpass_appwith a strong password - Grant all privileges on that database to the user
- Note the host (usually
localhostor127.0.0.1) and port (usually3306)
5 · Run the installer wizard
Open https://yourdomain.com/install. The wizard runs ten steps:
- 1. WelcomeSplash screen.
- 2. RequirementsVerifies PHP version & extensions.
- 3. PermissionsChecks writable folders (storage, cache).
- 4. EnvironmentDB host, port, name, user, password.
- 5. Purchase codeActivate your CodeCanyon licence.
- 6. DatabaseAuto migrate + seed.
- 7. Admin userReplace the default seeded admin with your own credentials.
- 8. CronCopy the cron line; the page verifies the first tick live.
- 9. Health check14 background checks across DB, mail, queue, push, cache, JWT…
- 10. FinishedJump straight to
/admin/login.
Steps 7–9 are unique to GCX Pass and are highlighted above.
6 · Set up cron
The cron step displays the exact line for your server. For a typical cPanel host it looks like:
* * * * * cd /home/USER/public_html && /usr/local/bin/php artisan schedule:run >> /dev/null 2>&1
Add it via cPanel → Cron Jobs → Add New (set every field to *) or crontab -e on a VPS. The installer polls a heartbeat file every 10 s and turns green once the first tick lands (≤ 60 s).
7 · Health check (14 points)
The wizard runs these checks in the browser and renders a pass/warn/fail table you can re-run.
| Check | What it verifies |
|---|---|
| PHP version | Runtime ≥ 8.2 |
| Extensions | All required ext_* are loaded |
| Database | PDO can connect to the configured DB |
| Migrations | Migrations table is populated |
| Storage writable | storage/app, logs, framework, bootstrap/cache |
| Storage symlink | public/storage exists |
| Cache driver | Put + get round-trip succeeds |
| Queue driver | Connection resolves (sync/db/redis) |
| Mail config | Host + from address look valid |
| Web Push VAPID | Public + private keys present |
| JWT secret | JWT_SECRET set |
| Cron | Heartbeat file fresh (≤ 120 s) |
| APP_KEY | Encryption key generated |
| Admin user | Non-default admin account exists |
8 · First-login checklist
- 1 Visit Settings → Company; upload your logo and set timezone (
Africa/Accra). - 2 Create departments, designations, then employees (or bulk-import — see User Guide).
- 3 Configure SMTP under Settings → Mail and send a test message.
- 4 Enable push notifications in the navbar (browser will prompt for permission).
- 5 Create a reception user and walk through a visitor sign-in to confirm the flow end-to-end.
9 · Mail & notifications
Set these in your .env (the wizard writes the DB section; mail is configured later):
MAIL_MAILER=smtp
MAIL_HOST=smtp.your-provider.com
MAIL_PORT=587
MAIL_USERNAME=you@yourdomain.com
MAIL_PASSWORD=•••
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=noreply@yourdomain.com
MAIL_FROM_NAME="GCX Pass"
10 · Web Push (VAPID)
Generate VAPID keys once. They get written into your .env automatically:
php artisan push:vapid-keys --write
Push requires HTTPS. On localhost, Chrome treats http://localhost as secure; ngrok works for testing real devices.
11 · Updates & backups
Updates
- Back up your DB and
.env. - Upload the new release, overwriting files (keep your
.env&storage/). - Visit
/updateto run the migration script.
Backups
mysqldump -u USER -p DB > backup.sql
tar -czf storage.tgz storage/app/public
12 · Troubleshooting
"This page isn't redirecting properly" after install
.env doesn't match the URL you used. Update it, then php artisan config:clear."Class 'Imagick' not found"
config/image.php.Cron heartbeat never turns green
cd. Wait up to 60 seconds and click Check now.Permission denied writing to storage/
sudo chown -R www-data:www-data storage bootstrap/cache. On cPanel: set folder permissions to 755 and files to 644 from File Manager.Need to re-run the installer
storage/installed, then visit /install again.