G
GCX Pass
Installation Guide · v5.8

Installation

Get GCX Pass running in under 15 minutes.

A guided, automated wizard walks you through requirements, database setup, admin account, cron, and a 14-point post-install health check. This guide covers both shared-host (cPanel) and VPS deployments.

PHP 8.2+

MySQL 5.7+ / 8.0 · Apache or Nginx · ~200 MB disk

Zero CLI required

The web wizard runs migrations, seeders, and verifies your environment automatically.

14-point health check

Database, cron, mail, queue, push notifications — verified before you finish.

1 · Quick start

For experienced operators on a fresh server:

  1. Upload the release zip to your web root and extract it.
  2. Create a MySQL database and a user with full privileges on it.
  3. Visit https://yourdomain.com/install in a browser.
  4. Follow the wizard — it will migrate, seed, create your admin, configure cron and run a health check.
  5. Log in at /admin/login.
Don't forget the cron job. Many background features (scheduled reports, AI briefings, cleanup jobs) won't run without it. The wizard verifies this for you.

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):

  1. Create a new database, e.g. gcxpass
  2. Create a user, e.g. gcxpass_app with a strong password
  3. Grant all privileges on that database to the user
  4. Note the host (usually localhost or 127.0.0.1) and port (usually 3306)

5 · Run the installer wizard

Open https://yourdomain.com/install. The wizard runs ten steps:

  1. 1. Welcome
    Splash screen.
  2. 2. Requirements
    Verifies PHP version & extensions.
  3. 3. Permissions
    Checks writable folders (storage, cache).
  4. 4. Environment
    DB host, port, name, user, password.
  5. 5. Purchase code
    Activate your CodeCanyon licence.
  6. 6. Database
    Auto migrate + seed.
  7. 7. Admin user
    Replace the default seeded admin with your own credentials.
  8. 8. Cron
    Copy the cron line; the page verifies the first tick live.
  9. 9. Health check
    14 background checks across DB, mail, queue, push, cache, JWT…
  10. 10. Finished
    Jump 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.

CheckWhat it verifies
PHP versionRuntime ≥ 8.2
ExtensionsAll required ext_* are loaded
DatabasePDO can connect to the configured DB
MigrationsMigrations table is populated
Storage writablestorage/app, logs, framework, bootstrap/cache
Storage symlinkpublic/storage exists
Cache driverPut + get round-trip succeeds
Queue driverConnection resolves (sync/db/redis)
Mail configHost + from address look valid
Web Push VAPIDPublic + private keys present
JWT secretJWT_SECRET set
CronHeartbeat file fresh (≤ 120 s)
APP_KEYEncryption key generated
Admin userNon-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

  1. Back up your DB and .env.
  2. Upload the new release, overwriting files (keep your .env & storage/).
  3. Visit /update to 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
APP_URL in .env doesn't match the URL you used. Update it, then php artisan config:clear.
"Class 'Imagick' not found"
Install the Imagick PHP extension, or switch the QR driver to GD in config/image.php.
Cron heartbeat never turns green
Open Cron Jobs and confirm the line is saved exactly as shown — the most common error is missing cd. Wait up to 60 seconds and click Check now.
Permission denied writing to storage/
On VPS: 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
Delete the file storage/installed, then visit /install again.