Health Center.
System diagnostics dashboard for monitoring your Reward Loyalty installation.
The Health Center is a read-only diagnostics dashboard available to super administrators. It runs real-time checks against your server environment, database, storage, and services, helping you identify and resolve configuration issues before they affect your users.
Accessing the Health Center
Navigate to Admin → Health Center in the sidebar. The Health Center is only visible to super administrators (role 1).
A JSON endpoint is also available at /{locale}/admin/health/json for programmatic monitoring or external uptime tools.
What Gets Checked
The Health Center runs 15 diagnostic checks across 5 categories:
Environment
| Check | What It Verifies |
|---|---|
| PHP Version | PHP 8.2+ recommended, 8.1+ required |
| PHP Extensions | All 12 required extensions are loaded |
| Disabled Functions | proc_open, proc_close, exec, shell_exec are available |
Application
| Check | What It Verifies |
|---|---|
| APP_URL | Matches the current request URL |
| Debug Mode | Disabled in production (prevents exposing sensitive data) |
| HTTPS | Active for production environments |
| App Version | Current installed version |
Database
| Check | What It Verifies |
|---|---|
| Connection | Database is reachable |
| Version | Database server version (MySQL, MariaDB, SQLite) |
| Migrations | All migrations are applied, none pending |
Storage
| Check | What It Verifies |
|---|---|
| Writable Directories | All 6 required directories are writable |
| Storage Symlink | public/storage symlink exists |
Services
| Check | What It Verifies |
|---|---|
| Queue Driver | Queue is configured and processing jobs |
| Mail Driver | Mail transport is configured for transactional email |
| Cron / Scheduler | Laravel scheduler is running via cron |
Status Levels
Each check reports one of three statuses:
- OK — Check passed, no action needed
- Warning — Non-critical issue that should be reviewed
- Critical — Requires immediate attention
The summary cards at the top show the total count for each status level.
Cron / Scheduler (Recommended)
Reward Loyalty uses Laravel's task scheduler for background operations. All core loyalty features work without cron — it is recommended for automated maintenance, not required.
What the scheduler handles:
- OTP cleanup — removes expired one-time passwords hourly
- Stamp card expiration — processes expired stamps daily at 03:00
- Demo refresh — resets demo data daily (demo mode only)
- Health heartbeat — writes a timestamp every minute for diagnostics
To enable the scheduler, add this cron entry to your server:
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
On cPanel, use the Cron Jobs interface to add this command with a "Once Per Minute" frequency.
If the scheduler is not configured, the Health Center will show a warning. OTP codes will still expire on their own, but cleanup (freeing database space) and scheduled stamp card expirations won't run automatically.
Queue Driver Guidance
Reward Loyalty uses queued jobs for email delivery, notifications, and integrations. The queue driver determines how these jobs are processed:
| Driver | Behavior | Recommended For |
|---|---|---|
| Sync | Jobs run immediately during the HTTP request | Single-business installs, shared hosting |
| Database | Jobs are stored in the database and processed by a worker | Multi-partner installs, moderate traffic |
| Redis | Jobs are stored in Redis and processed by a worker | SaaS operators, high-volume deployments |
| Null | Jobs are silently discarded (⚠️ warning) | Testing only — mail and notifications will not be sent |
For most self-hosted installs, sync is perfectly fine. The application works correctly with sync queues — jobs simply run inline instead of being deferred. If you notice slow page loads when sending email or processing large batches, switch to database and run a queue worker.
To start a queue worker (for database or Redis drivers):
php artisan queue:work --sleep=3 --tries=3
On production servers, use a process manager like Supervisor to keep the worker running.
JSON API
The Health Center JSON endpoint returns structured diagnostic data:
GET /{locale}/admin/health/json
Response:
{
"success": true,
"data": {
"checks": [
{
"category": "environment",
"label": "PHP Version",
"status": "ok",
"value": "8.4.1",
"detail": null
}
],
"summary": {
"ok": 14,
"warning": 1,
"critical": 0,
"total": 15
}
}
}
This endpoint requires admin authentication and super administrator role.