❓ Frequently Asked Questions

125 Essential Questions & Answers for Ashie AI Resume | JobPortal

← Back to Documentation

🖥️ Server Setup & Requirements

The minimum server requirements are:

  • PHP: 8.2 or higher
  • MySQL: 8.0+ or MariaDB 10.6+
  • RAM: Minimum 2GB (4GB recommended)
  • Disk Space: Minimum 5GB free
  • Web Server: Apache 2.4+ or Nginx 1.18+

Required PHP Extensions: BCMath, Ctype, cURL, DOM, Fileinfo, JSON, Mbstring, OpenSSL, PDO, Tokenizer, XML, GD or Imagick, Redis (optional but recommended)

Ashie AI Resume | JobPortal works with all major control panels:

  • cPanel/WHM: Most popular, full support
  • Plesk: Full support with PHP settings
  • HestiaCP: Free panel, recommended for VPS
  • aaPanel: Free panel with GUI for PHP/MySQL
  • DirectAdmin: Full support
  • CyberPanel: OpenLiteSpeed support
  • No Panel (CLI): Manual setup via SSH

Detailed setup guides for HestiaCP, aaPanel, and cPanel are available in the Server Setup Guide.

Shared hosting CAN work if your host provides:

  • PHP 8.2+ with all required extensions
  • MySQL 8.0+ database
  • SSH/Terminal access (for artisan commands)
  • Ability to set up cron jobs
  • At least 512MB PHP memory limit

However, VPS is strongly recommended for production sites because:

  • Better performance for AI features
  • Queue workers run continuously
  • More control over PHP settings
  • Redis cache support

Recommended VPS providers: DigitalOcean, Vultr, Linode, Hetzner (minimum $10-20/month plan).

On Ubuntu/Debian with SSH:

sudo apt install php8.2-{bcmath,ctype,curl,dom,fileinfo,json,mbstring,openssl,pdo,mysql,tokenizer,xml,gd,redis,zip}

On cPanel:

  1. Go to Select PHP Version
  2. Choose PHP 8.2
  3. Check all required extensions
  4. Click Save

On HestiaCP:

  1. Edit Web Domain → PHP Options
  2. Select PHP 8.2
  3. Extensions are usually pre-installed

After enabling, restart PHP: sudo systemctl restart php8.2-fpm

Set the following permissions for security and functionality:

  • storage/775 (writable)
  • storage/app/775
  • storage/framework/775
  • storage/logs/775
  • bootstrap/cache/775
  • public/755
  • All other folders → 755
  • All files → 644

Quick command:

chmod -R 775 storage bootstrap/cache && chmod -R 755 public

Set correct ownership:

chown -R www-data:www-data /path/to/your/site

Step 1: Get your server's IP address from your hosting provider.

Step 2: Go to your domain registrar (GoDaddy, Namecheap, Cloudflare, etc.)

Step 3: Update DNS records:

  • A Record: @ → Your Server IP
  • A Record: www → Your Server IP

Step 4: Wait for DNS propagation (5 minutes to 48 hours)

To verify: Use ping yourdomain.com or check at dnschecker.org

Important: The document root should point to the public/ folder, NOT the root of the application.

Free SSL with Let's Encrypt (recommended):

On cPanel: Go to SSL/TLS → AutoSSL → Run AutoSSL

On HestiaCP: Edit Web Domain → Enable "Let's Encrypt SSL"

On command line:

sudo apt install certbot python3-certbot-nginx

sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

After SSL is installed:

  1. Update .env file: APP_URL=https://yourdomain.com
  2. Clear cache: php artisan config:clear

SSL auto-renewal is handled by certbot cron job.

On cPanel:

  1. Go to MySQL Databases
  2. Create new database (e.g., ashiejob_db)
  3. Create new user with strong password
  4. Add user to database with ALL PRIVILEGES

On command line:

mysql -u root -p

CREATE DATABASE ashiejob_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

CREATE USER 'ashiejob_user'@'localhost' IDENTIFIED BY 'YourStrongPassword';

GRANT ALL PRIVILEGES ON ashiejob_db.* TO 'ashiejob_user'@'localhost';

FLUSH PRIVILEGES;

Important: Use utf8mb4_unicode_ci collation for emoji support.

Yes! For fresh Ubuntu/Debian servers, use our all-in-one script:

curl -fsSL https://dfrcdn.b-cdn.net/scripts/setup-server.sh | sudo bash

This script automatically installs:

  • PHP 8.2 with all required extensions
  • MySQL 8.0
  • Nginx web server
  • Composer
  • Node.js 20 LTS
  • Redis cache server
  • Supervisor (for queue workers)

Note: Run this only on a fresh server. Review the script before running on production.

Create an Nginx config file at /etc/nginx/sites-available/yourdomain.conf:

Key configuration points:

  • root must point to /path/to/app/public (the public folder)
  • index should be index.php
  • Use try_files $uri $uri/ /index.php?$query_string; for clean URLs
  • PHP-FPM socket: fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;

After creating config:

sudo ln -s /etc/nginx/sites-available/yourdomain.conf /etc/nginx/sites-enabled/

sudo nginx -t (test config)

sudo systemctl reload nginx

Sample configs are available in the Server Setup Guide.

🚀 Installation & Setup

Method 1 - Via cPanel File Manager:

  1. Upload the ZIP file to public_html folder
  2. Right-click → Extract
  3. Move contents so public/ folder contents are in public_html/

Method 2 - Via SSH/Terminal:

cd /var/www/html

unzip ashie-jobportal.zip

chown -R www-data:www-data .

chmod -R 755 . && chmod -R 775 storage bootstrap/cache

Method 3 - Via FTP (FileZilla):

  1. Extract ZIP locally on your computer
  2. Connect to server via FTP
  3. Upload all files to your web directory

The Installation Wizard is a browser-based installer that guides you through setup.

To access: Visit https://yourdomain.com/install

The wizard helps you:

  1. Step 1: Check server requirements
  2. Step 2: Verify folder permissions
  3. Step 3: Configure database connection
  4. Step 4: Set application URL and name
  5. Step 5: Create admin account
  6. Step 6: Run database migrations
  7. Step 7: Activate your license
  8. Step 8: Complete installation

Note: If wizard doesn't appear, ensure .env file doesn't exist yet or APP_INSTALLED=false.

During Installation Wizard (Step 7):

  1. Enter your Envato Purchase Code from CodeCanyon
  2. Click Activate License
  3. Wait for verification (requires internet connection)
  4. On success, proceed to finish installation

To find your Purchase Code:

  1. Log in to CodeCanyon
  2. Go to Downloads
  3. Find Ashie AI Resume | JobPortal
  4. Click DownloadLicense Certificate
  5. Copy the Purchase Code (format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)

Important: One license = one domain. Contact support to transfer license.

After running database seeders during installation, these demo accounts are created:

Role Email Password
Super Admin superadmin@test.com password123
Employer employer@test.com password123
Job Seeker seeker@test.com password123

⚠️ CRITICAL: Change ALL default passwords immediately after installation! Go to Admin Panel → User Management to update credentials.

For production: Consider deleting demo employer and seeker accounts after testing.

Step 1: Copy .env.example to .env

cp .env.example .env

Step 2: Generate application key:

php artisan key:generate

Step 3: Edit essential settings:

  • APP_NAME="Your Job Portal Name"
  • APP_URL=https://yourdomain.com
  • APP_ENV=production
  • APP_DEBUG=false
  • DB_HOST=127.0.0.1
  • DB_DATABASE=your_database
  • DB_USERNAME=your_username
  • DB_PASSWORD=your_password

Step 4: Run migrations:

php artisan migrate --seed

Laravel requires a cron job to run scheduled tasks (subscription renewals, cleanup, etc.).

On cPanel:

  1. Go to Cron Jobs
  2. Set frequency: Every Minute (* * * * *)
  3. Command: cd /home/username/public_html && php artisan schedule:run >> /dev/null 2>&1

On SSH/Terminal:

crontab -e

Add this line:

* * * * * cd /var/www/yourdomain && php artisan schedule:run >> /dev/null 2>&1

To verify it's working:

php artisan schedule:list - shows all scheduled tasks

Queue workers process emails, payments, AI features, and notifications in the background.

Option 1 - Supervisor (Recommended for Production):

sudo apt install supervisor

Create /etc/supervisor/conf.d/laravel-worker.conf:

[program:laravel-worker]

command=php /var/www/yourdomain/artisan queue:work --sleep=3 --tries=3

autostart=true

autorestart=true

numprocs=2

Then run: sudo supervisorctl reread && sudo supervisorctl update && sudo supervisorctl start laravel-worker:*

Option 2 - Simple (Development/Shared Hosting):

Add to cron: * * * * * cd /path/to/app && php artisan queue:work --stop-when-empty

Subdomain (Recommended): ✅ Fully supported

Example: jobs.yourdomain.com

  1. Create subdomain in your control panel
  2. Point document root to public/ folder
  3. Set APP_URL=https://jobs.yourdomain.com in .env

Subdirectory: ⚠️ Possible but not recommended

Example: yourdomain.com/jobs

  • Requires additional .htaccess configuration
  • May have routing issues with some features
  • API routes may need adjustment

Best practice: Use a dedicated subdomain for clean URLs and easier maintenance.

Method 1 - Using phpMyAdmin:

  1. Open phpMyAdmin from your control panel
  2. Select your database
  3. Click Import tab
  4. Choose the SQL file
  5. Click Go

Method 2 - Using command line:

mysql -u username -p database_name < backup.sql

Method 3 - Using Laravel migrations (Recommended):

php artisan migrate --seed

This creates fresh tables with proper structure and optional demo data.

Note: If importing fails due to size, increase max_allowed_packet and upload_max_filesize in PHP settings.

Essential post-installation checklist:

  1. Change default passwords for all demo accounts
  2. Set APP_DEBUG=false in .env for production
  3. Configure SMTP email (Admin → Settings → Email)
  4. Set up cron job for scheduled tasks
  5. Configure queue worker for background jobs
  6. Update site branding (logo, name, colors)
  7. Set up payment gateways (Stripe, PayPal, etc.)
  8. Create subscription packages
  9. Configure OpenAI for AI features (optional)
  10. Set up legal pages (Privacy Policy, Terms)
  11. Enable SSL and update APP_URL to https
  12. Test registration flow as job seeker and employer

See the Admin Guide for detailed configuration instructions.

⚙️ Configuration & Settings

Via Admin Panel (Recommended):

  1. Login as Super Admin
  2. Go to Admin Panel → Settings → Email Settings
  3. Fill in your SMTP details:
    • SMTP Host: e.g., smtp.gmail.com
    • SMTP Port: 587 (TLS) or 465 (SSL)
    • Username: Your email address
    • Password: App Password (for Gmail)
    • Encryption: TLS or SSL
    • From Address: noreply@yourdomain.com
  4. Click Save and Send Test Email

For Gmail: Enable 2FA and create an App Password at Google App Passwords

OpenAI powers resume optimization, cover letter generation, and job matching:

  1. Create account at platform.openai.com
  2. Go to API Keys → Create new secret key
  3. Copy the key (starts with sk-proj-)
  4. Option A - Via Admin Panel:
    • Go to Admin Panel → Settings → AI & Interview
    • Paste your API key
    • Click Save
  5. Option B - Via .env file:
    • Add: OPENAI_API_KEY=sk-proj-your-key-here
    • Run: php artisan config:clear

Cost: OpenAI charges per usage. Set limits in Admin → AI Limits to control costs.

  1. Go to Google Cloud Console
  2. Create a new project or select existing
  3. Go to APIs & Services → OAuth consent screen
    • Select External
    • Fill app name, support email
    • Add scopes: email, profile, openid
  4. Go to Credentials → Create Credentials → OAuth client ID
    • Application type: Web application
    • Authorized redirect URI: https://yourdomain.com/api/v1/auth/google/callback
  5. Copy Client ID and Client Secret
  6. Add to .env:
    • GOOGLE_CLIENT_ID=your_client_id
    • GOOGLE_CLIENT_SECRET=your_client_secret
    • GOOGLE_REDIRECT_URI=${APP_URL}/api/v1/auth/google/callback
  1. Go to Facebook Developers
  2. Click My Apps → Create App
  3. Select Authenticate and request data from users
  4. Choose Consumer as app type
  5. Add Facebook Login product
  6. Go to Facebook Login → Settings
    • Valid OAuth Redirect URIs: https://yourdomain.com/api/v1/auth/facebook/callback
  7. Go to Settings → Basic to get App ID and App Secret
  8. Add to .env:
    • FACEBOOK_CLIENT_ID=your_app_id
    • FACEBOOK_CLIENT_SECRET=your_app_secret
    • FACEBOOK_REDIRECT_URI=${APP_URL}/api/v1/auth/facebook/callback

Note: App must be in "Live" mode for public use (requires privacy policy URL).

Pusher enables real-time messaging between employers and job seekers:

  1. Create account at Pusher Dashboard
  2. Create a new Channels app
  3. Select your closest cluster region
  4. Copy credentials from App Keys
  5. Add to .env:
    • BROADCAST_CONNECTION=pusher
    • PUSHER_APP_ID=your_app_id
    • PUSHER_APP_KEY=your_app_key
    • PUSHER_APP_SECRET=your_app_secret
    • PUSHER_APP_CLUSTER=eu (or your region)
  6. Clear config: php artisan config:clear

Free tier: 200k messages/day, 100 concurrent connections.

Redis significantly improves caching, sessions, and queue processing:

Step 1 - Install Redis on server:

sudo apt install redis-server php8.2-redis

sudo systemctl enable redis-server

Step 2 - Verify Redis is running:

redis-cli ping (should return PONG)

Step 3 - Update .env:

  • CACHE_STORE=redis
  • SESSION_DRIVER=redis
  • QUEUE_CONNECTION=redis
  • REDIS_HOST=127.0.0.1
  • REDIS_PORT=6379

Step 4: Clear config: php artisan config:clear

Benefits: 10-50x faster cache reads, persistent sessions, reliable queue jobs.

CDN serves static assets (images, CSS, JS) from global edge servers:

Cloudflare (Recommended - Free tier available):

  1. Add your domain to Cloudflare
  2. Point nameservers to Cloudflare
  3. Enable caching in Cloudflare dashboard

For dedicated asset CDN:

  1. Set up Cloudflare, CloudFront, or BunnyCDN
  2. Add to .env:
    • CDN_ENABLED=true
    • CDN_PROVIDER=cloudflare
    • CDN_DOMAIN=cdn.yourdomain.com

Result: Faster page loads globally, reduced server bandwidth.

Cloud storage is recommended for scalability and backup:

For AWS S3:

  1. Create S3 bucket in AWS Console
  2. Create IAM user with S3 permissions
  3. Add to .env:
    • FILESYSTEM_DISK=s3
    • AWS_ACCESS_KEY_ID=your_key
    • AWS_SECRET_ACCESS_KEY=your_secret
    • AWS_DEFAULT_REGION=us-east-1
    • AWS_BUCKET=your-bucket-name

S3-compatible alternatives: DigitalOcean Spaces, MinIO, Wasabi

Benefits: Unlimited storage, automatic backups, CDN integration.

Via Admin Panel:

  1. Login as Super Admin → Admin Panel → Settings → Branding
  2. Update:
    • Site Name: Your company name
    • Logo: Upload light and dark versions
    • Favicon: Upload .ico or .png (32x32)
    • Footer Logo: For footer display
  3. Click Save Changes

For theme colors: Go to Admin → Settings → Theme

  • Primary color (buttons, links)
  • Secondary color (accents)
  • Background colors

Changes apply immediately across the entire site.

Ashie AI Resume | JobPortal supports 22 languages out of the box:

To manage languages:

  1. Go to Admin Panel → Settings → Languages
  2. Enable/disable languages using toggle switches
  3. Set the default language for new visitors
  4. Reorder languages (drag and drop)

Included languages: English, Spanish, French, German, Portuguese, Arabic, Chinese, Japanese, Korean, Russian, Italian, Dutch, Polish, Turkish, Vietnamese, Thai, Indonesian, Hindi, Bengali, Swahili, Zulu, and more.

To edit translations:

  1. Go to Admin → Translations
  2. Search for specific keys or browse by namespace
  3. Edit translations inline

Translations are stored in the database for easy management.

👨‍💼 Admin Panel Features

To access the Admin Panel:

  1. Go to https://yourdomain.com/login
  2. Login with admin credentials (e.g., superadmin@test.com / password123)
  3. Click on your profile icon → Admin Panel
  4. Or directly visit https://yourdomain.com/admin

Admin Panel sections:

  • Dashboard: Overview stats, charts, recent activity
  • Users: Manage all user accounts
  • Jobs: Moderate job listings
  • Companies: Manage employer companies
  • Settings: Site configuration
  • Content: Pages, blog, FAQs

The Dashboard provides a real-time overview of your job portal:

Key Metrics:

  • Total Users: Job seekers + employers count
  • Active Jobs: Currently published job listings
  • Applications: Total job applications received
  • Revenue: Subscription and payment totals

Charts:

  • User registrations over time
  • Job postings trend
  • Revenue breakdown
  • Popular job categories

Recent Activity:

  • Latest user registrations
  • Recent job postings
  • Recent applications
  • Latest transactions

To create subscription packages:

  1. Go to Admin Panel → Packages
  2. Click Add New Package
  3. Fill in package details:
    • Name: e.g., "Basic", "Professional", "Enterprise"
    • Price: Monthly/yearly amount
    • Duration: 30 days, 90 days, 365 days
    • Features: Check features to include

Package features you can toggle:

  • Number of job posts allowed
  • Featured job listings
  • AI resume optimization uses
  • Cover letter generation
  • Resume downloads
  • Priority support

Packages apply to both employers and job seekers (configure separately).

Supported payment gateways:

  • Stripe (Credit/Debit cards)
  • PayPal
  • Flutterwave (Africa)
  • Paystack (Africa)
  • Razorpay (India)

To configure:

  1. Go to Admin Panel → Settings → Payments
  2. Enable desired gateways
  3. Enter API credentials:
    • Public Key
    • Secret Key
    • Webhook Secret (important!)
  4. Configure webhook URLs in each payment provider's dashboard

⚠️ Important: Set up webhook URLs or subscriptions won't activate automatically. See Payment Webhooks Setup.

Blog Management:

  1. Go to Admin Panel → Blog & Content → Blog Posts
  2. Click Add New Post
  3. Fill in:
    • Title and slug
    • Content (rich text editor)
    • Featured image
    • Categories and tags
    • SEO meta title and description
  4. Set status: Draft, Published, or Scheduled

Other content sections:

  • Help Center: Admin → Help Center → Articles
  • FAQs: Admin → Content → FAQs
  • Testimonials: Admin → Content → Testimonials
  • Team Members: Admin → Content → Team & About

Global SEO settings:

  1. Go to Admin Panel → Settings → SEO Settings
  2. Configure:
    • Default Meta Title: Your site name format
    • Meta Description: Default description for pages
    • Meta Keywords: Global keywords
    • OG Image: Default social share image
    • Twitter Card: Twitter sharing format

Page-specific SEO:

  • Each page, blog post, and job listing has its own SEO fields
  • Auto-generated sitemap at /sitemap.xml
  • Robots.txt configurable

Analytics integration:

  • Go to Admin → Settings → Integrations
  • Add Google Analytics tracking ID
  • Add Facebook Pixel ID

Header customization:

  1. Go to Admin Panel → Settings → Header & Footer
  2. Configure header:
    • Logo (light/dark versions)
    • Navigation menu items
    • Show/hide login buttons
    • Language switcher visibility

Footer customization:

  • Footer logo
  • Company description
  • Footer columns and links
  • Social media links
  • Copyright text
  • Newsletter signup toggle

Navigation Menu:

  1. Go to Admin → Settings → Navigation Menu
  2. Add/remove/reorder menu items
  3. Create dropdown menus
  4. Set visibility (all users, logged in, guests)

Control AI feature usage to manage OpenAI costs:

  1. Go to Admin Panel → Settings → AI Limits
  2. Set limits for each AI feature:
    • Resume Optimization: X uses per day/month
    • Cover Letter Generation: X uses per day/month
    • AI Interview Practice: X sessions per day
    • Job Match Analysis: X analyses per day
  3. Set different limits per subscription package

Limit types:

  • Free users: Minimal or no AI access
  • Basic plan: Limited uses (e.g., 5/month)
  • Pro plan: More uses (e.g., 50/month)
  • Enterprise: Unlimited or high limits

Users see their remaining usage in their dashboard.

To edit legal pages:

  1. Go to Admin Panel → Content → Legal Pages
  2. Select the page to edit:
    • Privacy Policy
    • Terms of Service
    • Cookie Policy
    • Refund Policy
    • GDPR Compliance
  3. Edit content using the rich text editor
  4. Click Save

Pre-filled templates: Default templates are included but should be customized for your jurisdiction and business.

Cookie Consent:

  1. Go to Admin → Settings → Cookie Consent
  2. Enable/disable cookie banner
  3. Customize consent message
  4. Link to Cookie Policy page

To view transactions:

  1. Go to Admin Panel → Transactions
  2. View all payment transactions with:
    • Transaction ID
    • User details
    • Amount and currency
    • Payment gateway used
    • Status (completed, pending, failed)
    • Date and time

Filtering options:

  • Filter by date range
  • Filter by status
  • Filter by payment gateway
  • Search by user or transaction ID

Subscriptions:

  1. Go to Admin → Subscriptions
  2. View active/expired subscriptions
  3. Manually extend or cancel subscriptions

Export transactions to CSV for accounting.

👥 User Management

To manage users:

  1. Go to Admin Panel → Users
  2. View all registered users with:
    • Name and email
    • Role (job seeker, employer, admin)
    • Registration date
    • Status (active, suspended, pending)
    • Subscription status

Available actions:

  • View Profile: See full user details
  • Edit: Update user information
  • Change Role: Promote/demote user
  • Suspend: Temporarily disable account
  • Delete: Permanently remove user
  • Login As: Impersonate user (for support)

Filtering: Filter by role, status, date range, or search by name/email.

Available roles:

Role Description
super_admin Full system access - all settings, users, content
admin Content moderation, user management (limited)
employer Post jobs, manage company, view applications
seeker Create resumes, apply for jobs, use AI tools

To change a user's role:

  1. Go to Admin → Users
  2. Click Edit on the user
  3. Change the Role dropdown
  4. Click Save

Method 1 - Promote existing user:

  1. Go to Admin Panel → Users
  2. Find the user you want to promote
  3. Click Edit
  4. Change Role to "admin" or "super_admin"
  5. Click Save

Method 2 - Create new admin:

  1. Have the person register normally on the site
  2. Then promote their account as above

Method 3 - Via command line:

php artisan tinker

$user = User::where('email', 'newemail@example.com')->first();

$user->assignRole('super_admin');

⚠️ Security: Only create admin accounts for trusted team members.

To suspend a user:

  1. Go to Admin Panel → Users
  2. Find the user
  3. Click the Actions dropdown
  4. Select Suspend Account
  5. Optionally add a reason
  6. Confirm suspension

What happens when suspended:

  • User cannot login
  • Their job listings become hidden (employers)
  • Their applications remain but profile hidden (seekers)
  • User receives email notification (if configured)

To reactivate:

  1. Find user in Admin → Users
  2. Filter by "Suspended" status
  3. Click Reactivate

Permanent delete: Use only for spam accounts. Deleted users cannot be recovered.

Self-service password reset:

  1. User clicks "Forgot Password" on login page
  2. Enters their email address
  3. Receives email with reset link (valid 60 minutes)
  4. Clicks link and sets new password

Admin reset (for users who can't access email):

  1. Go to Admin Panel → Users
  2. Find the user → Click Edit
  3. Enter new password in Password field
  4. Click Save
  5. Communicate new password securely to user

If reset emails aren't sending:

  • Check SMTP settings in Admin → Settings → Email
  • Ensure queue worker is running
  • Check spam/junk folders

Verified companies display a badge, building trust with job seekers:

To verify a company:

  1. Go to Admin Panel → Companies
  2. Review company details:
    • Company name and website
    • Business registration (if provided)
    • Contact information
    • Job posting history
  3. Click Edit on the company
  4. Toggle "Verified" to ON
  5. Click Save

Benefits of verified status:

  • ✓ Verified badge on company profile
  • ✓ Badge on all job listings
  • ✓ Higher visibility in search results
  • ✓ Increased job seeker trust

No, each email can only have one role.

A user registers as either:

  • Job Seeker: Create resumes, apply for jobs
  • Employer: Post jobs, manage company

If someone needs both:

  • Register with different email addresses
  • Example: personal@email.com (seeker) and work@company.com (employer)

Role switching:

  • Admins can change a user's role
  • But this removes access to previous role features
  • Data from previous role is preserved but hidden

This design prevents conflicts and keeps profiles clean.

To export user data:

  1. Go to Admin Panel → Users
  2. Apply any filters (role, date range, status)
  3. Click Export button
  4. Select format: CSV or Excel
  5. Download the file

Exported data includes:

  • User ID, name, email
  • Role and status
  • Registration date
  • Last login date
  • Subscription status
  • Location (if provided)

GDPR user data request:

  • Users can request their data from profile settings
  • System generates complete data export
  • Includes resumes, applications, messages

Registration flow:

  1. User registers with email and password
  2. System sends verification email
  3. User clicks verification link
  4. Account becomes fully active

Before verification, users can:

  • ✓ Login and view the site
  • ✓ Update their profile
  • ✗ Cannot apply for jobs
  • ✗ Cannot post jobs
  • ✗ Cannot use AI features

To resend verification:

  • User: Click "Resend verification email" in dashboard
  • Admin: Go to Users → find user → "Resend Verification"

To manually verify (skip email):

  1. Admin → Users → Edit user
  2. Set Email Verified to Yes
  3. Save

Super admins can login as any user to troubleshoot issues:

To impersonate:

  1. Go to Admin Panel → Users
  2. Find the user
  3. Click Actions → Login As User
  4. You'll be logged in as that user
  5. A banner shows you're impersonating

What you can do while impersonating:

  • See exactly what the user sees
  • Test features from their perspective
  • Debug issues they're experiencing

To stop impersonating:

  • Click "Return to Admin" in the banner
  • Or logout and login with your admin account

⚠️ Important: Actions taken while impersonating are logged. Use responsibly.

💼 Jobs & Applications

Steps to post a job:

  1. Login as employer
  2. Go to Dashboard → Post a Job
  3. Fill in job details:
    • Job Title: Clear, descriptive title
    • Category: Select job category
    • Job Type: Full-time, Part-time, Contract, Remote
    • Location: City/Remote
    • Salary Range: Optional but recommended
    • Description: Full job description
    • Requirements: Skills and qualifications
    • Benefits: What you offer
  4. Choose posting options:
    • Featured listing (premium)
    • Urgent hiring badge
  5. Click Post Job

Jobs may require admin approval depending on settings.

To manage job listings:

  1. Go to Admin Panel → Jobs
  2. View all jobs with status, company, date
  3. Filter by: Pending, Published, Expired, Rejected

Available actions:

  • Approve: Publish pending job
  • Reject: Decline with reason
  • Edit: Modify job details
  • Feature: Mark as featured listing
  • Expire: End job listing early
  • Delete: Remove completely

Auto-moderation settings:

  1. Go to Admin → Settings → Features
  2. Toggle "Require job approval"
  3. If OFF: Jobs publish immediately
  4. If ON: Jobs need admin approval first

Application process:

  1. Job seeker browses or searches for jobs
  2. Clicks on job listing to view details
  3. Clicks "Apply Now"
  4. Selects which resume to attach
  5. Optionally adds cover letter
  6. Submits application

Application requirements:

  • Must have verified email
  • Must have at least one resume created
  • Some jobs may have screening questions

After applying:

  • Confirmation email sent to applicant
  • Notification sent to employer
  • Application appears in employer's dashboard
  • Seeker can track status in their dashboard

To view applications:

  1. Login as employer
  2. Go to Dashboard → Applications
  3. Or click on a specific job → View Applications

Application management:

  • View Resume: See applicant's full resume
  • Download Resume: Save as PDF
  • View Cover Letter: If submitted
  • Change Status: New → Reviewed → Shortlisted → Interview → Hired/Rejected
  • Send Message: Contact applicant directly
  • Add Notes: Internal notes (not visible to applicant)

Bulk actions:

  • Select multiple applications
  • Change status in bulk
  • Send bulk rejection emails

Application statuses:

Status Description
New Just submitted, not yet viewed
Reviewed Employer has viewed the application
Shortlisted Candidate selected for further consideration
Interview Interview scheduled or in progress
Hired Candidate accepted the offer
Rejected Application declined

Job seekers can see their application status in their dashboard. Email notifications are sent when status changes (if enabled).

Managing job categories:

  1. Go to Admin Panel → Jobs → Categories
  2. View existing categories
  3. Click Add Category to create new

Category fields:

  • Name: Category title (e.g., "Technology")
  • Slug: URL-friendly name (auto-generated)
  • Icon: Display icon
  • Description: Optional description
  • Status: Active/Inactive

Default categories include:

  • Technology, Healthcare, Finance, Education
  • Marketing, Design, Sales, Engineering
  • Customer Service, Human Resources

Categories help job seekers filter and discover relevant positions.

Featured jobs get premium placement:

  • Displayed at top of search results
  • Highlighted with special badge
  • Shown on homepage featured section
  • Higher visibility = more applicants

How employers get featured listings:

  • Included in premium subscription packages
  • Purchase as add-on when posting job
  • Admin can manually feature any job

To manually feature (admin):

  1. Go to Admin → Jobs
  2. Find the job
  3. Click Edit
  4. Toggle "Featured" ON
  5. Save

Configure in packages: Admin → Packages → Edit → Set "Featured Jobs" quota.

Job seekers can search by:

  • Keywords: Job title, skills, company name
  • Location: City, state, or "Remote"
  • Category: Technology, Healthcare, etc.
  • Job Type: Full-time, Part-time, Contract, Internship
  • Experience Level: Entry, Mid, Senior, Executive
  • Salary Range: Minimum/maximum salary
  • Date Posted: Last 24h, week, month

Search features:

  • Real-time search suggestions
  • Save search filters
  • Email alerts for saved searches
  • Sort by: Relevance, Date, Salary

SEO-friendly URLs: Jobs have clean URLs like /jobs/senior-developer-san-francisco

Job expiration:

  • Jobs have a set duration (e.g., 30 days)
  • Duration depends on employer's subscription package
  • Expired jobs are automatically hidden from search
  • Employers receive notification before expiration

Renewal options:

  1. Manual renewal: Employer clicks "Renew" on expired job
  2. Edit and repost: Update details and post as new
  3. Auto-renewal: If enabled in subscription settings

Admin settings:

  • Go to Admin → Settings → Features
  • Set default job duration
  • Configure expiration notifications (7 days, 3 days, 1 day before)

Real-time messaging system:

  • Employers and job seekers can message each other
  • Messages appear in real-time (using Pusher)
  • Both parties notified via email (optional)

Starting a conversation:

  • Employer: Click "Message" on any application
  • Job Seeker: Apply first, then message appears

Message features:

  • Text messages
  • File attachments (documents, images)
  • Read receipts
  • Message history preserved

Accessing messages:

  1. Click Messages icon in navigation
  2. Or go to Dashboard → Messages

Requirements: Configure Pusher in .env for real-time functionality.

📄 Resume Builder & AI Features

To create a resume:

  1. Login as job seeker
  2. Go to Dashboard → My Resumes
  3. Click Create New Resume
  4. Choose a template from available designs
  5. Fill in sections:
    • Personal Info: Name, contact, photo
    • Summary: Professional summary
    • Experience: Work history
    • Education: Degrees, certifications
    • Skills: Technical and soft skills
    • Languages: Language proficiencies
    • Projects: Portfolio items
    • References: Optional
  6. Preview and save

Users can create multiple resumes for different job types.

Template categories:

  • Professional: Clean, corporate-friendly designs
  • Modern: Contemporary layouts with color accents
  • Creative: Unique designs for creative industries
  • Simple: Minimalist, ATS-friendly templates
  • Executive: Senior-level professional templates

Template features:

  • Multiple color schemes per template
  • Customizable sections
  • Photo optional/required options
  • ATS (Applicant Tracking System) compatible

Managing templates (Admin):

  1. Go to Admin → Templates → Resume Templates
  2. Enable/disable templates
  3. Set as free or premium
  4. Reorder display order

AI-powered resume enhancement:

  1. User creates or opens existing resume
  2. Clicks "Optimize with AI"
  3. AI analyzes content and suggests:
    • Stronger action verbs
    • Quantifiable achievements
    • Industry-specific keywords
    • Grammar and clarity improvements
    • ATS optimization tips
  4. User reviews and accepts/rejects suggestions

Section-specific optimization:

  • Optimize individual sections (summary, experience)
  • Tailor for specific job description (paste job posting)
  • Multiple optimization styles (professional, creative, technical)

Requirements: OpenAI API key configured, user has AI credits remaining.

To generate a cover letter:

  1. Go to Dashboard → Cover Letters
  2. Click Create with AI
  3. Provide inputs:
    • Select your resume (for context)
    • Paste job description
    • Choose tone (professional, enthusiastic, formal)
    • Add any specific points to highlight
  4. Click Generate
  5. AI creates personalized cover letter
  6. Edit as needed and save

Cover letter features:

  • Multiple templates available
  • Customizable after generation
  • Download as PDF or Word
  • Attach directly when applying

To download resume:

  1. Go to Dashboard → My Resumes
  2. Open the resume you want to download
  3. Click Download button
  4. Select format:
    • PDF: Best for most applications
    • Word (.docx): If editing needed
  5. File downloads automatically

Download limits:

  • Free users: Limited downloads per month
  • Premium users: Unlimited downloads
  • Configure limits in Admin → Packages

PDF quality: High-resolution, print-ready, ATS-compatible formatting.

Resume Builder:

  • 1-2 pages, concise
  • Focused on relevant experience
  • Used in USA, Canada, most industries
  • Tailored for specific job applications

CV Builder:

  • 2+ pages, comprehensive
  • Full career history, publications, research
  • Used in Europe, academia, medicine, research
  • Includes detailed education, certifications

Both builders offer:

  • Professional templates
  • AI optimization
  • PDF/Word download
  • Multiple documents per user

Access both from Dashboard → My Resumes or My CVs.

Portfolio Builder for creative professionals:

  1. Go to Dashboard → My Portfolio
  2. Click Create Portfolio
  3. Choose template style
  4. Add portfolio items:
    • Project title and description
    • Images/screenshots
    • Links to live projects
    • Technologies/skills used
    • Client/company name
  5. Arrange items in desired order
  6. Publish portfolio

Portfolio features:

  • Public shareable URL
  • Embed on personal website
  • Link from resume
  • Analytics (views, clicks)

Ideal for designers, developers, photographers, writers.

AI-powered interview preparation:

  1. Go to Dashboard → Interview Practice
  2. Select interview type:
    • General behavioral
    • Technical (specify field)
    • Industry-specific
    • Based on specific job posting
  3. AI generates relevant questions
  4. User types or records answers
  5. AI provides feedback on:
    • Answer structure (STAR method)
    • Key points covered
    • Improvement suggestions
    • Sample strong answers

Practice modes:

  • Timed responses (interview simulation)
  • Unlimited time (learning mode)
  • Review past practice sessions

Managing templates:

  1. Go to Admin Panel → Templates
  2. Select category:
    • Resume Templates
    • CV Templates
    • Cover Letter Templates
    • Portfolio Templates

Template settings:

  • Enable/Disable: Show or hide template
  • Free/Premium: Available to all or paid users only
  • Category: Professional, Modern, Creative, etc.
  • Sort Order: Display priority
  • Preview Image: Thumbnail shown to users

Template categories:

  1. Go to Admin → Templates → Categories
  2. Add/edit/delete categories
  3. Assign templates to categories

Resume import options:

  • LinkedIn Import: Connect LinkedIn to pull profile data
  • PDF Upload: Upload existing PDF resume
  • Manual Entry: Type information directly

PDF parsing (AI-assisted):

  1. Upload PDF resume
  2. AI extracts:
    • Contact information
    • Work experience
    • Education
    • Skills
  3. Review and correct any errors
  4. Choose template and save

Note: Parsing accuracy depends on original PDF formatting. Clean, text-based PDFs work best.

After import: User can edit all fields and enhance with AI optimization.

💳 Payments & Subscriptions

Supported payment gateways:

Gateway Best For
Stripe USA, Europe, 40+ countries - Cards, Apple Pay, Google Pay
PayPal Global - PayPal balance, cards
Flutterwave Africa - Cards, mobile money, bank transfer
Paystack Nigeria, Ghana, South Africa, Kenya
Razorpay India - UPI, cards, netbanking, wallets

Enable multiple gateways simultaneously. Users choose at checkout.

Step-by-step Stripe setup:

  1. Create account at stripe.com
  2. Complete business verification
  3. Get API keys from Developers → API Keys:
    • Publishable key (pk_live_...)
    • Secret key (sk_live_...)
  4. Set up webhook:
    • Go to Developers → Webhooks
    • Add endpoint: https://yourdomain.com/api/v1/payment/webhook/stripe
    • Select events: checkout.session.completed, customer.subscription.*, invoice.*
    • Copy webhook signing secret (whsec_...)
  5. Add to Admin → Settings → Payments:
    • Enable Stripe
    • Paste all three keys
    • Save

Test mode: Use test keys (pk_test_, sk_test_) for testing.

PayPal setup:

  1. Login to PayPal Developer
  2. Go to Apps & Credentials
  3. Create new app or use default
  4. Copy Client ID and Secret
  5. Set up webhook:
    • Add webhook URL: https://yourdomain.com/api/v1/payment/webhook/paypal
    • Subscribe to relevant events
  6. In Admin → Settings → Payments:
    • Enable PayPal
    • Select mode: Sandbox (test) or Live
    • Enter Client ID and Secret
    • Save

PayPal modes:

  • Sandbox: For testing with fake accounts
  • Live: Real payments

Webhooks are CRITICAL because:

  • They notify your site when payment is confirmed
  • Without webhooks, subscriptions won't activate automatically
  • They handle recurring payment renewals
  • They process refunds and cancellations

Webhook URLs for each gateway:

  • Stripe: /api/v1/payment/webhook/stripe
  • PayPal: /api/v1/payment/webhook/paypal
  • Flutterwave: /api/v1/payment/webhook/flutterwave
  • Paystack: /api/v1/payment/webhook/paystack
  • Razorpay: /api/v1/payment/webhook/razorpay

Testing webhooks:

  • Stripe: Use Stripe CLI or dashboard webhook tester
  • Check storage/logs/laravel.log for webhook errors

To set up multiple currencies:

  1. Go to Admin Panel → Settings → Currencies
  2. View available currencies
  3. Enable currencies you want to accept
  4. Set one as default currency

For each currency, configure:

  • Symbol: $, €, £, etc.
  • Code: USD, EUR, GBP, etc.
  • Exchange Rate: Relative to base currency
  • Symbol Position: Before or after amount
  • Decimal Places: 0, 2, etc.

Exchange rate options:

  • Manual: Set rates yourself
  • Automatic: Fetch from exchange rate API

Users see prices in their preferred currency. Payments processed in your configured currency.

Automatic renewal process:

  1. User subscribes to a package
  2. Payment gateway stores payment method
  3. Before expiration, system notifies user
  4. On renewal date:
    • Gateway charges saved payment method
    • Webhook notifies your site
    • Subscription extended automatically
    • Confirmation email sent

If renewal fails:

  • User notified via email
  • Grace period (configurable) to update payment
  • After grace period, subscription suspended

Manual renewal: Users can also manually renew from their dashboard before expiration.

User cancellation:

  1. Go to Dashboard → My Subscription
  2. Click Cancel Subscription
  3. Confirm cancellation
  4. Subscription remains active until end of billing period
  5. No automatic renewal after that

Admin cancellation:

  1. Go to Admin → Subscriptions
  2. Find user's subscription
  3. Click Cancel
  4. Choose: Immediate or end of period

After cancellation:

  • User keeps access until period ends
  • Then reverts to free tier
  • Data (resumes, applications) preserved
  • Can resubscribe anytime

Refunds are processed through the payment gateway:

For Stripe:

  1. Login to Stripe Dashboard
  2. Find the payment in Payments
  3. Click the payment → Refund
  4. Choose full or partial refund
  5. Confirm refund

For PayPal:

  1. Login to PayPal Business
  2. Go to Activity
  3. Find transaction → Issue Refund

After refund:

  • Webhook notifies your system (if configured)
  • Admin may need to manually adjust subscription status
  • Go to Admin → Subscriptions → Cancel/adjust

Tip: Create a refund policy in legal pages.

Creating discount coupons:

  1. Go to Admin Panel → Coupons
  2. Click Add New Coupon
  3. Configure:
    • Code: e.g., SAVE20, WELCOME50
    • Discount Type: Percentage or Fixed amount
    • Discount Value: e.g., 20% or $10
    • Valid From/To: Date range
    • Usage Limit: Total uses allowed
    • Per User Limit: Uses per user
    • Minimum Order: Minimum purchase amount
    • Applicable Packages: All or specific
  4. Save coupon

Users apply coupons: Enter code at checkout to receive discount.

Revenue and financial data:

  1. Go to Admin Panel → Dashboard for overview
  2. Go to Admin → Transactions for details

Available reports:

  • Revenue Overview: Total, monthly, daily revenue
  • Transaction History: All payments with details
  • Subscription Report: Active, expired, cancelled
  • Gateway Breakdown: Revenue by payment method
  • Package Performance: Which packages sell best

Exporting data:

  • Filter by date range
  • Click Export
  • Download CSV for accounting

For detailed analytics: Also check your payment gateway's dashboard (Stripe, PayPal) for additional insights.

Email & Notifications

Automatic email notifications:

Event Recipient
Registration confirmation New user
Email verification New user
Password reset User requesting reset
Job application received Employer
Application status change Job seeker
Payment confirmation Subscriber
Subscription expiring Subscriber
New message received Message recipient
Company verified Employer

Email templates location:

backend/resources/views/emails/

Available templates:

  • welcome.blade.php - New user welcome
  • verify-email.blade.php - Email verification
  • password-reset.blade.php - Password reset
  • application-received.blade.php - New application
  • application-status.blade.php - Status change
  • payment-confirmation.blade.php - Payment receipt
  • subscription-expiring.blade.php - Renewal reminder

Customization:

  1. Edit Blade template files
  2. Use Laravel Blade syntax
  3. Available variables documented in each template
  4. Test with: php artisan email:preview

Branding: Templates automatically use your site name, logo, and colors from settings.

Common causes and fixes:

  1. SMTP not configured:
    • Check Admin → Settings → Email
    • Verify host, port, username, password
  2. Queue not running:
    • Emails are queued for better performance
    • Run: php artisan queue:work
    • Or set up Supervisor for persistent queue
  3. Wrong encryption:
    • Port 465: Use ssl
    • Port 587: Use tls
  4. Firewall blocking:
    • Ensure outbound ports 465/587 are open
  5. Gmail specific:
    • Enable 2FA and use App Password
    • Regular password won't work

Test email: php artisan email:test your@email.com

Check logs: storage/logs/laravel.log

Real-time notifications via Pusher:

  1. Create account at pusher.com
  2. Create a Channels app
  3. Get credentials (App ID, Key, Secret, Cluster)
  4. Configure in Admin → Settings → Pusher

Notification types:

  • New message received (real-time chat)
  • Application status changed
  • New job matching user's profile
  • Company profile viewed

User notification preferences:

  • Users can control in Settings → Notifications
  • Toggle email vs push vs both
  • Mute specific notification types

Without Pusher: System falls back to email notifications only.

Newsletter functionality:

  1. Go to Admin Panel → Newsletter
  2. Click Create Campaign
  3. Compose email:
    • Subject line
    • Email content (rich text editor)
    • Preview before sending
  4. Select recipients:
    • All users
    • Job seekers only
    • Employers only
    • Subscribers only
    • Custom segment
  5. Schedule or send immediately

Best practices:

  • Use transactional email service for bulk (SendGrid, Mailgun)
  • Include unsubscribe link (automatic)
  • Respect user email preferences
  • Monitor bounce rates

🔒 Security

Security measures implemented:

  • Password hashing: Bcrypt with salt (Laravel default)
  • HTTPS: All traffic encrypted via SSL/TLS
  • CSRF protection: All forms protected against cross-site attacks
  • XSS prevention: Output escaping and Content Security Policy
  • SQL injection prevention: Parameterized queries via Eloquent ORM
  • Rate limiting: API throttling prevents brute force
  • Session security: Secure, HTTP-only cookies

Data at rest:

  • Sensitive data encrypted in database
  • File uploads scanned for malware
  • Regular backup encryption

Compliance: Follow GDPR guidelines for user data handling.

2FA for users:

  1. User goes to Settings → Security
  2. Click Enable 2FA
  3. Scan QR code with authenticator app:
    • Google Authenticator
    • Authy
    • Microsoft Authenticator
  4. Enter verification code to confirm
  5. Save backup codes securely

Admin enforcement:

  1. Go to Admin → Settings → Security
  2. Enable Require 2FA for admins
  3. Optionally require for all users

Recovery: If user loses device, admin can reset 2FA from user management.

Anti-spam measures:

  1. reCAPTCHA:
    • Go to Admin → Settings → Security
    • Enable Google reCAPTCHA
    • Enter Site Key and Secret Key
    • Choose v2 checkbox or v3 invisible
  2. Email verification:
    • Require email verification before access
    • Unverified accounts auto-deleted after X days
  3. Rate limiting:
    • Limit registrations per IP
    • Configurable in settings
  4. Honeypot fields:
    • Invisible form fields that trap bots
    • Enabled by default

Manual moderation: Enable "Approve new users" for high-risk periods.

SSL is REQUIRED for production.

Option 1: Let's Encrypt (Free):

# Install Certbot
sudo apt install certbot python3-certbot-nginx

# Get certificate
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

# Auto-renewal (automatic via cron)

Option 2: Paid SSL from hosting provider:

  • Purchase SSL certificate
  • Install via hosting control panel
  • Or upload cert files to server

After SSL setup:

  1. Update .env: APP_URL=https://yourdomain.com
  2. Force HTTPS in Nginx configuration
  3. Clear cache: php artisan config:clear

Testing: Visit SSL Labs to verify certificate.

Built-in GDPR features:

  • Cookie consent: Popup for EU visitors
  • Privacy policy page: Editable in admin
  • Data export: Users can download their data
  • Account deletion: Users can request deletion
  • Consent tracking: Records of user consents

Enabling GDPR features:

  1. Go to Admin → Settings → Privacy
  2. Enable cookie consent banner
  3. Configure consent options
  4. Set data retention periods

Data subject requests:

  • Users request via dashboard or email
  • Admin reviews in Admin → Privacy Requests
  • Process within 30 days (GDPR requirement)

Note: Consult legal counsel for full compliance in your jurisdiction.

🔧 Troubleshooting

Step 1: Check Laravel logs:

tail -100 storage/logs/laravel.log

Common causes:

  1. Permission issues:
    sudo chown -R www-data:www-data storage bootstrap/cache
    sudo chmod -R 775 storage bootstrap/cache
  2. Missing .env file:
    cp .env.example .env
    php artisan key:generate
  3. Cache issues:
    php artisan config:clear
    php artisan cache:clear
    php artisan view:clear
  4. Database connection:
    • Verify DB credentials in .env
    • Check MySQL/PostgreSQL is running
  5. Composer dependencies:
    composer install --no-dev

Enable debug temporarily: Set APP_DEBUG=true in .env to see detailed errors (disable in production after fixing).

White screen usually indicates PHP error:

  1. Check PHP error logs:
    # Nginx
    tail -50 /var/log/nginx/error.log
    
    # Apache
    tail -50 /var/log/apache2/error.log
    
    # PHP-FPM
    tail -50 /var/log/php8.2-fpm.log
  2. Check Laravel logs:
    tail -50 storage/logs/laravel.log
  3. PHP version mismatch:
    • Requires PHP 8.2+
    • Check: php -v
  4. Missing PHP extensions:
    php -m | grep -E "pdo|mysql|mbstring|xml|curl"
  5. Memory limit:
    • Increase in php.ini: memory_limit = 256M

Check these in order:

  1. Storage link missing:
    php artisan storage:link
  2. APP_URL incorrect:
    • Check .env: APP_URL=https://yourdomain.com
    • Must match actual domain
    • Include https:// if using SSL
  3. Permissions on storage:
    chmod -R 755 storage/app/public
    chmod -R 755 public/storage
  4. Nginx configuration:
    • Ensure static files are served correctly
    • Check location blocks in nginx.conf
  5. Clear cache after changes:
    php artisan config:clear
    php artisan cache:clear

Session issues troubleshooting:

  1. Session driver:
    • Check .env: SESSION_DRIVER=database (recommended)
    • If using file driver, check permissions on storage/framework/sessions
  2. Session domain:
    • Check SESSION_DOMAIN in .env
    • Should match your domain or be null
  3. HTTPS mismatch:
    • If using HTTPS, set SESSION_SECURE_COOKIE=true
    • If HTTP only, set SESSION_SECURE_COOKIE=false
  4. Cache issues:
    php artisan config:clear
    php artisan cache:clear
  5. Browser cookies:
    • Clear browser cookies and cache
    • Try incognito/private mode

401 errors indicate authentication problems:

  1. Token not sent:
    • Ensure Authorization header: Bearer YOUR_TOKEN
    • Token stored correctly after login
  2. Token expired:
    • Tokens have expiration time
    • Re-authenticate to get new token
  3. Sanctum configuration:
    • Check SANCTUM_STATEFUL_DOMAINS in .env
    • Must include your frontend domain
  4. CORS issues:
    • Check config/cors.php
    • Frontend origin must be allowed
  5. User account issues:
    • Account may be suspended
    • Email not verified (if required)

Queue troubleshooting:

  1. Queue worker not running:
    # Start manually
    php artisan queue:work
    
    # Check if running
    ps aux | grep queue
  2. Supervisor not configured:
    • For production, use Supervisor
    • See Server Setup guide for configuration
  3. Queue driver:
    • Check .env: QUEUE_CONNECTION=database
    • If using Redis: ensure Redis is running
  4. Failed jobs:
    # View failed jobs
    php artisan queue:failed
    
    # Retry all failed
    php artisan queue:retry all
  5. Restart after code changes:
    php artisan queue:restart

Method 1: Using Artisan command:

php artisan tinker

# Find admin user
$user = \App\Models\User::where('email', 'superadmin@test.com')->first();

# Reset password
$user->password = bcrypt('NewPassword123!');
$user->save();

exit

Method 2: Direct database:

# Generate hash
php -r "echo password_hash('NewPassword123!', PASSWORD_BCRYPT);"

# Copy the hash, then in MySQL:
UPDATE users SET password = 'PASTE_HASH_HERE' 
WHERE email = 'superadmin@test.com';

Method 3: Password reset email:

  • Use "Forgot Password" on login page
  • Requires working email configuration

After reset: Clear any failed login attempts and login with new password.

Performance optimization checklist:

  1. Enable caching:
    php artisan config:cache
    php artisan route:cache
    php artisan view:cache
  2. Use Redis for cache/sessions:
    • Install Redis
    • Set CACHE_DRIVER=redis
    • Set SESSION_DRIVER=redis
  3. Enable OPcache:
    • Uncomment in php.ini
    • Improves PHP execution speed
  4. Database optimization:
    • Add indexes for frequently queried columns
    • Optimize tables periodically
  5. Use CDN for assets:
    • Configure in Admin → Settings → CDN
    • Offloads static files
  6. Image optimization:
    • Enable image compression in settings
    • Use WebP format

Backup components:

  • Database (most critical)
  • Uploaded files (storage/app/public)
  • .env file (configuration)

Database backup:

# MySQL
mysqldump -u username -p database_name > backup_$(date +%Y%m%d).sql

# Compressed
mysqldump -u username -p database_name | gzip > backup_$(date +%Y%m%d).sql.gz

Files backup:

tar -czvf uploads_backup.tar.gz storage/app/public

Restore database:

mysql -u username -p database_name < backup.sql

Restore files:

tar -xzvf uploads_backup.tar.gz

Automated backups:

  • Set up cron job for daily backups
  • Store backups off-server (S3, Google Drive)
  • Test restoration periodically

Support options:

  1. Documentation:
    • Installation Guide
    • Server Setup Guide
    • Admin Guide
    • Troubleshooting Guide
    • This FAQ
  2. Support Portal:
  3. Email Support:
  4. Live Chat (Pro/Extended users only):
    • Quick support via live chat
    • Available during business hours
  5. When contacting support, include:
    • Purchase code
    • PHP version (php -v)
    • Error messages from storage/logs/laravel.log
    • Steps to reproduce the issue
    • Screenshots if applicable

Support hours: We typically respond within 24-48 hours on business days.

🎧 Support & Helpdesk

To get support, visit https://dafriappsdev.com/user-panel and create an account. Once logged in, you can open a support ticket.

You may also email us directly at support@dafriappsdev.com.

  • Regular customers: 6 months of support
  • Extended support customers: 12 months of support
  • Pro / Extended users: Access to live chat support in addition to tickets and email

Yes. Live chat support is available for Extended Support and Pro users.

Regular users can still get help via support tickets and email.

Support tickets are usually answered within 24–48 hours on business days.

Pro and Extended users may receive faster responses, depending on availability and issue priority.

Our support team operates Monday to Friday, excluding public holidays.

Response times may be slightly longer on weekends or holidays.

Yes, we offer customization services based on your requirements.

Customization pricing starts from USD 99 to USD 399, depending on the complexity of the task.

Please contact us via support ticket, email, or live chat to discuss your needs.

Free support includes:

  • Installation assistance
  • Configuration guidance
  • Bug fixes related to the original script
  • Feature explanations and usage help

Free support does not include:

  • Custom feature development
  • Major design changes
  • Third-party plugin or server issues
  • Custom integrations beyond the original scope

These services are available as paid customization.

  1. Log in to your account at https://dafriappsdev.com/user-panel
  2. Go to the Support / Tickets section
  3. Create a new ticket and clearly describe your issue
  4. Attach screenshots or error logs if available

Yes. You can reply to your open ticket at any time from your user panel to provide additional details or updates.

No. Opening multiple tickets for the same issue may delay resolution.

Please keep all communication related to one issue in a single ticket.

Yes, we can assist with server setup and installation as a paid service if required.

Contact support to request a quote.

For quicker resolution, please include:

  • Product name and version
  • Server details (if applicable)
  • Error messages or screenshots
  • Clear steps to reproduce the issue

Yes. You can either:

  • Renew your support plan
  • Purchase extended support
  • Request paid assistance for specific tasks

You can renew or upgrade your support by contacting us through a support ticket or emailing support@dafriappsdev.com.

Refund policies are governed by CodeCanyon/Envato Market terms.

We do not offer refunds for:

  • Change of mind after purchase
  • Lack of expertise to use the product
  • Server or hosting incompatibility that can be resolved

If you experience a genuine technical issue that we cannot resolve, please contact Envato Support for refund requests.

Yes! We welcome feature suggestions from our customers.

How to submit a feature request:

  1. Open a support ticket with the subject "Feature Request"
  2. Describe the feature in detail
  3. Explain the use case and benefit

Popular feature requests may be included in future updates. Custom features can also be developed as a paid service.

Yes, we provide comprehensive documentation including:

  • Installation Guide
  • Server Setup Guide
  • Admin Guide
  • Troubleshooting Guide
  • This FAQ section

Additional training: One-on-one training sessions or video tutorials can be arranged as a paid service. Contact support for pricing.

Our primary support language is English.

We will do our best to assist customers who communicate in other languages, but response quality and speed may be affected.

Yes, we offer ongoing maintenance packages that include:

  • Regular updates and security patches
  • Server monitoring and optimization
  • Backup management
  • Priority support
  • Minor customizations

Contact us via support ticket or email to discuss maintenance plans and pricing.

To verify your purchase:

  1. Log in to your Envato/CodeCanyon account
  2. Go to Downloads
  3. Find the product and click Download → License Certificate
  4. Your Purchase Code is in the certificate
  5. Include this code when opening support tickets

We may request your purchase code to verify eligibility for support.

Important: We only provide support for purchases made directly through CodeCanyon/Envato Market.

If you purchased from a third party or reseller:

  • You may not be eligible for official support
  • Your license may be invalid or pirated
  • You will not receive updates

Please purchase only from the official CodeCanyon listing to ensure you receive full support and updates.

Yes, with your explicit permission.

For complex issues, we may request:

  • SSH/SFTP access to your server
  • Database access (read-only preferred)
  • Admin panel credentials

Security recommendations:

  • Create temporary credentials for support
  • Change passwords after issue is resolved
  • Never share credentials publicly

Server access is only used for troubleshooting and is kept confidential.

For urgent production issues:

  1. Open a support ticket with "URGENT" in the subject
  2. Clearly describe the impact (e.g., "Site is down", "Payments failing")
  3. Provide all necessary access and information upfront

Extended/Pro users: Use live chat for immediate assistance during business hours.

Note: Please reserve "URGENT" status for genuine emergencies. Misuse may delay actual urgent requests.

We appreciate your feedback!

To leave a review:

  1. Go to the product page on CodeCanyon
  2. Scroll down to the Reviews section
  3. Click Add Your Review
  4. Rate the product and share your experience

Your review helps us:

  • Improve the product based on feedback
  • Help other customers make informed decisions
  • Motivate our team to continue development

If you have suggestions or concerns, please contact support first — we'd love to resolve any issues before you leave a review.

🤝 Still Need Help?

Our dedicated team is here to assist you every step of the way. Choose the best way to reach us based on your needs.

💼

Sales & Partnerships

Interested in purchasing, bulk licensing, or business partnerships? Let's talk!

✉️ sales@dafriappsdev.com
⚡ Response within 24 hours
💡

General Inquiries

Questions about features, capabilities, or just want to learn more about Ashie?

✉️ info@dafriappsdev.com
⚡ Response within 24-48 hours
🔑

License Issues

Activation problems, domain changes, license transfers, or renewal questions?

✉️ licensing@dafriappsdev.com
🔥 Priority support - 12 hours
🛠️

Technical Support

Installation help, bug reports, server issues, or technical assistance needed?

✉️ support@dafriappsdev.com
🔥 Priority support - 12 hours
🤝

Partnership Inquiries

Reseller, technology, strategic alliance, or integration partnership opportunities?

✉️ partner@dafriappsdev.com
📈 Business development team
💸

Affiliate Program

Join our affiliate program, commission inquiries, payouts, or referral tracking?

✉️ affiliate@dafriappsdev.com
💰 Up to 30% commission
🕐
Business Hours: Monday - Friday, 9:00 AM - 6:00 PM (SAST/UTC+2)
Emergency support available 24/7 for Pro & Extended license holders