SupportHubCX Platform Docs
v1.0.0 Public Support Open App

Requirements

SupportHub is a Laravel 12 application. The installer checks the critical runtime requirements before setup, but production environments should also meet the operational requirements below.

Server Requirements

RequirementValueNotes
PHP8.2 or newerMatches composer.json.
DatabaseMySQL or compatibleThe installer writes database values to .env and runs migrations.
Web root/publicThe domain or local virtual host must point to Laravel's public directory.
Writable pathsstorage/, bootstrap/cacheThe installer checks these plus framework cache, sessions, views, and logs.
Queuesync, database, Redis, or another Laravel queue driverProduction installs should run a worker for mail, reports, and async tasks.
SchedulerCron every minuteRequired for SLA checks, scheduled reports, and time-based automations.

PHP Extensions

The installer verifies these extensions: openssl, pdo, mbstring, tokenizer, xml, ctype, json, bcmath, and fileinfo.

Composer and Frontend Assets

The app uses Laravel, Spatie Permission, DomPDF, Laravel Excel, Google2FA, Twilio SDK, Vite, Bootstrap Icons, Flatpickr, Select2, and intl-tel-input. On a fresh deployment, run dependency installation and build assets before opening the installer unless your package already ships with built assets.

composer install --no-dev --optimize-autoloader
npm install
npm run build

Background Jobs and Scheduler

Configure one Laravel scheduler entry on the server. This cron entry wakes Laravel every minute; Laravel then decides which app command is due.

* * * * * cd /path/to/supporthub && /usr/bin/php artisan schedule:run >> /dev/null 2>&1

The app scheduler runs these commands:

  • tickets:check-sla every five minutes.
  • tickets:run-automations every five minutes.
  • reports:send-scheduled hourly.

To test scheduled reports manually, run this from the project root:

php artisan reports:send-scheduled

If the command prints Sent 0 scheduled reports., the command is working but no active schedule was due at that moment, or the due schedules had no deliverable recipients.

If QUEUE_CONNECTION is not sync, also run a queue worker or process manager:

php artisan queue:work --tries=3 --timeout=120

Mail and Storage

  • Email is required for password reset, OTP, report delivery, ticket activity messages, and requester portal flows.
  • Run php artisan storage:link when public storage assets or attachments must be served through the web server.
  • Attachment upload validation allows common image, document, spreadsheet, archive, video, and audio files up to 50 MB per file in ticket flows.
  • In-app consultation recordings are stored on the private local disk under storage/app/private/ticket-video-recordings/{ticket}/{consultation}. Do not expose this folder through the public storage link.
  • Plan database and storage backups for consultation recordings because browser video files can become large on long sessions.

Browser Support

Use a current Chromium, Firefox, Safari, or Edge browser. The admin UI uses modern JavaScript for async tables, ticket collaboration, form controls, workflow boards, WebRTC video rooms, and MediaRecorder-based consultation recording.

Production video consultations should run over HTTPS so browsers allow camera, microphone, and screen/media capture APIs. Add TURN infrastructure when participants commonly join from strict corporate networks or mobile NATs.