125 Essential Questions & Answers for Ashie AI Resume | JobPortal
← Back to DocumentationThe minimum server requirements are:
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:
Detailed setup guides for HestiaCP, aaPanel, and cPanel are available in the Server Setup Guide.
Shared hosting CAN work if your host provides:
However, VPS is strongly recommended for production sites because:
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:
On HestiaCP:
After enabling, restart PHP: sudo systemctl restart php8.2-fpm
Set the following permissions for security and functionality:
storage/ → 775 (writable)storage/app/ → 775storage/framework/ → 775storage/logs/ → 775bootstrap/cache/ → 775public/ → 755Quick 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:
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:
.env file: APP_URL=https://yourdomain.comphp artisan config:clearSSL auto-renewal is handled by certbot cron job.
On cPanel:
ashiejob_db)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:
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.phptry_files $uri $uri/ /index.php?$query_string; for clean URLsfastcgi_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.
Method 1 - Via cPanel File Manager:
public_html folderpublic/ 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):
The Installation Wizard is a browser-based installer that guides you through setup.
To access: Visit https://yourdomain.com/install
The wizard helps you:
Note: If wizard doesn't appear, ensure .env file doesn't exist yet or APP_INSTALLED=false.
During Installation Wizard (Step 7):
To find your Purchase Code:
Important: One license = one domain. Contact support to transfer license.
After running database seeders during installation, these demo accounts are created:
| Role | 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.comAPP_ENV=productionAPP_DEBUG=falseDB_HOST=127.0.0.1DB_DATABASE=your_databaseDB_USERNAME=your_usernameDB_PASSWORD=your_passwordStep 4: Run migrations:
php artisan migrate --seed
Laravel requires a cron job to run scheduled tasks (subscription renewals, cleanup, etc.).
On cPanel:
cd /home/username/public_html && php artisan schedule:run >> /dev/null 2>&1On 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
public/ folderAPP_URL=https://jobs.yourdomain.com in .envSubdirectory: ⚠️ Possible but not recommended
Example: yourdomain.com/jobs
Best practice: Use a dedicated subdomain for clean URLs and easier maintenance.
Method 1 - Using phpMyAdmin:
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:
See the Admin Guide for detailed configuration instructions.
Via Admin Panel (Recommended):
For Gmail: Enable 2FA and create an App Password at Google App Passwords
OpenAI powers resume optimization, cover letter generation, and job matching:
sk-proj-)OPENAI_API_KEY=sk-proj-your-key-herephp artisan config:clearCost: OpenAI charges per usage. Set limits in Admin → AI Limits to control costs.
https://yourdomain.com/api/v1/auth/google/callback.env:
GOOGLE_CLIENT_ID=your_client_idGOOGLE_CLIENT_SECRET=your_client_secretGOOGLE_REDIRECT_URI=${APP_URL}/api/v1/auth/google/callbackhttps://yourdomain.com/api/v1/auth/facebook/callback.env:
FACEBOOK_CLIENT_ID=your_app_idFACEBOOK_CLIENT_SECRET=your_app_secretFACEBOOK_REDIRECT_URI=${APP_URL}/api/v1/auth/facebook/callbackNote: App must be in "Live" mode for public use (requires privacy policy URL).
Pusher enables real-time messaging between employers and job seekers:
.env:
BROADCAST_CONNECTION=pusherPUSHER_APP_ID=your_app_idPUSHER_APP_KEY=your_app_keyPUSHER_APP_SECRET=your_app_secretPUSHER_APP_CLUSTER=eu (or your region)php artisan config:clearFree 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=redisSESSION_DRIVER=redisQUEUE_CONNECTION=redisREDIS_HOST=127.0.0.1REDIS_PORT=6379Step 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):
For dedicated asset CDN:
.env:
CDN_ENABLED=trueCDN_PROVIDER=cloudflareCDN_DOMAIN=cdn.yourdomain.comResult: Faster page loads globally, reduced server bandwidth.
Cloud storage is recommended for scalability and backup:
For AWS S3:
.env:
FILESYSTEM_DISK=s3AWS_ACCESS_KEY_ID=your_keyAWS_SECRET_ACCESS_KEY=your_secretAWS_DEFAULT_REGION=us-east-1AWS_BUCKET=your-bucket-nameS3-compatible alternatives: DigitalOcean Spaces, MinIO, Wasabi
Benefits: Unlimited storage, automatic backups, CDN integration.
Via Admin Panel:
For theme colors: Go to Admin → Settings → Theme
Changes apply immediately across the entire site.
Ashie AI Resume | JobPortal supports 22 languages out of the box:
To manage languages:
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:
Translations are stored in the database for easy management.
To access the Admin Panel:
https://yourdomain.com/loginsuperadmin@test.com / password123)https://yourdomain.com/adminAdmin Panel sections:
The Dashboard provides a real-time overview of your job portal:
Key Metrics:
Charts:
Recent Activity:
To create subscription packages:
Package features you can toggle:
Packages apply to both employers and job seekers (configure separately).
Supported payment gateways:
To configure:
⚠️ Important: Set up webhook URLs or subscriptions won't activate automatically. See Payment Webhooks Setup.
Blog Management:
Other content sections:
Global SEO settings:
Page-specific SEO:
/sitemap.xmlAnalytics integration:
Header customization:
Footer customization:
Navigation Menu:
Control AI feature usage to manage OpenAI costs:
Limit types:
Users see their remaining usage in their dashboard.
To edit legal pages:
Pre-filled templates: Default templates are included but should be customized for your jurisdiction and business.
Cookie Consent:
To view transactions:
Filtering options:
Subscriptions:
Export transactions to CSV for accounting.
To manage users:
Available actions:
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:
Method 1 - Promote existing user:
Method 2 - Create new admin:
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:
What happens when suspended:
To reactivate:
Permanent delete: Use only for spam accounts. Deleted users cannot be recovered.
Self-service password reset:
Admin reset (for users who can't access email):
If reset emails aren't sending:
Verified companies display a badge, building trust with job seekers:
To verify a company:
Benefits of verified status:
No, each email can only have one role.
A user registers as either:
If someone needs both:
Role switching:
This design prevents conflicts and keeps profiles clean.
To export user data:
Exported data includes:
GDPR user data request:
Registration flow:
Before verification, users can:
To resend verification:
To manually verify (skip email):
Super admins can login as any user to troubleshoot issues:
To impersonate:
What you can do while impersonating:
To stop impersonating:
⚠️ Important: Actions taken while impersonating are logged. Use responsibly.
Steps to post a job:
Jobs may require admin approval depending on settings.
To manage job listings:
Available actions:
Auto-moderation settings:
Application process:
Application requirements:
After applying:
To view applications:
Application management:
Bulk actions:
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:
Category fields:
Default categories include:
Categories help job seekers filter and discover relevant positions.
Featured jobs get premium placement:
How employers get featured listings:
To manually feature (admin):
Configure in packages: Admin → Packages → Edit → Set "Featured Jobs" quota.
Job seekers can search by:
Search features:
SEO-friendly URLs: Jobs have clean URLs like /jobs/senior-developer-san-francisco
Job expiration:
Renewal options:
Admin settings:
Real-time messaging system:
Starting a conversation:
Message features:
Accessing messages:
Requirements: Configure Pusher in .env for real-time functionality.
To create a resume:
Users can create multiple resumes for different job types.
Template categories:
Template features:
Managing templates (Admin):
AI-powered resume enhancement:
Section-specific optimization:
Requirements: OpenAI API key configured, user has AI credits remaining.
To generate a cover letter:
Cover letter features:
To download resume:
Download limits:
PDF quality: High-resolution, print-ready, ATS-compatible formatting.
Resume Builder:
CV Builder:
Both builders offer:
Access both from Dashboard → My Resumes or My CVs.
Portfolio Builder for creative professionals:
Portfolio features:
Ideal for designers, developers, photographers, writers.
AI-powered interview preparation:
Practice modes:
Managing templates:
Template settings:
Template categories:
Resume import options:
PDF parsing (AI-assisted):
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.
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:
https://yourdomain.com/api/v1/payment/webhook/stripeTest mode: Use test keys (pk_test_, sk_test_) for testing.
PayPal setup:
https://yourdomain.com/api/v1/payment/webhook/paypalPayPal modes:
Webhooks are CRITICAL because:
Webhook URLs for each gateway:
/api/v1/payment/webhook/stripe/api/v1/payment/webhook/paypal/api/v1/payment/webhook/flutterwave/api/v1/payment/webhook/paystack/api/v1/payment/webhook/razorpayTesting webhooks:
storage/logs/laravel.log for webhook errorsTo set up multiple currencies:
For each currency, configure:
Exchange rate options:
Users see prices in their preferred currency. Payments processed in your configured currency.
Automatic renewal process:
If renewal fails:
Manual renewal: Users can also manually renew from their dashboard before expiration.
User cancellation:
Admin cancellation:
After cancellation:
Refunds are processed through the payment gateway:
For Stripe:
For PayPal:
After refund:
Tip: Create a refund policy in legal pages.
Creating discount coupons:
Users apply coupons: Enter code at checkout to receive discount.
Revenue and financial data:
Available reports:
Exporting data:
For detailed analytics: Also check your payment gateway's dashboard (Stripe, PayPal) for additional insights.
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 welcomeverify-email.blade.php - Email verificationpassword-reset.blade.php - Password resetapplication-received.blade.php - New applicationapplication-status.blade.php - Status changepayment-confirmation.blade.php - Payment receiptsubscription-expiring.blade.php - Renewal reminderCustomization:
php artisan email:previewBranding: Templates automatically use your site name, logo, and colors from settings.
Common causes and fixes:
php artisan queue:workssltlsTest email: php artisan email:test your@email.com
Check logs: storage/logs/laravel.log
Real-time notifications via Pusher:
Notification types:
User notification preferences:
Without Pusher: System falls back to email notifications only.
Newsletter functionality:
Best practices:
Security measures implemented:
Data at rest:
Compliance: Follow GDPR guidelines for user data handling.
2FA for users:
Admin enforcement:
Recovery: If user loses device, admin can reset 2FA from user management.
Anti-spam measures:
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:
After SSL setup:
.env: APP_URL=https://yourdomain.comphp artisan config:clearTesting: Visit SSL Labs to verify certificate.
Built-in GDPR features:
Enabling GDPR features:
Data subject requests:
Note: Consult legal counsel for full compliance in your jurisdiction.
Step 1: Check Laravel logs:
tail -100 storage/logs/laravel.log
Common causes:
sudo chown -R www-data:www-data storage bootstrap/cache
sudo chmod -R 775 storage bootstrap/cache
cp .env.example .env
php artisan key:generate
php artisan config:clear
php artisan cache:clear
php artisan view:clear
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:
# 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
tail -50 storage/logs/laravel.log
php -vphp -m | grep -E "pdo|mysql|mbstring|xml|curl"
memory_limit = 256MCheck these in order:
php artisan storage:link
APP_URL=https://yourdomain.comchmod -R 755 storage/app/public
chmod -R 755 public/storage
php artisan config:clear
php artisan cache:clear
Session issues troubleshooting:
SESSION_DRIVER=database (recommended)storage/framework/sessionsSESSION_DOMAIN in .envSESSION_SECURE_COOKIE=trueSESSION_SECURE_COOKIE=falsephp artisan config:clear
php artisan cache:clear
401 errors indicate authentication problems:
Bearer YOUR_TOKENSANCTUM_STATEFUL_DOMAINS in .envconfig/cors.phpQueue troubleshooting:
# Start manually
php artisan queue:work
# Check if running
ps aux | grep queue
QUEUE_CONNECTION=database# View failed jobs
php artisan queue:failed
# Retry all failed
php artisan queue:retry all
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:
After reset: Clear any failed login attempts and login with new password.
Performance optimization checklist:
php artisan config:cache
php artisan route:cache
php artisan view:cache
CACHE_DRIVER=redisSESSION_DRIVER=redisBackup components:
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:
Support options:
php -v)storage/logs/laravel.logSupport hours: We typically respond within 24-48 hours on business days.
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.
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:
Free support does not include:
These services are available as paid customization.
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:
Yes. You can either:
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:
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:
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:
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:
Contact us via support ticket or email to discuss maintenance plans and pricing.
To verify your purchase:
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:
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:
Security recommendations:
Server access is only used for troubleshooting and is kept confidential.
For urgent production issues:
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:
Your review helps us:
If you have suggestions or concerns, please contact support first — we'd love to resolve any issues before you leave a review.
Our dedicated team is here to assist you every step of the way. Choose the best way to reach us based on your needs.
Interested in purchasing, bulk licensing, or business partnerships? Let's talk!
sales@dafriappsdev.comQuestions about features, capabilities, or just want to learn more about Ashie?
info@dafriappsdev.comActivation problems, domain changes, license transfers, or renewal questions?
licensing@dafriappsdev.comInstallation help, bug reports, server issues, or technical assistance needed?
support@dafriappsdev.comReseller, technology, strategic alliance, or integration partnership opportunities?
partner@dafriappsdev.comJoin our affiliate program, commission inquiries, payouts, or referral tracking?
affiliate@dafriappsdev.com