Setup Guide

From zip file to running app

Eight steps, no build tools, about five minutes if your server already has PHP and Composer ready.

1 Requirements2 Install3 Environment4 Database 5 Storage6 AI (optional)7 Serve8 First Login
1

Check requirements

Make sure your server or local machine has:

  • PHP 8.2 or higher
  • Composer 2.x
  • MySQL 5.7+ (or SQLite for a quick local trial)
  • PHP extensions: mbstring, openssl, pdo, tokenizer, xml, ctype, json, fileinfo, gd
2

Install dependencies

Unzip the project, then install PHP packages with Composer:

cd hr-payroll-suite
composer install
This downloads Laravel and everything the app depends on — including PDF generation and Excel export packages — into a fresh vendor/ folder.
3

Configure your environment

Copy the example environment file and generate an application key:

cp .env.example .env
php artisan key:generate

Then open .env and fill in your database connection:

KeyExample
DB_CONNECTIONmysql
DB_HOST127.0.0.1
DB_PORT3306
DB_DATABASEhr_payroll
DB_USERNAMEroot
DB_PASSWORDyour password
Set APP_DEBUG=false and APP_ENV=production once you deploy for real customers — never ship a live site with debug mode on.
4

Create the database

Create an empty database matching DB_DATABASE, then run migrations. Add --seed to include demo companies, roles and sample data:

php artisan migrate --seed
5

Link storage

Employee documents, avatars and generated payslips need a public symlink:

php artisan storage:link
6

Turn on AI features (optional)

Skip this step entirely if you don't need the AI assistant — everything else works without it. To enable it:

  • Log in as a Company Admin
  • Go to Settings → AI Features
  • Paste your Anthropic API key and switch AI on
Each company keeps its own API key. There's nothing to configure in .env for this step.
7

Serve the application

For local testing, the built-in server is enough:

php artisan serve

For production, point your Apache or Nginx document root at the project's /public folder instead — never the project root.

8

Log in for the first time

If you ran the seeder, a demo Super Admin account is ready. Otherwise, create one:

php artisan tinker
>>> \App\Models\User::create([
  'name' => 'Super Admin',
  'email' => 'admin@yourcompany.com',
  'password' => bcrypt('change-this-password'),
  'role' => 'super_admin',
  'is_active' => true,
]);

Log in, then go to Companies → New Company to create your first tenant, followed by Users → New User to create its Company Admin.

Common issues

"Target class [dompdf.wrapper] does not exist" — your package cache predates installing dependencies. Run composer install, then php artisan config:clear && php artisan package:discover.
A Super Admin sees empty pages — Super Admin accounts aren't tied to one company. Select a company from the switcher first, or log in as that company's Company Admin instead.

You're set up. Now make it yours.

Head to the documentation to learn every module in depth, or jump straight into the app.

Read the Docs