Introduction
Connect is a premium, CodeCanyon-quality multi-tenant SaaS Employee Database Management System built using Laravel 12 and the elegant Tabler.io (Bootstrap 5) UI framework. Designed with a sleek dark-by-default, theme-aware HSL styling matching auth.glix.ae, Connect provides organizations with full-featured HR capabilities under a flexible subscription-based business model.
tenant_id column scoping strategy, making it clean and easy to maintain.
Core Features
- Single DB Tenancy: Isolated tenant accounts sharing a single MySQL database schema.
- Centralized Single Sign-On (SSO): PKCE-based OAuth flow connecting directly to
auth.glix.ae. - Dynamic Multi-Cloud Storage: Configure local storage, AWS S3, Wasabi, or Bunny.net dynamically per tenant.
- Leave Management: Leave requests with multi-level approval flow, automatic yearly allocations, and lazy self-healing leave balance initializers.
- Payroll & Payslips: Salary templates, custom structures, monthly calculation batches, and tables-based PDF payslips generated via DomPDF.
- Onboarding & Offboarding: Task checklists templates assigned dynamically to employees.
- SaaS Billing (AED): Plan-based subscriptions (Starter, Professional, Enterprise) billed in AED.
- GitHub Releases Auto-Update: Artisan-driven self-updating engine that checks, downloads, backs up, and applies updates seamlessly.
Installation
Connect comes with an interactive 5-step installer wizard that makes setting up the platform extremely simple.
Prerequisites
- PHP >= 8.2
- Composer
- MySQL >= 8.0
- A registered client on
auth.glix.aeSSO dashboard.
Step-by-Step Server Setup
- Extract the files into your local directory (e.g.
c:\xampp\htdocs\src\glix.ae\edocs.glix.ae). - Configure a local virtual host pointing to the
public/folder of the project (e.g.,http://edocs.glix.ae). - Navigate to
http://edocs.glix.aein your browser. Since the application is not yet installed, you will be redirected automatically to the installer wizard athttp://edocs.glix.ae/install.
The Installer Steps
- 1. Welcome: Starting point of the installer.
- 2. Requirements & Permissions: Checks that all required PHP extensions (OpenSSL, PDO, Mbstring, Tokenizer, XML, GD, BCMath, Zip) are installed and writable folder permissions are configured.
- 3. Database Configuration: Set DB credentials. The installer automatically creates the database if it does not exist, runs migrations, and seeds roles and permissions.
- 4. SSO & System Configuration: Input your application name, server URL, and SSO credentials.
- 5. Complete: Installation lock file (
storage/installed) is created and redirecting is opened to the main dashboard.
SSO Setup
Connect is configured to delegate authentication entirely to auth.glix.ae using the custom glix/sso-client SDK. This means local login forms are omitted in favor of modern, secure, and centralized sign-on.
OAuth App Configuration
Log in to your admin panel on auth.glix.ae and create a new client credential using the details below:
| Setting | Required Value / Format |
|---|---|
| Client Type | Confidential / PKCE Supported |
| Redirect URI | http://edocs.glix.ae/sso/callback |
| Allowed Scopes | openid profile email |
http:// or https:// protocols.
Multi-Tenancy
Multi-tenancy is handled via a single-database design. Every model that belongs to a tenant utilizes the custom BelongsToTenant trait.
namespace App\Traits;
use App\Scopes\TenantScope;
trait BelongsToTenant
{
protected static function bootBelongsToTenant()
{
static::creating(function ($model) {
if (app()->bound('tenant') && !$model->tenant_id) {
$model->tenant_id = app('tenant')->id;
}
});
static::addGlobalScope(new TenantScope);
}
}
This adds automatic tenant_id assignments and appends global filters to all database queries. You can bypass the global tenant filter for super-admin views by calling withoutGlobalScope(TenantScope::class).
Multi-Cloud Storage
Connect supports flexible file storage systems, allowing files to be written locally or pushed to S3, Wasabi, or Bunny.net CDN.
Storage Configuration Settings
Tenant Admins can specify their preferred disk in Settings. Starter/Professional plan data will fall back to local disk or a shared S3 bucket, while Enterprise plan tenants can input their own AWS S3, Wasabi bucket, or Bunny.net credentials dynamically:
- AWS S3: Key, Secret, Region, Bucket, Endpoint (optional)
- Wasabi: S3-compatible credentials with custom endpoint (e.g.
https://s3.wasabisys.com) - Bunny.net: Pull Zone, Storage Zone Name, Access Key (API Password)
App\Services\StorageDiskResolver, compiling filesystem configurations on the fly for each request.
Plans & Billing
Connect uses plan-based subscriptions billed in AED (UAE Dirham). Key subscription plans defined in the database include:
| Feature | Starter | Professional | Enterprise |
|---|---|---|---|
| Monthly Cost | Free | 99 AED | 299 AED |
| Max Employees | 10 | 100 | Unlimited |
| Allowed Departments | 3 | Unlimited | Unlimited |
| Storage Limit | 100 MB | 5 GB | Unlimited |
| Dynamic Cloud Storage | No (Local Only) | No (Local Only) | Yes (S3, Wasabi, Bunny) |
Employee Module
The core Employee directory contains comprehensive profile management with high-performance Excel imports/exports and Intervention Image avatar compression.
Tabbed Profile Layout
An employee profile includes 6 distinct tabs:
- Personal: General demographic fields, date of birth, gender, marital status.
- Address: Present and permanent residential addresses.
- Emergency Contacts: Family/friend names and phone numbers.
- Education: Academic credentials and diplomas.
- Experience: Previous professional work history.
- Documents: Uploaded ID proofs, contracts, and certifications.
Leave Management
Connect implements automatic yearly leave balances and a multi-level approval flow for leave requests.
Self-Healing Balances
To prevent database sync errors when employees are added or imported, the system uses a self-healing initialization method. If an employee applies for leave or views their profile, the system automatically checks if leave balance rows exist for the current year. If not, it self-heals by initializing default balances based on the tenant's leave policies.
Payroll Processing
The payroll module enables HR managers to define salary templates, assign structures, process monthly payroll runs, and download PDF payslips.
Onboarding Checklist
Connect helps organize new hire tasks via Onboarding/Offboarding templates.
- Create checklists for different roles (e.g. IT Setup, HR Forms, Security Briefing).
- Add individual tasks with descriptions.
- Assign checklists to employees.
- Track completion status of onboarding steps in real time.
GitHub Auto-Updater
Connect supports a premium self-updating SaaS architecture. System administrators can update Connect directly from the web panel, checking releases from the GitHub repository.
How it works:
- Admins click "System Updates" in Settings.
- The system queries the private GitHub Releases API using a secure PAT.
- If a newer semantic version is available, it displays the Release Markdown Changelog.
- Clicking "Update Now" triggers:
- An automatic codebase backup stored in
storage/app/backups/. - Downloading the zip package.
- Overwriting outdated system files (excluding local storage, logs, and `.env`).
- Running migrations, updating composer optimization, and caching routes.
- An automatic codebase backup stored in
# Check for updates via CLI
php artisan connect:check-update
# Run system update
php artisan connect:update
# Rollback to the latest working backup
php artisan connect:rollback
Troubleshooting
1. The website redirects to /install in a loop.
This means the lock file is missing or PHP does not have permission to write to storage. Ensure storage/ folder permissions are set to read/write/execute (775/777) for web server execution.
2. Single Sign-On throws "Client Redirect URI Mismatch".
Your local virtual host name or protocol differs from the Redirect URI registered on auth.glix.ae. Verify that the URL matches character-by-character.
3. Charts are blank or not rendering.
Ensure your browser is connected to the internet to load ApexCharts from the CDN script, and verify that you have configured at least one active department or approved leave request.