Email, queues & real-time services
Configure the provider's SMTP host, port, credentials and sender address in private configuration. Match transport/encryption settings to the supplied config/mail.php. Verify the sender domain and test real inbox delivery. log and array mailers do not deliver email.
Test password recovery and confirm the email link opens the reachable HTTPS application hostname.
Queue worker
For a database queue, apply its migrations and supervise a worker from backend:
php artisan queue:work --sleep=3 --tries=3 --timeout=90
Ensure queue retry_after exceeds the worker timeout. Run with access to storage/configuration. Use systemd, Supervisor or the host's worker manager to restart on failure and reboot. After code deployment:
php artisan queue:restart
php artisan queue:failed
The sync queue runs jobs inline; it does not demonstrate asynchronous worker health.
Scheduler
Add a cron entry every minute:
* * * * * cd /srv/open-core-hr/backend && /path/to/php artisan schedule:run >> /srv/open-core-hr/backend/storage/logs/scheduler.log 2>&1
Replace paths, monitor/rotate logs, review php artisan schedule:list and confirm timezones. Modules can contribute additional schedules when enabled.
Real-time services
Configure REVERB_* and public VITE_REVERB_* before building assets. Keep private Reverb secrets out of frontend variables. Supervise php artisan reverb:start and configure HTTPS/WSS proxying with WebSocket upgrade headers. Restart long-running services after configuration changes.
Microsoft 365, Firebase and other external providers need customer-owned credentials and separate live acceptance. Do not ship configured service accounts.