S1 Recruitment System Manager is a simple applicant tracking system for HR teams, recruiters, and consulting companies.
It helps manage companies, jobs, candidates, applications, interviews, reports, uploaded documents, and basic system settings.
The project has two parts:
- Laravel 11 backend API
- Vue 2 frontend single-page app
Authentication uses Laravel Sanctum API bearer tokens.
- Public job listing page
- Candidate registration and login
- Candidate profile with document upload
- Candidate applied jobs section
- Job application flow from public jobs
- Admin dashboard with charts and activity widgets
- Company management
- User and candidate management
- Job management
- Job application management
- Interview management with interview stages and statuses
- Reports for candidates and jobs
- Master setup modules:
- Experience Levels
- Qualifications
- Interview Stages
- Job Departments
- Document Types
- System settings for app name, URL, logo text, home page title, application prefix, about page content, and email verification behavior
- CSV and PDF export in admin modules
- Clean BootstrapVue based admin UI
vue-selectfor select boxesvue2-datepickerfor date and date-time fields- Highcharts dashboard charts
Backend:
- PHP 8.2 or higher
- Composer
- MySQL
- Common Laravel extensions such as OpenSSL, PDO, Mbstring, Tokenizer, XML, Ctype, JSON, and BCMath
Frontend:
- Node.js 20, 21, or 22
- npm 10 or higher
The frontend package is configured with:
"engines": {
"node": ">=20 <23",
"npm": ">=10"
}Install PHP dependencies from the project root:
composer installCreate the backend environment file:
cp .env.example .envGenerate the Laravel app key:
php artisan key:generateUpdate these values in .env:
APP_NAME=ATS
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost:8000
FRONT_APP_URL=http://localhost:8080/
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database_name
DB_USERNAME=your_database_user
DB_PASSWORD=your_database_passwordRun migrations and seed data:
php artisan migrate --seedCreate the storage symlink:
php artisan storage:linkMake sure Laravel can write to these folders:
chmod -R 775 storage bootstrap/cacheGo to the frontend folder:
cd frontCreate the frontend environment file:
cp .env.example .envFor local development, the frontend .env usually looks like this:
VUE_APP_API_URL=http://localhost:8000
VUE_APP_DEV_SERVER_HOST=localhost
VUE_APP_DEV_SERVER_PORT=8080Install frontend dependencies:
npm installStart the Laravel backend from the project root:
php artisan serveBackend URL:
http://localhost:8000
Start the Vue frontend in another terminal:
cd front
npm run serveFrontend URL:
http://localhost:8080
If you changed VUE_APP_DEV_SERVER_PORT, use that port instead.
After running seeders, use this admin account:
Email: admin@admin.com
Password: password
This project uses Laravel Sanctum API bearer tokens.
Passport is not used anymore.
The frontend stores the authenticated user and token in browser storage and sends the token with API requests.
Runtime app settings are stored in:
public/settings.json
front/public/settings.json
Important settings:
app_namecontrols the app nameapp_urlcontrols the API base URL fallbacktext_logo_part_oneandtext_logo_part_twocontrol logo texthome_page_titlecontrols the public jobs page titlejob_application_number_prefixcontrols generated application numbersuser_has_to_verify_email_after_registercontrols candidate email verification
Email is used for:
- Candidate email verification
- Forgot password
- Reset password
Update mail settings in .env:
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_FROM_ADDRESS=hello@example.com
MAIL_FROM_NAME="${APP_NAME}"Build the frontend:
cd front
npm run buildThe build command writes compiled frontend assets into Laravel public/.
For production, point the web server document root to:
public/
Clear Laravel cache:
php artisan optimize:clearRun backend tests:
php artisan testOptional local asset helper:
php artisan ats:make-symbolic-linkIf the frontend still calls http://localhost:8000:
- Check
front/.env - Make sure
VUE_APP_API_URLis correct - Restart
npm run serveafter changing.env - Check
front/public/settings.jsonbecause it is used as a fallback
If registration or forgot password fails:
- Check backend logs in
storage/logs/laravel.log - Confirm mail settings are correct
- Confirm
APP_URLandFRONT_APP_URLare correct
If uploaded files are not opening:
php artisan storage:linkIf frontend install fails because of Node:
- Use Node.js 20, 21, or 22
- Use npm 10 or higher
- Run
npm installinside thefrontfolder
This project is open-source under the MIT license.


