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) |
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
/publicdirectory
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
Installation Guide
Follow these steps carefully to install JobsPortal on your server:
Upload Files to Server
Upload all files from the JobsPortal folder to your server's web directory.
- Via FTP: Upload to
public_htmlor your domain folder - Via cPanel File Manager: Upload and extract ZIP file
- Ensure all files including hidden files (.env, .htaccess) are uploaded
Create Database
Create a new MySQL database and user:
- Login to cPanel or phpMyAdmin
- Go to MySQL Databases
- Create a new database (e.g.,
jobsportal_db) - Create a new user with a strong password
- Add user to database with ALL PRIVILEGES
Import Database
Import the provided SQL file:
- Open phpMyAdmin
- Select your newly created database
- Click on "Import" tab
- Choose file:
jobsportal.sql - Click "Go" and wait for import to complete
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
APP_DEBUG=true on production servers!
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)
Run Composer Install
Install all PHP dependencies:
composer install --optimize-autoloader --no-dev
Generate Application Key
Generate a unique application key:
php artisan key:generate
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
Configuration
Default Admin Credentials
| URL | https://yourdomain.com/admin |
|---|---|
buyer@buyer.com |
|
| Password | buyer123456 |
Site Settings Configuration
Configure your site through the admin panel:
- Login to Admin Panel
- Navigate to Site Settings
- 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:
sandboxorlive - 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
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
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
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
Create PayPal Developer Account
- Visit https://developer.paypal.com
- Click "Log In" or "Sign Up" if you don't have an account
- Use your existing PayPal account or create a new one
- Accept the developer agreement
Create a PayPal App
- Go to Dashboard > My Apps & Credentials
- Select "Sandbox" for testing or "Live" for production
- Click "Create App" button
- Enter your App Name (e.g., "JobsPortal")
- Select app type: "Merchant"
- Click "Create App"
Get API Credentials
After creating the app, you'll see:
- Client ID: Copy this value
- Secret: Click "Show" and copy this value
Configure in JobsPortal Admin
- Login to Admin Panel
- Navigate to Site Settings
- Find PayPal section
- Enable PayPal:
Yes - PayPal Mode:
sandbox(for testing) orlive(for production) - Paste your Client ID
- Paste your Secret
- Click "Save Settings"
2. Stripe Setup Guide
Create Stripe Account
- Visit https://stripe.com
- Click "Sign Up" or "Start Now"
- Enter your email and create a password
- Complete business information
- Verify your email address
Get API Keys
- Login to Stripe Dashboard
- Click "Developers" in the left sidebar
- Click "API keys"
- You'll see two sets of keys:
- Test keys (for development)
- Live keys (for production - visible after activation)
- For each set, copy:
- Publishable key: Starts with
pk_test_orpk_live_ - Secret key: Starts with
sk_test_orsk_live_(click "Reveal" first)
- Publishable key: Starts with
Configure in JobsPortal Admin
- Login to Admin Panel
- Navigate to Site Settings
- Find Stripe section
- Enable Stripe:
Yes - Paste your Publishable Key
- Paste your Secret Key
- Click "Save Settings"
3. Razorpay Setup Guide
Create Razorpay Account
- Visit https://razorpay.com
- Click "Sign Up" button
- Enter your business details
- Verify your email and phone number
- Complete KYC verification (required for live mode)
Generate API Keys
- Login to Razorpay Dashboard
- Go to Settings (gear icon)
- Click on API Keys under "Developers"
- Click "Generate Test Keys" for testing or "Generate Live Keys" for production
- You'll receive:
- Key ID: Starts with
rzp_test_orrzp_live_ - Key Secret: Click "Show" and copy (shown only once!)
- Key ID: Starts with
Configure in JobsPortal Admin
- Login to Admin Panel
- Navigate to Site Settings
- Find Razorpay section
- Enable Razorpay:
Yes - Paste your Key ID
- Paste your Key Secret
- Click "Save Settings"
4. Paytm Setup Guide
Create Paytm Merchant Account
- Visit https://business.paytm.com
- Click "Create Account"
- Enter your business details
- Submit required KYC documents
- Wait for account approval (usually 24-48 hours)
Get API Credentials
- Login to Paytm Dashboard
- Go to Developer Settings
- Click on API Keys
- Select "Test" mode for testing or "Production" for live
- 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
Configure in JobsPortal Admin
- Login to Admin Panel
- Navigate to Site Settings
- Find Paytm section
- Enable Paytm:
Yes - Enter your Merchant ID
- Enter your Merchant Key
- Enter Website Name
- Enter Industry Type
- Environment:
stagingorproduction - Click "Save Settings"
5. PayU Setup Guide
Create PayU Account
- Visit https://www.payu.in (India) or your country's PayU website
- Click "Sign Up" or "Create Account"
- Fill in business registration form
- Submit required documents
- Wait for account verification
Get API Credentials
- Login to PayU Dashboard
- Navigate to Settings or Integration
- Click on API Keys or Merchant Keys
- You'll find both Test and Production credentials:
- Merchant Key: Your unique identifier
- Merchant Salt: Secret key for secure transactions
- Copy both Test credentials for development
Configure in JobsPortal Admin
- Login to Admin Panel
- Navigate to Site Settings
- Find PayU section
- Enable PayU:
Yes - Enter your Merchant Key
- Enter your Merchant Salt
- Mode:
testorlive - Click "Save Settings"
6. Paystack Setup Guide
Create Paystack Account
- Visit https://paystack.com
- Click "Get Started" or "Sign Up"
- Enter your business details
- Verify your email address
- Complete business verification (required for live mode)
Get API Keys
- Login to Paystack Dashboard
- Click on Settings in the sidebar
- Go to API Keys & Webhooks
- You'll see both Test and Live keys:
- Public Key: Starts with
pk_test_orpk_live_ - Secret Key: Starts with
sk_test_orsk_live_(click "Show" to reveal)
- Public Key: Starts with
- Copy the appropriate keys based on your mode
Configure in JobsPortal Admin
- Login to Admin Panel
- Navigate to Site Settings
- Find Paystack section
- Enable Paystack:
Yes - Paste your Public Key
- Paste your Secret Key
- Click "Save Settings"
Testing Payment Gateways
General Testing Steps
- Use sandbox/test mode credentials for all gateways
- 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
- Stripe:
- Make a test purchase of a package
- Verify transaction appears in:
- Gateway dashboard
- JobsPortal admin payment history
- User/Company account
- Test both successful and failed transactions
- Once satisfied, switch to live mode credentials
- ✓ 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
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
Rollback Last Migration
php artisan migrate:rollback
Check Migration Status
php artisan migrate:status
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
.envfile - Ensure database exists and user has proper privileges
- Check if MySQL service is running
- Try
DB_HOST=localhostinstead of127.0.0.1or vice versa
❌ Blank Page / White Screen
Solutions:
- Check PHP error logs
- Ensure
.envfile exists - Run:
php artisan key:generate - Clear all caches
❌ Images Not Uploading
Solutions:
- Check
public/directory permissions (755 or 775) - Increase
upload_max_filesizeinphp.ini - Increase
post_max_sizeinphp.ini - Ensure
storage/is writable
❌ Emails Not Sending
Solutions:
- Verify MAIL settings in
.envfile - Test SMTP credentials using a tool like Mailtrap
- Check
storage/logs/laravel.logfor 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
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_questionsarray will be empty if the job has no questions. - Questions are ordered by the
orderfield. - 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 (
);
};
export default JobApplicationForm;
5. Key Points for Implementation
- Questions are Optional: Not all jobs have questions. Always check if
job_questionsexists and has length > 0 before displaying. - Answer Format: Send answers as an object with question IDs as keys and answer strings as values.
- Empty Answers: You can send empty strings for answers, but it's better UX to make them required if questions exist.
- Order Matters: Display questions in the order they appear in the array (already sorted by
orderfield). - Backward Compatibility: If the API doesn't return
job_questions, the application should still work (treat as no questions).
6. Error Handling
Handle these common error scenarios:
- 401 Unauthorized: User is not authenticated - redirect to login
- 400 Bad Request: Job not found, already applied, or validation errors
- 422 Validation Error: Missing required fields - display error messages
- 500 Server Error: Server-side error - show generic error message
jobQuestions relationship when fetching job details.
Version 4.5 - May 2025
1. Improve Page speed
2. Fix Recommended Jobs for user
3. Fix Related Jobs on Job detail page
4. Fix User Featured Package date issue
5. Fix payment error if no gateway is proper configured
6. Add Paytm Gateway
7. Add Paystack Gateway
8. Add Razorpay Gateway
Version 4.0 - March 2025
1. New Clean Design
2. Improved Search with suggestion
3. Premium Candidates Package added
4. Import Jobs through .CSV file
5. Admin can Download users against every job in .CSV format
6. Static Content dynamic to manage from admin
7. Social Login
8. Enhance CV packages for Employer (Now only those candidate will be unlocked whose profile is complete)
9. Separate Auth Pages for both Login and Register
10. Create Job Alerts Separate Section
11. HR Info added in company account
12. Resume Packages assign from admin side against Companies
13. Payment History pages for both employer and jobseeker
and fix some bugs...
Version 3.5 - February 2024
1. Fix Project Thanks Modal close issue
2. Job alert issue
3. Company logo issue fixed
4. CV button show on profile
Version 3.0 - January 2024
1. Update Laravel version to 10
2. Update PHP version to 8.1+
3. Update Bootstrap
4. New Design
5. Add image for blog_categories
6. Categories page
7. Add French and Hindi Language
8. Add Kanban Board for Applied Candidates
9. Add Account Verify page to resend link for activation account
10. Auto Activate Account After email verification
11. Add Company detail page on admin side
12. Add Seeker Profile page on admin side
13. Add Job Detail page on admin side
14. Add List of applied candidates against every job
15. Bulk selection of jobs and delete option
16. Fixed emails issue
Version 2.5 - December 2022
1. Fix CV packages issue
2. Add Print Resume into jobseeker profile
3. Fixed home page search layout issue on mobile
Version 2.0 - October 2022
1. Update UI Design
2. Update Font Awesome
3. Highlight featured jobs on listing page
4. Fix Stripe Issue
5. Add option for cities to upload image
Version 1.8 - August 2021
1. Update Laravel Version to 8.54
2. Fixed job alert issue
3. Add captcha to register forms both
4. Add seo for jobs listing page
5. Add reject button for applied users on employer side and send email to user on rejection
6. Add Hire This Candidate button in shortlisting on employer side
7. Add Google Analytics textarea in settings
8. Add jobg8 API
Version 1.5 - February 2021
CV Search Packages Module Added (Companies will buy package to search jobseekers from database)
Account Email Verify Issue fixed
Jobseeker Profile page design updated
Jobseeker profile Image option added
Jobseeker Video Profile link option added
Update search design
Version 1.2 - October 2020
Pay U Money Payment Gateway added
User Dashboard issue fixed
User Edit Profile issue fixed
Blog category issue fixed
Version 1.0 - August 2020
Laravel Version Updated From 5.8 to 7.24
php version 7.2
Fixed Chart error
Fixed user Navigation active link
Job List Page Updated
Version 0.8 - November 2019
Bootstrap 4 Updated
Blog added
Jobs counter issue fixed
User and employer Messages system added
Job Alerts added
User dashboard updated
Matching jobs on user dashboard
Employer dashboard updated
Companies search added
On Job list page add top search
In jobs list ad placement added
New Design updated
Better Homepage design
Version 0.5 - February 2019
All Companies List View
Social Media Login Active
Version 0.3 - January 2019
Employer Reset password change issue fixed.
Free package Added.
Favicon Upload added in admin site settings.
Tinymce Unicode issue fixed
Tinymce Styling issue fixed
Version 0.1 - January 2019
Add Revolution Slider
Show Hide Option in admin for slider
Add Subscribe for newsletter (Mailchimp)
Add Facility to add Mailchimp account from admin
Add Facility for Employer to post jobs as free
Show Hide Option in admin for Employer Packages
Improve Home page Layout
Upload CV issue Fixed
Add Restrictions for Sub Admin users
Fixed Set Default Language Issue
Home page video Added
Add Image in job description issue fixed
Update Guide
Updating to Version 6.2 (December 2025)
This update adds Bulk Delete Functionality to all admin list pages for improved management efficiency.
What's New in Version 6.2
New Features:
- Bulk Delete for Admin Lists: Select multiple items and delete them at once
- Select All Checkbox: Quickly select all items in a list with one click
- Available on 5 Admin Pages: Functional Areas, Industries, Job Skills, Users, and Companies
- Smart UI: Bulk delete button only appears when items are selected
- Confirmation Dialog: Prevents accidental deletions
- Auto Refresh: Tables automatically refresh after successful deletion
Step-by-Step Update Instructions for Version 6.2
Step 1: Backup Everything
Create complete backups of your database and files before proceeding.
Step 2: Download Update Package
Download the update package from CodeCanyon. The update files are in:
jobsportal-v6/Update/
Step 3: Upload Updated Files
Copy all files from the Update folder to your site, maintaining the folder structure:
- Updated Controllers:
app/Http/Controllers/Admin/FunctionalAreaController.phpapp/Http/Controllers/Admin/IndustryController.phpapp/Http/Controllers/Admin/JobSkillController.phpapp/Http/Controllers/Admin/UserController.phpapp/Http/Controllers/Admin/CompanyController.php
- Updated Routes:
routes/admin_routes/functional_area.phproutes/admin_routes/industry.phproutes/admin_routes/job_skill.phproutes/admin_routes/site_user.phproutes/admin_routes/company.php
- Updated Views:
resources/views/admin/functional_area/index.blade.phpresources/views/admin/industry/index.blade.phpresources/views/admin/job_skill/index.blade.phpresources/views/admin/user/index.blade.phpresources/views/admin/company/index.blade.php
Step 4: Clear Cache
After updating files, clear all Laravel caches:
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
Step 5: Verify Installation
Check that everything is working correctly:
Admin Panel Checks:
- Login to Admin Panel
- Go to Functional Areas - Verify checkbox column and "Select All" checkbox in header
- Go to Industries - Verify checkbox column and bulk delete functionality
- Go to Job Skills - Verify checkbox column and bulk delete functionality
- Go to Users - Verify checkbox column and bulk delete functionality
- Go to Companies - Verify checkbox column and bulk delete functionality
- Test selecting items - Verify "Bulk Delete" button appears
- Test "Select All" - Verify all checkboxes are selected
- Test bulk delete - Verify confirmation dialog and successful deletion
Note:
No database changes are required for this update. All functionality is implemented through code changes only.
Updating to Version 6.1 (December 2025)
This update adds Job Application Questions, Iyzico Payment Gateway, Referral System, Suggested Candidates, Resume Notifications, and Profile Reminder System features.
What's New in Version 6.1
New Features:
- Job Application Questions: Companies can add custom questions to job posts, jobseekers answer them during application
- Iyzico Payment Gateway: Complete integration with Iyzico payment gateway for package purchases
- Referral System: "Refer a Friend" program for both companies and job seekers with reward tracking
- Suggested Candidates: Smart candidate suggestions on company dashboard based on industry
- Resume Posted Notifications: Automatic email alerts to employers when matching resumes are posted
- Incomplete Profile Reminders: Weekly automated emails to help job seekers complete their profiles
- Status Column in Admin: Added status column to admin applied users table with color-coded badges
- View Answers Feature: Companies and admins can view all question answers in modal popups
Step-by-Step Update Instructions for Version 6.1
Step 1: Backup Everything
Create complete backups of your database and files before proceeding.
Step 2: Download Update Package
Download the update package from CodeCanyon. The update files are in:
jobsportal-v6/Update/
Step 3: Upload Updated Files
Copy all files from the Update folder to your site, maintaining the folder structure:
- New Models:
app/JobQuestion.php,app/JobQuestionAnswer.php,app/Referral.php,app/UserReferral.php - Updated Models:
app/Job.php,app/Company.php,app/User.php - New Helpers:
app/Helpers/IyzicoHelper.php - New Controllers:
app/Http/Controllers/IyzicoOrderController.php,app/Http/Controllers/Admin/ReferralController.php,app/Http/Controllers/Admin/UserReferralController.php - Updated Controllers:
app/Http/Controllers/Job/JobController.php,app/Http/Controllers/Company/CompanyController.php,app/Http/Controllers/Admin/CompanyController.php,app/Http/Controllers/UserController.php - New Traits:
app/Traits/ReferralTrait.php,app/Traits/UserReferralTrait.php - Updated Traits:
app/Traits/JobTrait.php - New Mail Classes:
app/Mail/ReferralInviteMailable.php,app/Mail/UserReferralInviteMailable.php,app/Mail/ResumePostedNotificationMailable.php,app/Mail/IncompleteProfileReminderMailable.php - New Console Command:
app/Console/Commands/SendIncompleteProfileReminders.php - Updated Console:
app/Console/Kernel.php(weekly reminder schedule) - View Files: Copy all updated view files from
resources/views/folder including:- Email templates:
emails/referral_invite.blade.php,emails/user_referral_invite.blade.php,emails/resume_posted_notification.blade.php,emails/incomplete_profile_reminder.blade.php - Referral pages:
user/referral_program.blade.php,company/referral_program.blade.php - Admin views:
admin/referral/index.blade.php,admin/user_referral/index.blade.php - Dashboard menus:
includes/user_dashboard_menu.blade.php,includes/company_dashboard_menu.blade.php,admin/shared/sidebar.blade.php - Company dashboard:
company_home.blade.php(suggested candidates)
- Email templates:
- Routes: Copy updated route files:
routes/front_routes/order.php(Iyzico routes)routes/front_routes/company.php(referral routes)routes/front_routes/site_user.php(referral routes)routes/admin_routes/referral.php(new referral routes)routes/admin.php(referral routes include)
Step 4: Run Database Updates
Execute the database update script:
- Open phpMyAdmin (or your database management tool)
- Select your database
- Go to the SQL tab
- Open the file:
database/UPDATE_DATABASE.sql - Copy all SQL queries
- Paste and execute them
- If you see "Column already exists" or "Table already exists" errors, that's okay - just continue
Database Changes:
- New Tables:
job_questions- Stores custom questions for job postsjob_question_answers- Stores answers from jobseekersreferrals- Tracks company referralsuser_referrals- Tracks job seeker referrals
- Site Settings Table:
- Iyzico columns:
iyzico_api_key,iyzico_secret_key,iyzico_live_sandbox,is_iyzico_active - Referral settings:
referral_required_count,referral_reward_jobs,user_referral_required_count,user_referral_reward_days
- Iyzico columns:
- Companies Table: Added
referral_code,referred_by_company_id,referral_bonus_jobs - Users Table: Added
referral_code,referred_by_user_id,referral_featured_days,featured_until,incomplete_profile_reminder_sent_at
Step 5: Install Iyzico Package (if using Iyzico)
If you want to use Iyzico payment gateway, run this command in your project root:
composer require iyzico/iyzipay-php:^2.0
Or add to your composer.json and run composer update:
"iyzico/iyzipay-php": "^2.0"
Step 6: Clear Cache
After updating files and database, clear all Laravel caches:
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
Step 7: Setup Cron Job for Weekly Reminders (Important)
To enable weekly incomplete profile reminders, add this to your server's crontab:
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
Or if using cPanel, add a cron job that runs every minute:
php /home/username/public_html/artisan schedule:run
The weekly reminder command is already scheduled in app/Console/Kernel.php and will run automatically.
Step 8: Run Migrations (Optional)
If you prefer using Laravel migrations instead of SQL file:
php artisan migrate
Step 9: Verify Installation
Check that everything is working correctly:
Admin Panel Checks:
- Login to Admin Panel
- Go to Site Settings > Payment Gateways - Verify Iyzico tab with configuration options
- Check sidebar menu - Verify Referral Program section with "Company Referrals" and "Job Seeker Referrals" links
- Go to Referral Program > Company Referrals - Verify referral management page loads
- Go to Referral Program > Job Seeker Referrals - Verify user referral management page loads
- Go to Applied Users for any job - Verify Status column and View Answers button (if job has questions)
Company Panel Checks:
- Login as a company
- Go to Dashboard - Verify Suggested Candidates section appears (if industry is set)
- Go to Post Job page - Verify "Additional Questions for Jobseekers" section
- Test adding/removing questions
- Go to Applied Users page - Verify View Answers button appears (if job has questions)
- Check sidebar menu - Verify Referral Program menu item
- Go to Referral Program - Verify referral page loads with invite functionality
- Check package pages - Verify Iyzico payment option appears (if enabled)
Jobseeker Panel Checks:
- Login as a jobseeker
- Apply for a job that has questions - Verify questions appear on the application form
- Submit application and verify answers are saved
- Check sidebar menu - Verify Referral Program menu item
- Go to Referral Program - Verify referral page loads with invite functionality
- Check package pages - Verify Iyzico payment option appears (if enabled)
Troubleshooting Version 6.1
Error: "Column already exists"
Solution: The Iyzico columns already exist. Skip those SQL queries and continue. This is normal if you've run the update before.
Error: "Table already exists"
Solution: The job_questions tables already exist. Skip those SQL queries and continue.
Iyzico Payment Not Working
Solution:
- Verify Iyzico package is installed:
composer show iyzico/iyzipay-php - Check API keys are configured in Admin > Site Settings > Payment Gateways > Iyzico
- Verify sandbox/live mode is set correctly
- Check Laravel logs for errors
Referral System Not Working
Solution:
- Verify referral tables exist:
referralsanduser_referrals - Check referral settings in Admin > Referral Program > Settings
- Ensure referral routes are included in
routes/admin.php - Clear route cache:
php artisan route:clear
Suggested Candidates Not Showing
Solution:
- Verify company has an
industry_idset in their profile - Check that there are active job seekers with matching industry
- Verify
FetchJobSeekerstrait is included in CompanyController - Check Laravel logs for any errors
Weekly Reminders Not Sending
Solution:
- Verify cron job is set up correctly (see Step 7)
- Check that
incomplete_profile_reminder_sent_atcolumn exists in users table - Test the command manually:
php artisan send:incomplete-profile-reminders - Check Laravel logs:
storage/logs/incomplete-profile-reminders.log - Verify email configuration in
.envfile
Resume Posted Notifications Not Sending
Solution:
- Verify email configuration in
.envfile - Check that companies have verified email addresses
- Ensure job seeker has an
industry_idset - Check Laravel logs for email sending errors
Questions Not Showing
Solution:
- Verify
job_questionstable exists - Check that questions are saved when posting a job
- Clear cache:
php artisan cache:clear - Verify job has questions in database
Overview
This guide will help you update your existing JobsPortal installation to the latest version without losing any data. The update process is straightforward and safe when followed correctly.
What's New in Previous Updates
New Features:
- Free CV Package Activation: Companies can now activate free CV search packages directly (one-time only)
- Unlocked Users Kanban Board: Enhanced unlocked users management with drag-and-drop status tracking
- Featured Package Visibility Control: Admin can enable/disable featured package section for jobseekers
- Dynamic Currency Display: Package prices now show the site's default currency code
- Payment Gateway Fix: Fixed payment gateway selection on company packages page
- Package Visibility Control: Package sections automatically hide when packages are disabled
Step-by-Step Update Instructions
Step 1: Backup Everything
Before starting, create complete backups:
- Database Backup: Export your database using phpMyAdmin or your hosting control panel
- Files Backup: Download your entire application folder to your local computer
- Note Backup Location: Keep backups in a safe location for at least 30 days
Step 2: Download Update Package
Download the latest version from your CodeCanyon account. The update package is located in:
jobsportal-v6/Update/
This folder contains all updated files with the proper folder structure.
Step 3: Upload Updated Files
Copy all files from the Update folder to your site, maintaining the folder structure:
- Copy files from
app/folder to yourapp/folder - Copy files from
resources/views/folder to yourresources/views/folder - Copy files from
routes/folder to yourroutes/folder - Copy CSS changes from
public/css/main.css.patchto yourpublic/css/main.css
Important Notes:
- New Files: Make sure to add the new file
app/UnlockedUserStatus.php - New View: Add
resources/views/admin/company/unlocked_candidates.blade.php - Overwrite: Replace existing files when prompted - this is safe
Step 4: Run Database Updates
Execute the database update script:
- Open phpMyAdmin (or your database management tool)
- Select your database
- Go to the SQL tab
- Open the file:
UPDATE_DATABASE.sqlfrom the Update folder - Copy all SQL queries
- Paste and execute them
- Verify you see:
"Database update completed successfully!"
Step 5: Add CSS Changes
Open your public/css/main.css file and add these styles (around line 5223, after the #applied styles):
#unlocked .task{background-color: #fff;}
#unlocked {
background-color: #d7dff1;
}
Or simply copy the content from main.css.patch file in the Update folder.
Step 6: Clear Cache
After updating files and database, clear all Laravel caches:
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
Via cPanel File Manager: Delete these folders (they will regenerate automatically):
storage/framework/cache/*storage/framework/views/*bootstrap/cache/*(except .gitignore)
Step 7: Verify Installation
Check that everything is working correctly:
Admin Panel Checks:
- Login to Admin Panel
- Go to Site Settings > Payment Gateways
- Verify you see: "Is Featured Package Active for Jobseeker" option
- Check Company Packages page - verify currency displays correctly (not hardcoded USD)
Company Panel Checks:
- Login as a company
- Go to CV Search Packages page
- Verify free packages show "Activate Now" button
- Verify paid packages show "Buy Now" button
- Check Unlocked Users page - verify Kanban board displays correctly
- Test drag and drop functionality
Jobseeker Panel Checks:
- Login as a jobseeker
- Check dashboard - verify package section respects settings (hides when disabled)
- Check sidebar menu - verify featured package section respects settings
Database Changes Summary
1. Companies Table
- New Column:
has_used_free_cv_package(TINYINT, default 0) - Purpose: Tracks if a company has already activated a free CV package
2. New Table: unlocked_user_status
- Purpose: Tracks individual user statuses for the Kanban board
- Columns: id, company_id, user_id, status, created_at, updated_at
- Status Values: 'unlocked', 'shortlist', 'hired', 'rejected'
- Auto-migrates: Existing unlocked users are automatically migrated
3. Site Settings Table
- New Column:
is_featured_package_active_jobseeker(TINYINT, default 1) - Purpose: Controls visibility of featured package section for jobseekers
Troubleshooting
Error: "Column already exists"
Solution: The column already exists in your database. Skip that SQL query and continue with the rest. This is normal if you've run the update before.
Error: "Table already exists"
Solution: The table already exists. Skip that SQL query and continue with the rest.
Payment Gateway Buttons Not Working
Solution:
- Clear browser cache
- Clear Laravel cache:
php artisan cache:clear - Verify JavaScript files are loaded correctly
- Check browser console for errors
Kanban Board Not Working
Solution:
- Check browser console for JavaScript errors
- Verify Dragula.js library is loaded
- Check that
unlocked_user_statustable exists and has data - Verify CSS styles are added correctly
Package Section Still Showing When Disabled
Solution:
- Clear all caches:
php artisan config:clear && php artisan cache:clear - Check
site_settingstable - verifyis_jobseeker_package_activeis set to 0 - Refresh the page
Rollback Instructions
If you need to rollback the update:
- Restore Database Backup:
mysql -u your_username -p your_database_name < backup_YYYYMMDD.sql - Restore Files: Replace updated files with your backup files
- Clear Cache: Run
php artisan cache:clear
Update Checklist
- Database backed up
- Files backed up
- New files uploaded
- Database SQL queries executed
- CSS changes added
- Cache cleared
- Admin panel verified
- Company panel verified
- Jobseeker panel verified
- No errors in logs
- All features working correctly
Once you've completed all steps and verified everything is working, your update is complete!
Need Help?
If you encounter any issues during the update:
- Check the troubleshooting section above
- Review error logs:
storage/logs/laravel.log - Contact support: sharjil.hz@gmail.com
Version: JobsPortal v6 (Latest Update)
Update Date: November 2025
Support & Contact
Before Requesting Support
- Check this documentation thoroughly
- Review the Troubleshooting section
- Check Laravel error logs (
storage/logs/) - Search for similar issues on Laravel forums
- Ensure your server meets all requirements
Support Policy
What's Included in Support:
- Installation guidance and troubleshooting
- Bug fixes for core functionality
- Questions about features and usage
- Configuration assistance
What's NOT Included:
- Server setup and hosting issues
- Custom development or modifications
- Third-party plugin/service issues
- General PHP/Laravel learning
Note: Customization and advanced modifications are available as paid freelance work at $10-40/hour.
Contact Information
For support and inquiries:
- CodeCanyon: Submit a support ticket through your downloads page
- Email: Include your purchase code and detailed issue description
- Response Time: Usually within 24-48 hours (business days)
Useful Resources
Version Updates
Updates are released periodically with bug fixes and new features:
- Check CodeCanyon downloads page for latest version
- Read changelog before updating
- Backup your files and database before updating
- Test updates on staging environment first