JobsPortal Logo

JobsPortal Documentation

Complete Guide for Installation, Configuration & Usage

Version 6.2 - Updated December 2025

Overview

Thank you for purchasing JobsPortal! This comprehensive job portal system provides a complete platform for connecting employers with job seekers.

What's Included

  • Complete Laravel-based job portal system
  • Admin panel with full control
  • Employer dashboard for job posting
  • Jobseeker dashboard with profile management
  • Advanced package system with multiple payment gateways
  • Resume/CV builder and management
  • Job application tracking system
  • Multi-language support
  • SEO optimized pages
  • Responsive design for all devices

Key Features

Admin Panel

Complete control over users, jobs, packages, and site settings

Employer Dashboard

Post jobs, manage applications, search resumes, and more

Jobseeker Dashboard

Build profile, upload CVs, apply for jobs, track applications

Package System

Flexible packages for employers and jobseekers with multiple plans

Payment Integration

PayPal, Stripe, Razorpay, Paytm, PayU, Paystack support

Analytics & Reporting

Track job views, applications, revenue, and more

Version Information

Property Details
Version 6.2 (December 2025)
Framework Laravel 8.x / 9.x / 10.x Compatible
PHP Version PHP 7.4+ / 8.0+ / 8.1+ / 8.2+
Database MySQL 5.7+ / MariaDB 10.2+
License Extended License (CodeCanyon)
Important Note: Before installation, please ensure your server meets all requirements listed in the "Server Requirements" section. Customization and advanced modifications are available as paid freelance work.

Server Requirements

JobsPortal requires a web server with the following specifications:

Minimum Requirements

PHP Requirements

  • PHP Version: 7.4 or higher (8.0, 8.1, 8.2 recommended)
  • Extensions Required:
    • BCMath PHP Extension
    • Ctype PHP Extension
    • Fileinfo PHP Extension
    • JSON PHP Extension
    • Mbstring PHP Extension
    • OpenSSL PHP Extension
    • PDO PHP Extension
    • Tokenizer PHP Extension
    • XML PHP Extension
    • GD Library / Imagick (for image processing)
    • cURL Extension
    • Zip Extension

Database Requirements

  • MySQL: Version 5.7 or higher
  • MariaDB: Version 10.2 or higher
  • Collation: utf8mb4_unicode_ci (recommended)
  • Permissions: CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT

Web Server

  • Apache 2.4+ with mod_rewrite enabled
  • Nginx 1.10+ (alternative to Apache)
  • Document Root: Must point to /public directory

Server Configuration

  • Memory Limit: 256M or higher (512M recommended)
  • Max Execution Time: 300 seconds or higher
  • Max Upload Size: 10M or higher (for CV uploads)
  • Max Post Size: 20M or higher
Recommended Hosting: VPS or Dedicated hosting for production use. Shared hosting may work but could have performance limitations.

Installation Guide

Follow these steps carefully to install JobsPortal on your server:

1

Upload Files to Server

Upload all files from the JobsPortal folder to your server's web directory.

  • Via FTP: Upload to public_html or your domain folder
  • Via cPanel File Manager: Upload and extract ZIP file
  • Ensure all files including hidden files (.env, .htaccess) are uploaded
2

Create Database

Create a new MySQL database and user:

  1. Login to cPanel or phpMyAdmin
  2. Go to MySQL Databases
  3. Create a new database (e.g., jobsportal_db)
  4. Create a new user with a strong password
  5. Add user to database with ALL PRIVILEGES
3

Import Database

Import the provided SQL file:

  1. Open phpMyAdmin
  2. Select your newly created database
  3. Click on "Import" tab
  4. Choose file: jobsportal.sql
  5. Click "Go" and wait for import to complete
Success: You should see a message confirming successful import of all 74 tables.
4

Configure Environment

Update the .env file with your settings:

APP_NAME="JobsPortal"
APP_ENV=production
APP_DEBUG=false
APP_URL=https://yourdomain.com
ASSET_URL=https://yourdomain.com

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_password
Security: Never set APP_DEBUG=true on production servers!
5

Set Directory Permissions

Set proper permissions for Laravel directories:

chmod -R 755 storage bootstrap/cache
chmod -R 775 storage/logs storage/framework
  • storage/ - Must be writable (755 or 775)
  • bootstrap/cache/ - Must be writable (755)
  • public/ - Writable for image uploads (755)
6

Run Composer Install

Install all PHP dependencies:

composer install --optimize-autoloader --no-dev
Note: If you don't have Composer installed, download it from getcomposer.org
7

Generate Application Key

Generate a unique application key:

php artisan key:generate
8

Clear Cache & Optimize

Clear all cache and optimize the application:

php artisan config:clear
php artisan cache:clear
php artisan view:clear
php artisan route:clear
Installation Complete! Your JobsPortal should now be accessible at your domain. Default admin credentials are provided in the database.

Configuration

Default Admin Credentials

URL https://yourdomain.com/admin
Email buyer@buyer.com
Password buyer123456
Security Alert: Change the default admin password immediately after first login!

Site Settings Configuration

Configure your site through the admin panel:

  1. Login to Admin Panel
  2. Navigate to Site Settings
  3. Update the following:
    • Site Name & Logo
    • Contact Information
    • Social Media Links
    • Default Currency & Language
    • Email Settings
    • SEO Settings (Meta tags, titles)

Payment Gateway Configuration

Enable and configure payment gateways in Admin > Site Settings > Payment Gateways:

PayPal Configuration

  • Enable PayPal: Yes/No
  • PayPal Mode: sandbox or live
  • Client ID: Your PayPal Client ID
  • Secret: Your PayPal Secret Key

Stripe Configuration

  • Enable Stripe: Yes/No
  • Publishable Key: Your Stripe Publishable Key
  • Secret Key: Your Stripe Secret Key

Razorpay Configuration

  • Enable Razorpay: Yes/No
  • Key ID: Your Razorpay Key ID
  • Key Secret: Your Razorpay Key Secret
Testing Payments: Use sandbox/test mode for all gateways before going live. Each gateway provides test credentials for development.

Email Configuration

Configure email settings in Admin > Site Settings > Email Settings:

  • SMTP Host: Your email server host
  • SMTP Port: Usually 587 or 465
  • SMTP Username: Your email address
  • SMTP Password: Your email password or app password
  • SMTP Encryption: TLS or SSL
  • From Email: noreply@yourdomain.com
  • From Name: JobsPortal
Gmail Users: You need to use "App Password" instead of your regular Gmail password. Enable 2-factor authentication and generate an app password from your Google account settings.

Admin Panel Features

The admin panel provides complete control over the entire job portal system.

Dashboard Overview

The admin dashboard displays key statistics and quick access to important features:

  • Total users, companies, and jobs
  • Recent registrations and applications
  • Revenue statistics from packages
  • System health indicators

User Management

Manage Jobseekers

  • View All Users: See complete list with filters
  • Add New User: Create jobseeker accounts manually
  • Edit User: Update profile information
  • Assign Packages: Give packages to users directly NEW
  • View Applications: See all job applications by user
  • Payment History: Complete transaction history NEW

Manage Companies

  • View All Companies: List with search and filters
  • Approve/Reject: Verify company registrations
  • Edit Company: Update company details
  • Assign Packages: Assign job or CV search packages
  • Payment History: Track all company payments NEW
  • Document Verification: Review uploaded documents

Job Management

  • View All Jobs: Active and expired jobs
  • Edit Jobs: Modify job details
  • Delete Jobs: Remove unwanted postings
  • Feature Jobs: Make jobs featured/premium
  • Approve Jobs: Review and approve posted jobs

Package Management

  • Create Packages: Define packages for employers and jobseekers
  • Package Types:
    • Employer Job Posting Packages
    • Employer CV Search Packages
    • Jobseeker Application Packages
    • Jobseeker Featured Profile Packages NEW
  • Pricing: Set custom prices and durations
  • Quotas: Define job posting or application limits

Payment History NEW

Comprehensive payment tracking system for better financial management:

Company Payment History

  • View all company package purchases
  • Filter by company name, email, package type
  • Separate entries for job and CV packages
  • See payment methods (Stripe, PayPal, Admin Assigned, etc.)
  • Track start dates, end dates, and status
  • Revenue statistics dashboard
  • Detailed popup with complete transaction info

Jobseeker Payment History

  • View all jobseeker package purchases
  • Filter by name, email, package
  • Track application packages and featured profiles
  • See payment methods or admin assignments
  • Monitor subscription status (active/expired)
  • Complete user details in popup view

Content Management

  • Blog Management: Create and manage blog posts
  • CMS Pages: About Us, Terms, Privacy, etc.
  • Testimonials: Add customer testimonials
  • FAQ: Manage frequently asked questions
  • Sliders: Homepage carousel slides

Master Data Management

Locations

Countries, States, Cities

Job Attributes

Types, Shifts, Experiences

Industries

Industry sectors & areas

Skills

Job skills management

Education

Degrees, Levels, Subjects

Languages

Site & skill languages

SEO Management

  • Meta titles and descriptions for all pages
  • Dynamic SEO based on job attributes
  • XML sitemap generation
  • Robots.txt configuration

Employer Features

Comprehensive features for companies to manage their recruitment process:

Company Registration & Profile

  • Self-registration with email verification
  • Complete company profile setup
  • Document upload (incorporation, tax clearance, etc.)
  • Social media integration
  • Company logo and cover image

Job Posting

  • Create Jobs: Comprehensive job posting form
  • Job Details: Title, description, benefits, requirements
  • Salary Information: Range, currency, period (or hide salary)
  • Location: Country, state, city selection
  • Job Attributes: Type, shift, experience level, career level
  • Skills Required: Multiple skill selection
  • Expiry Date: Auto or manual expiration
  • Featured Jobs: Mark jobs as premium/featured

Manage Posted Jobs

  • View All Jobs: Active and expired jobs in separate tabs
  • Edit Jobs: Update job details anytime
  • Delete Jobs: Remove old postings
  • Job Statistics: NEW
    • Total Visitors (view count)
    • Applied Candidates (application count)
  • Repost Jobs: Republish expired jobs

Application Management

  • View Applications: See all candidates who applied
  • Candidate Profiles: View full profiles and CVs
  • Application Status: Update status (Applied, Shortlisted, Hired, Rejected)
  • Email Notifications: Auto-send status update emails to candidates UPDATED
  • Download CVs: Download candidate resumes
  • Send Messages: Direct messaging with candidates

Resume Search (CV Packages)

  • Search Resumes: Find candidates by skills, location, experience
  • Advanced Filters: Industry, education, career level
  • View Profiles: Access full candidate profiles
  • Unlock Profiles: Use CV package quota to unlock profiles
  • Download CVs: Get candidate resumes after unlocking
  • Save Favorites: Bookmark candidates for later

Package Management

  • Purchase Packages: Buy job posting or CV search packages
  • View Package Details: See active package info with beautiful card design UPDATED
  • Package Quotas: Track used vs available quota
  • Expiry Alerts: Warnings when package is about to expire
  • Payment History: View all past transactions NEW

Company Dashboard Stats

Visual dashboard with key metrics:

  • Total Jobs Posted
  • Active Jobs Count
  • Total Applications Received
  • Profile Views
  • Company Followers
  • Package Status & Quota

Jobseeker Features

Powerful features for job seekers to find and apply for jobs:

Profile Management

  • Personal Information: Name, contact, photo, location
  • Summary: Professional summary/objective
  • Experience: Work history with dates and descriptions
  • Education: Academic qualifications and certificates
  • Skills: Technical and soft skills
  • Languages: Language proficiency levels
  • Projects: Portfolio projects with images
  • Profile Completion: Progress indicator

Resume/CV Management

  • Upload CVs: Multiple CV uploads supported
  • CV Builder: Create resume using profile data
  • Default CV: Set primary CV for applications
  • Download CV: Get your formatted resume
  • Delete CVs: Remove outdated resumes

Job Search & Application

  • Advanced Search: Filter by location, industry, skills, salary
  • Job Alerts: Email notifications for matching jobs
  • Save Favorite Jobs: Bookmark interesting positions
  • Easy Apply: One-click application with saved CV
  • Track Applications: Monitor application status UPDATED
  • Status Updates: Receive emails when status changes NEW

Dashboard Features

  • Profile views statistics
  • Applied jobs count with status badges UPDATED
  • Saved jobs list
  • Company followings
  • Recommended jobs based on profile
  • Package status & quota (if applicable)

Package System for Jobseekers

  • Application Packages: Increase job application limits
  • Featured Profile: Get highlighted in employer searches NEW
  • Package Dashboard: Modern card-based display UPDATED
  • Expiry Notifications: Alerts for expiring packages
  • Payment History: View all package purchases NEW

Communication

  • Receive messages from employers
  • Reply to employer inquiries
  • Email notifications for new messages
  • Report abusive messages

Package System

JobsPortal includes a flexible package system for monetization:

Package Types

1. Employer Job Posting Packages

Feature Description
Job Quota Number of jobs that can be posted
Duration Package validity period in days
Price Package cost in configured currency
Features Job posting, applicant management, analytics

2. Employer CV Search Packages

Feature Description
CV Quota Number of candidate profiles that can be unlocked
Duration Package validity period
Features Resume search, profile viewing, CV downloads

3. Jobseeker Application Packages

Feature Description
Application Quota Number of jobs that can be applied to
Duration Package validity period
Price Usually lower cost or free packages available

4. Featured Profile Package NEW

Feature Description
Featured Badge Profile appears at top of employer searches
Increased Visibility Higher ranking in search results
Special Display Highlighted profile with premium badge

Package Administration

  • Enable/Disable: Turn package system on/off from admin
  • Admin Assignment: Assign packages directly without payment
  • Custom Pricing: Set any price including free ($0) packages
  • Package History: Track all assignments and purchases NEW
New Payment Tracking: All package purchases and assignments are now logged in the payment_history table with complete details including payment method and admin assignments.

Payment Gateway Integration

JobsPortal supports multiple payment gateways for package purchases. Below are detailed setup guides for each gateway:

Supported Payment Gateways

PayPal

Global payment processor

Stripe

Modern payment platform

Razorpay

Indian payment gateway

Paytm

Digital wallet & UPI

PayU

Payment processing

Paystack

African payment gateway

1. PayPal Setup Guide

1

Create PayPal Developer Account

  1. Visit https://developer.paypal.com
  2. Click "Log In" or "Sign Up" if you don't have an account
  3. Use your existing PayPal account or create a new one
  4. Accept the developer agreement
2

Create a PayPal App

  1. Go to Dashboard > My Apps & Credentials
  2. Select "Sandbox" for testing or "Live" for production
  3. Click "Create App" button
  4. Enter your App Name (e.g., "JobsPortal")
  5. Select app type: "Merchant"
  6. Click "Create App"
3

Get API Credentials

After creating the app, you'll see:

  • Client ID: Copy this value
  • Secret: Click "Show" and copy this value
Note: Keep these credentials secure. Never share them publicly or commit them to version control.
4

Configure in JobsPortal Admin

  1. Login to Admin Panel
  2. Navigate to Site Settings
  3. Find PayPal section
  4. Enable PayPal: Yes
  5. PayPal Mode: sandbox (for testing) or live (for production)
  6. Paste your Client ID
  7. Paste your Secret
  8. Click "Save Settings"

2. Stripe Setup Guide

1

Create Stripe Account

  1. Visit https://stripe.com
  2. Click "Sign Up" or "Start Now"
  3. Enter your email and create a password
  4. Complete business information
  5. Verify your email address
2

Get API Keys

  1. Login to Stripe Dashboard
  2. Click "Developers" in the left sidebar
  3. Click "API keys"
  4. You'll see two sets of keys:
    • Test keys (for development)
    • Live keys (for production - visible after activation)
  5. For each set, copy:
    • Publishable key: Starts with pk_test_ or pk_live_
    • Secret key: Starts with sk_test_ or sk_live_ (click "Reveal" first)
3

Configure in JobsPortal Admin

  1. Login to Admin Panel
  2. Navigate to Site Settings
  3. Find Stripe section
  4. Enable Stripe: Yes
  5. Paste your Publishable Key
  6. Paste your Secret Key
  7. Click "Save Settings"
Important: Use test keys during development. Only switch to live keys when you're ready to accept real payments and have completed Stripe account activation.

3. Razorpay Setup Guide

1

Create Razorpay Account

  1. Visit https://razorpay.com
  2. Click "Sign Up" button
  3. Enter your business details
  4. Verify your email and phone number
  5. Complete KYC verification (required for live mode)
2

Generate API Keys

  1. Login to Razorpay Dashboard
  2. Go to Settings (gear icon)
  3. Click on API Keys under "Developers"
  4. Click "Generate Test Keys" for testing or "Generate Live Keys" for production
  5. You'll receive:
    • Key ID: Starts with rzp_test_ or rzp_live_
    • Key Secret: Click "Show" and copy (shown only once!)
Important: Store the Key Secret securely. Razorpay will not show it again. If you lose it, you'll need to regenerate keys.
3

Configure in JobsPortal Admin

  1. Login to Admin Panel
  2. Navigate to Site Settings
  3. Find Razorpay section
  4. Enable Razorpay: Yes
  5. Paste your Key ID
  6. Paste your Key Secret
  7. Click "Save Settings"

4. Paytm Setup Guide

1

Create Paytm Merchant Account

  1. Visit https://business.paytm.com
  2. Click "Create Account"
  3. Enter your business details
  4. Submit required KYC documents
  5. Wait for account approval (usually 24-48 hours)
2

Get API Credentials

  1. Login to Paytm Dashboard
  2. Go to Developer Settings
  3. Click on API Keys
  4. Select "Test" mode for testing or "Production" for live
  5. You'll find:
    • Merchant ID (MID): Your unique merchant identifier
    • Merchant Key: Your secret key for API authentication
    • Website: Your registered website name
    • Industry Type: Your business category
3

Configure in JobsPortal Admin

  1. Login to Admin Panel
  2. Navigate to Site Settings
  3. Find Paytm section
  4. Enable Paytm: Yes
  5. Enter your Merchant ID
  6. Enter your Merchant Key
  7. Enter Website Name
  8. Enter Industry Type
  9. Environment: staging or production
  10. Click "Save Settings"

5. PayU Setup Guide

1

Create PayU Account

  1. Visit https://www.payu.in (India) or your country's PayU website
  2. Click "Sign Up" or "Create Account"
  3. Fill in business registration form
  4. Submit required documents
  5. Wait for account verification
2

Get API Credentials

  1. Login to PayU Dashboard
  2. Navigate to Settings or Integration
  3. Click on API Keys or Merchant Keys
  4. You'll find both Test and Production credentials:
    • Merchant Key: Your unique identifier
    • Merchant Salt: Secret key for secure transactions
  5. Copy both Test credentials for development
3

Configure in JobsPortal Admin

  1. Login to Admin Panel
  2. Navigate to Site Settings
  3. Find PayU section
  4. Enable PayU: Yes
  5. Enter your Merchant Key
  6. Enter your Merchant Salt
  7. Mode: test or live
  8. Click "Save Settings"
Test Mode: PayU provides test credentials that you can use for development without processing real transactions.

6. Paystack Setup Guide

1

Create Paystack Account

  1. Visit https://paystack.com
  2. Click "Get Started" or "Sign Up"
  3. Enter your business details
  4. Verify your email address
  5. Complete business verification (required for live mode)
2

Get API Keys

  1. Login to Paystack Dashboard
  2. Click on Settings in the sidebar
  3. Go to API Keys & Webhooks
  4. You'll see both Test and Live keys:
    • Public Key: Starts with pk_test_ or pk_live_
    • Secret Key: Starts with sk_test_ or sk_live_ (click "Show" to reveal)
  5. Copy the appropriate keys based on your mode
3

Configure in JobsPortal Admin

  1. Login to Admin Panel
  2. Navigate to Site Settings
  3. Find Paystack section
  4. Enable Paystack: Yes
  5. Paste your Public Key
  6. Paste your Secret Key
  7. Click "Save Settings"

Testing Payment Gateways

General Testing Steps

  1. Use sandbox/test mode credentials for all gateways
  2. Test card numbers (each gateway provides their own):
    • Stripe: 4242 4242 4242 4242
    • PayPal: Use PayPal sandbox accounts
    • Razorpay: Any valid card format works in test mode
    • Paytm: Use staging credentials
    • PayU: Use test cards from documentation
    • Paystack: 4084 0840 8408 4081
  3. Make a test purchase of a package
  4. Verify transaction appears in:
    • Gateway dashboard
    • JobsPortal admin payment history
    • User/Company account
  5. Test both successful and failed transactions
  6. Once satisfied, switch to live mode credentials
Go Live Checklist:
  • ✓ Complete business verification on the gateway
  • ✓ Replace test keys with live/production keys
  • ✓ Change mode from sandbox/test to live/production
  • ✓ Test with a small real transaction
  • ✓ Ensure SSL certificate is installed on your domain
  • ✓ Review gateway's terms of service and fees

Payment Tracking NEW

All payments are now automatically tracked in the payment_history table with:

  • User/Company information
  • Package details (title, price, duration)
  • Payment method used
  • Transaction status
  • Admin assignments (if manually assigned)
  • Start and end dates
  • Quota information
New Feature: Payment history pages in admin panel now show complete transaction details with filters, statistics, and detailed popups for both companies and jobseekers.

Database Migrations

JobsPortal now includes complete Laravel migration files for all 74 database tables.

What are Migrations?

Migrations are Laravel's way of version controlling your database schema. They allow you to:

  • Track database schema changes in version control
  • Set up fresh databases easily
  • Share schema with team members
  • Roll back changes if needed
  • Test with fresh database instances

Generated Migrations

All 83 migration files are located in database/migrations/ including:

Core Tables

users, companies, admins, jobs

Application System

job_apply, job_skills, job_types

Packages & Payments

packages, payment_history

Profile System

profile_cvs, education, experience

Master Data

countries, cities, industries

Content

blogs, sliders, testimonials

Using Migrations

Fresh Installation (New Environment)

php artisan migrate

This creates all 74 tables in your database.

Fresh Database for Testing

php artisan migrate:fresh
Warning: This command drops all tables and recreates them. Only use on development/testing environments!

Rollback Last Migration

php artisan migrate:rollback

Check Migration Status

php artisan migrate:status
For Existing Database: Your current database already has all tables. Don't run migrations on production - they're for documentation and new environments only.

Troubleshooting

Common Issues & Solutions

❌ 500 Internal Server Error

Causes & Solutions:

  • Permission Issues:
    chmod -R 775 storage bootstrap/cache
  • Cache Issues:
    php artisan config:clear && php artisan cache:clear
  • Check Error Logs: storage/logs/laravel.log

❌ Database Connection Error

Solutions:

  • Verify database credentials in .env file
  • Ensure database exists and user has proper privileges
  • Check if MySQL service is running
  • Try DB_HOST=localhost instead of 127.0.0.1 or vice versa

❌ Blank Page / White Screen

Solutions:

  • Check PHP error logs
  • Ensure .env file exists
  • Run: php artisan key:generate
  • Clear all caches

❌ Images Not Uploading

Solutions:

  • Check public/ directory permissions (755 or 775)
  • Increase upload_max_filesize in php.ini
  • Increase post_max_size in php.ini
  • Ensure storage/ is writable

❌ Emails Not Sending

Solutions:

  • Verify MAIL settings in .env file
  • Test SMTP credentials using a tool like Mailtrap
  • Check storage/logs/laravel.log for email errors
  • Ensure port 587 or 465 is not blocked by firewall
  • For Gmail: Use "App Password" not regular password

❌ Payment Gateway Not Working

Solutions:

  • Verify API credentials are correct
  • Ensure gateway is enabled in admin settings
  • Check if in test/sandbox mode for testing
  • Review gateway error logs in Laravel logs
  • Verify webhook URLs are configured (if required)

Maintenance Commands

Useful commands for maintaining your installation:

Clear All Caches

php artisan optimize:clear
php artisan config:clear
php artisan cache:clear
php artisan view:clear
php artisan route:clear

Optimize for Production

php artisan config:cache
php artisan route:cache
php artisan view:cache

Check System Status

php artisan about
Production Tip: Always run optimization commands after deploying updates to production for better performance.

Changelog

Version 6.3 - February 2026 LATEST

🎉 New Features (Admin Side)

  • Admin Theme Upgrade:
    • Complete UI overhaul for the admin panel with a modern, responsive design.
  • Roles & Permissions System:
    • Comprehensive role-based access control (RBAC) for admin users.
    • Ability to create custom roles with specific permissions.
    • Enhanced security with granular access management.

Version 6.2 - December 2025

🎉 New Features

  • Bulk Delete Functionality for Admin Lists:
    • Added checkbox selection for all entries in admin list pages
    • Implemented "Select All" checkbox in table headers
    • Bulk delete button appears when items are selected
    • Confirmation dialog before bulk deletion
    • Available on the following admin pages:
      • Functional Areas List
      • Industries List
      • Job Skills List
      • Users List
      • Companies List
    • Automatic table refresh after successful deletion
    • Success/error messages for user feedback

🔧 Technical Updates

  • Controller Updates:
    • Added checkbox column to all DataTable responses
    • Implemented bulkDeleteFunctionalAreas() method in FunctionalAreaController
    • Implemented bulkDeleteIndustries() method in IndustryController
    • Implemented bulkDeleteJobSkills() method in JobSkillController
    • Implemented bulkDeleteUsers() method in UserController
    • Implemented bulkDeleteCompanies() method in CompanyController
  • Route Updates:
    • Added bulk-delete-functional-areas route
    • Added bulk-delete-industries route
    • Added bulk-delete-job-skills route
    • Added bulk-delete-users route
    • Added bulk-delete-companies route
  • View Updates:
    • Added checkbox column to all admin list tables
    • Added "Select All" checkbox in table headers
    • Added bulk delete button with show/hide functionality
    • Implemented JavaScript for select all and bulk delete operations
    • Updated DataTable column configurations

Version 6.1 - December 2025

🎉 New Features

  • Job Application Questions Feature:
    • Companies can now add custom questions to their job posts
    • Jobseekers answer these questions when applying for jobs
    • Companies can view all answers in the applied users list
    • Admin can also view answers for all applicants
    • Questions are optional and user-friendly with add/remove functionality
    • Modal-based answer viewing for easy access
  • Iyzico Payment Gateway Integration:
    • Complete Iyzico payment gateway integration
    • Support for both Sandbox and Live modes
    • Admin configuration panel for API keys and settings
    • Integrated into all package purchase flows (new and upgrade)
    • Works for both companies and jobseekers
    • Payment history tracking for Iyzico transactions
  • Referral System - "Refer a Friend":
    • Company Referral Program - Companies can refer other companies and earn free job posts
    • Job Seeker Referral Program - Job seekers can refer friends and earn featured profile days
    • Admin management panel for tracking all referrals
    • Configurable reward settings (number of referrals needed, reward amounts)
    • Email invitation system for sending referral links
    • Automatic reward distribution when referrals register and become active
    • Referral history tracking for both companies and job seekers
    • Menu items added to company, user, and admin dashboards
  • Suggested Candidates on Company Dashboard:
    • Smart candidate suggestions based on company's industry
    • Displays up to 6 matching candidates on company dashboard
    • Shows candidate profile cards with key information
    • Direct links to view candidate profiles
    • Helps companies discover relevant talent quickly
  • Resume Posted Notifications:
    • Automatic email notifications to employers when job seekers post/update resumes
    • Only sends to companies with matching industry
    • Includes candidate details and direct link to view resume
    • Helps employers discover new talent in their industry
  • Incomplete Profile Reminder System:
    • Weekly automated email reminders to job seekers with incomplete profiles
    • Lists missing profile fields to help users complete their profiles
    • Smart tracking to prevent sending reminders too frequently
    • Only sends to active users with verified emails
    • Helps improve profile completion rates
  • Enhanced Applied Users Management:
    • Status column added to admin applied users table
    • Color-coded status badges (Applied, Shortlisted, Hired, Rejected)
    • Status information included in CSV exports
    • Better visibility of candidate application status

🔧 Technical Updates

  • Database Changes:
    • New tables: job_questions, job_question_answers, referrals, user_referrals
    • Iyzico fields added to site_settings table
    • Referral tracking columns added to companies and users tables
    • Referral settings columns added to site_settings table
    • Incomplete profile reminder tracking column added to users table
    • Proper indexing for performance optimization
  • Code Improvements:
    • New models: JobQuestion, JobQuestionAnswer, Referral, UserReferral
    • New controllers: IyzicoOrderController, ReferralController, UserReferralController
    • New traits: ReferralTrait, UserReferralTrait
    • New mail classes: ReferralInviteMailable, UserReferralInviteMailable, ResumePostedNotificationMailable, IncompleteProfileReminderMailable
    • New console command: SendIncompleteProfileReminders (weekly scheduled)
    • IyzicoHelper class for API interactions
    • Enhanced JobTrait with question management methods
    • Enhanced CompanyController with suggested candidates and referral methods
    • Enhanced UserController with resume notification and profile reminder logic
    • Updated Company and User models with referral methods

🎨 UI/UX Improvements

  • Modern question management interface in job post form
  • Modal-based answer viewing for better user experience
  • Status badges with color coding for quick identification
  • Improved applied users table layout
  • Beautiful referral program pages for companies and job seekers
  • Suggested candidates section on company dashboard with modern card design
  • Professional email templates for all new notification features
  • Referral program menu items in all dashboards

Update 17 Nov 2025

                1. Default Currency Issue Fixed On Creating Package
                2. Fixed Free Trial Plans Still Redirect to Payment Gateway
                3. Added Function to allow company to active free package only 1 time.
                4. Remove Duplicate Signature in Emails
                5. Company Shortlisting Workflow After Unlock, Kanban style added same like applied candidates
                6. Admin View of Unlocked Candidates against every company
                7. Add Option to Hide Featured Profile Package in site settings 
                

Version 6.0 - October 2025

🎉 Major Updates

  • Payment History System:
    • Complete payment tracking for companies and jobseekers
    • Admin payment history pages with stats, filters, and detailed views
    • Payment method tracking (Stripe, PayPal, Admin Assign, etc.)
    • Amount, dates with countdown, and status displays
  • Featured Profile Package:
    • New package type for jobseekers to highlight their profiles
    • Separate date fields (featured_package_start_at, featured_package_end_at)
    • Smart display logic (no quota for featured packages)
  • Job View Tracking:
    • Track total visitors for each job
    • Stats bar on posted jobs page
    • Applied candidates count display
  • Enhanced Email System:
    • Status-specific email templates (Shortlisted, Hired, Rejected, Pending)
    • Professional designs with color-coded sections
    • Clear next steps and action items

🎨 UI/UX Improvements

  • Modern Package Displays:
    • Card-based design for job and CV packages
    • Gradient headers and hover effects
    • Single-color theme (green/teal)
    • Responsive grid layouts
  • Payment History Pages:
    • Timeline-style card layout
    • Statistics dashboard
    • Color-coded payment methods
    • Detailed popups with complete information
  • User Package Pages:
    • Redesigned package listing with pricing cards
    • Payment gateway selection modals
    • Expired package warnings
    • Clean "No Package" messages
  • Blog Pages:
    • Modern card designs for blog posts
    • Improved sidebar widgets
    • Better typography and spacing
    • Responsive layouts

🔧 Technical Improvements

  • Database Schema:
    • Complete Laravel migrations for all 74 tables
    • Payment history table with tracking fields
    • Job views tracking (num_views column)
  • Payment Tracking:
    • Automatic logging of all transactions
    • Admin assignment tracking
    • Support for both company and jobseeker transactions
  • Code Organization:
    • All inline CSS moved to main.css
    • Reusable include files for packages
    • Unique class naming to avoid conflicts

🐛 Bug Fixes

  • Fixed unlock profile button visibility issues
  • Fixed package dropdown not showing Featured Profile package
  • Fixed date display for Featured Profile packages
  • Fixed language display in admin payment history popups
  • Fixed package config checks to respect admin settings

Version 5.0 - October 2025

Jobseeker app Released
https://codecanyon.net/item/jobsportal-jobseeker-react-native-app/60282029
you need to download updated JobsPortal Script to use the app

To use app you need to update tables specially users, jobs
also you need to update these folders:
1. routes
2. app

API Updates for React/React Native Apps (Version 6.1)

Job Questions Feature - API Integration Guide

Overview

Version 6.1 introduces a new Job Questions feature that allows companies to add custom questions to job posts. Jobseekers answer these questions when applying for jobs. This guide explains how to integrate this feature in your React or React Native application.

1. Get Job Details with Questions

Endpoint: GET /api/job/{job_slug}

Response: The job detail response now includes a job_questions array:

{
  "success": true,
  "data": {
    "job": {
      "id": 1,
      "title": "Software Developer",
      "slug": "software-developer",
      // ... other job fields
      "job_questions": [
        {
          "id": 1,
          "job_id": 1,
          "question_title": "What is your experience with React?",
          "order": 0,
          "created_at": "2025-12-11T10:00:00.000000Z",
          "updated_at": "2025-12-11T10:00:00.000000Z"
        },
        {
          "id": 2,
          "job_id": 1,
          "question_title": "Why do you want to work with us?",
          "order": 1,
          "created_at": "2025-12-11T10:00:00.000000Z",
          "updated_at": "2025-12-11T10:00:00.000000Z"
        }
      ]
    },
    "relatedJobs": [...],
    "seo": {...}
  }
}

Important Notes:

  • The job_questions array will be empty if the job has no questions.
  • Questions are ordered by the order field.
  • Display questions in the same order they appear in the array.

2. Get Apply Job Form Data (with Questions)

Endpoint: GET /api/apply/{job_slug} or GET /api/jobs/apply?job_id={job_id}

Authentication: Required (Bearer token)

Response: The response includes job questions along with CV list:

{
  "success": true,
  "message": "Job application form loaded successfully",
  "data": {
    "job_slug": "software-developer",
    "job": {
      "id": 1,
      "title": "Software Developer",
      // ... other job fields
    },
    "myCvs": [
      {
        "id": 1,
        "title": "My CV",
        "cv_file": "cv_file.pdf",
        "created_at": "2025-12-01T10:00:00.000000Z"
      }
    ],
    "job_questions": [
      {
        "id": 1,
        "job_id": 1,
        "question_title": "What is your experience with React?",
        "order": 0
      }
    ],
    "can_apply": true
  }
}

3. Submit Job Application (with Question Answers)

Endpoint: POST /api/apply/{job_slug} or POST /api/jobs/apply

Authentication: Required (Bearer token)

Request Body:

{
  "cv_id": 1,
  "current_salary": "50000",
  "expected_salary": "60000",
  "currency": "USD",
  "question_answers": {
    "1": "I have 3 years of experience with React, including React Hooks and Context API.",
    "2": "I'm interested in working with your company because..."
  }
}

Request Parameters:

  • cv_id (required): ID of the CV to use for application
  • current_salary (required): Current salary amount
  • expected_salary (required): Expected salary amount
  • currency (required): Currency code (e.g., "USD", "EUR")
  • question_answers (optional): Object where keys are question IDs and values are answer strings

Response (Success):

{
  "success": true,
  "message": "You have successfully applied for this job",
  "data": {
    "job_id": 1,
    "job_title": "Software Developer",
    "application_id": 123,
    "applied_at": "2025-12-11T12:00:00.000000Z"
  }
}

Response (Validation Error):

{
  "success": false,
  "message": "Validation failed",
  "errors": {
    "cv_id": ["The cv id field is required."],
    "current_salary": ["The current salary field is required."]
  }
}

4. React/React Native Implementation Example

Example: Displaying Questions in Application Form

// React Component Example
import React, { useState, useEffect } from 'react';

const JobApplicationForm = ({ jobSlug, authToken }) => {
  const [job, setJob] = useState(null);
  const [cvs, setCvs] = useState([]);
  const [questionAnswers, setQuestionAnswers] = useState({});
  const [formData, setFormData] = useState({
    cv_id: '',
    current_salary: '',
    expected_salary: '',
    currency: 'USD'
  });

  useEffect(() => {
    // Fetch job details and questions
    fetch(`https://your-api-domain.com/api/apply/${jobSlug}`, {
      headers: {
        'Authorization': `Bearer ${authToken}`,
        'Accept': 'application/json'
      }
    })
    .then(res => res.json())
    .then(data => {
      if (data.success) {
        setJob(data.data.job);
        setCvs(data.data.myCvs || []);
        // Initialize question answers object
        if (data.data.job_questions && data.data.job_questions.length > 0) {
          const initialAnswers = {};
          data.data.job_questions.forEach(q => {
            initialAnswers[q.id] = '';
          });
          setQuestionAnswers(initialAnswers);
        }
      }
    });
  }, [jobSlug, authToken]);

  const handleQuestionAnswer = (questionId, answer) => {
    setQuestionAnswers(prev => ({
      ...prev,
      [questionId]: answer
    }));
  };

  const handleSubmit = async (e) => {
    e.preventDefault();
    
    const requestData = {
      ...formData,
      question_answers: questionAnswers
    };

    try {
      const response = await fetch(`https://your-api-domain.com/api/apply/${jobSlug}`, {
        method: 'POST',
        headers: {
          'Authorization': `Bearer ${authToken}`,
          'Content-Type': 'application/json',
          'Accept': 'application/json'
        },
        body: JSON.stringify(requestData)
      });

      const result = await response.json();
      
      if (result.success) {
        alert('Application submitted successfully!');
        // Navigate to success page or job listings
      } else {
        alert(result.message || 'Failed to submit application');
      }
    } catch (error) {
      console.error('Error submitting application:', error);
      alert('An error occurred. Please try again.');
    }
  };

  return (
    
{/* CV Selection */} {/* Salary Fields */} setFormData({...formData, current_salary: e.target.value})} required /> setFormData({...formData, expected_salary: e.target.value})} required /> {/* Job Questions */} {job && job.job_questions && job.job_questions.length > 0 && (

Additional Questions

{job.job_questions.map(question => (