A. Introduction

Welcome to Job Vista. Job Vista is a comprehensive Job Portal platform designed for organizations, recruitment agencies, educational institutions, and job boards to manage and publish job opportunities, admit cards, and results.

Who it is designed for: It is built for startup founders, government job portals, HR companies, and career platforms who need a complete ecosystem.

  • Flutter mobile application: A responsive, native-feeling app for end users to browse jobs, apply, and receive push notifications.
  • Laravel REST API: A secure backend that manages data, authentication, and external services.
  • React admin panel: A sleek dashboard for administrators to manage jobs, users, and app settings.
  • Main capabilities: Job management, OTP authentication, detailed job qualifications/salaries, push notifications, saved jobs, and a clean user experience.

B. Technical Requirements

Ensure your server and local environment meet the following tested versions:

  • PHP: 8.3 or later
  • Laravel: 13.x
  • MySQL: 8.0 or later (compatible tested version)
  • Node.js: 22.x (tested version)
  • npm: 10.x (tested version)
  • Flutter SDK: 3.24.x (tested version)
  • Dart SDK: 3.5.x (tested version)
  • Composer: 2.x
  • Required PHP extensions: OpenSSL, PDO, Mbstring, Tokenizer, XML, Ctype, JSON, BCMath, Fileinfo, and cURL
  • Server: Apache and Nginx have both been tested on shared hosting and VPS environments.

C. Architecture Overview

Job Vista follows a decoupled client-server architecture.

  • Laravel (Backend): Contains routes/api.php for REST API endpoints. The app/Http/Controllers folder handles business logic. The app/Services folder manages Auth and OTP logic. The app/Models map to the database schema.
  • React (Frontend Admin): A Single Page Application (SPA) built with Vite. The src/pages folder contains route views, src/components holds reusable UI, and src/services/api.js manages Axios requests. Authentication uses token-based login.
  • Flutter (Mobile App): Uses Riverpod for state management. Features are organized inside lib/features/ (e.g., auth, jobs, quizzes). Each feature has presentation, domain, and data layers (Clean Architecture).
  • Data Flow: Both Flutter and React communicate with Laravel via secure REST endpoints using Sanctum bearer tokens.
  • File Uploads: Processed by Laravel controllers and stored in the local storage/app/public disk, accessible via symbolic links.
  • Notifications: Triggered via Laravel events/listeners and sent through external providers like Firebase.

D. Local Installation

1. Laravel API

cd backend
composer install
cp .env.example .env
php artisan key:generate

Configure `.env` with your local database credentials, then run:

php artisan migrate --seed
php artisan storage:link
php artisan serve

2. React Admin Panel

cd frontend
npm install

Create a `.env` file containing VITE_API_URL=http://127.0.0.1:8000/api, then run:

npm run dev

3. Flutter Application

cd mobile
flutter pub get

Update lib/core/constants/api_endpoints.dart to point to your local machine IP (e.g., 192.168.x.x:8000/api), then run:

flutter run

E. Production Deployment

cPanel / Shared Hosting Installation

Upload the backend contents to a secure folder (e.g., outside public_html). Point your subdomain or main domain's document root to the backend/public folder.

VPS Deployment & Laravel Configuration

Ensure Nginx/Apache document root points to /var/www/html/backend/public.

In your production .env file:

APP_ENV=production
APP_DEBUG=false
APP_URL=https://api.yourdomain.com
FORCE_HTTPS=true

Import your database structure (do not use migrate:fresh on production as it deletes data!):

composer install --no-dev --optimize-autoloader
php artisan key:generate
php artisan migrate --force
php artisan storage:link
php artisan optimize:clear
php artisan config:cache
php artisan route:cache
php artisan view:cache

Permissions: Ensure storage and bootstrap/cache folders have 775 permissions and are owned by the web server user.

React Production Build

In the frontend folder, update `.env` to point to your live API. Then run:

npm run build

Upload the contents of the dist folder to your web server (e.g., inside public_html/admin).

Flutter Production

Update your API URL to https://api.yourdomain.com/api.

flutter build appbundle --release

Cron Configuration for Laravel Scheduler

Add this to your server's cron tab:

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

F. Branding Customization

Customize Job Vista to fit your brand.

  • Application Name: Change this via the Admin Panel -> Settings -> General Settings.
  • Flutter App Icon: Replace the icon file in mobile/assets/icon/app_icon.png and run flutter pub run flutter_launcher_icons.
  • Splash Screen: Replace the image in mobile/assets/images/splash.png or modify lib/features/splash/splash_screen.dart.
  • Mobile App Logo: Replace mobile/assets/images/logo.png.
  • Admin Panel Logo: Replace frontend/src/assets/logo.png.
  • Theme Colors (Flutter): Modify lib/core/theme/app_colors.dart to change primary and secondary colors.
  • Theme Colors (React): Modify CSS variables in frontend/src/index.css.
  • Package Name / Application ID: Search globally for com.jobvista.app in the mobile directory and replace it. Update android/app/build.gradle and ios/Runner.xcodeproj.

G. High-Quality Interface Screenshots

Mobile Application

Mobile Home Job Listing Job Details Notifications Profile

Admin Panel

Admin Dashboard Job Management User Management

H. Troubleshooting

SymptomLikely CauseExact Fix
HTTP 500 errorMissing dependencies, incorrect PHP version, or database connection issue.Check storage/logs/laravel.log. Ensure .env DB credentials are correct. Run composer install.
Blank React pageJavaScript error or missing build files.Open browser console. Ensure you uploaded the contents of the dist folder, not the source code.
Laravel storage images not loadingStorage symlink missing.Run php artisan storage:link. If on shared hosting, create a symlink via cPanel.
Database connection failureWrong `.env` credentials.Update DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD in `.env`.
APP_KEY missingApplication key not generated.Run php artisan key:generate.
Composer PHP-version conflictServer uses older PHP.Update server PHP version to 8.3 from cPanel MultiPHP Manager.
CORS errorAPI URL mismatch or config issue.Ensure `config/cors.php` allows your React admin URL.
API URL incorrectly configuredReact `.env` issue.Ensure `VITE_API_URL` points to your backend.
npm install failureOld Node.js version.Update Node.js to v22+.
Flutter dependency conflictOutdated packages.Run flutter clean then flutter pub get.
SMTP authentication failureWrong SMTP credentials.Update SMTP username/password in Admin Settings or `.env`.
Push notifications not arrivingFirebase config missing.Add Firebase Server Key in Admin Settings.
Folder permission problemsServer restricts write access.Chmod storage and bootstrap/cache to 775.
Route not found after deploymentMissing .htaccess or Nginx config.Ensure the `.htaccess` file is present in the `public` folder and your webserver parses it.
Admin login failureIncorrect credentials or unmigrated DB.Run migrations/seeders. Default is admin@jobvista.test / password.
Cache showing old configurationLaravel cached old config.Run php artisan optimize:clear.
cPanel document-root problemsDomain points to wrong folder.Point your domain strictly to the public/ folder inside the backend directory.

I. Third-Party Services and Additional Costs

Job Vista supports integration with external services. These services require separate accounts and configuration by the buyer. Depending on the selected provider, free usage limits or paid plans may apply. Any subscription charges, message charges, email delivery charges, API charges, hosting costs, domain costs, and third-party service fees are not included with the item purchase.

FeatureExternal service requiredIncluded in purchase
Push notificationsFirebase Cloud MessagingService account and paid charges are not included
Email and OTP emailSMTP providerEmail-provider charges are not included
HostingPHP/Laravel serverNot included
Domain and SSLDomain providerNot included
App Store publishingDeveloper accountNot included

Configuring Accounts: You enter credentials (like Firebase Server Keys or SMTP passwords) via the React Admin Panel -> Settings. Never include your private credentials if you share your database.

J. Support Policy

Support is provided through the official support channel associated with this CodeCanyon item. Please include your purchase code, software version, error message, and relevant screenshots when requesting assistance.

We do not provide customization services or server setup as part of item support. Direct messaging or chat platforms are not official support channels.

K. Changelog and Credits

Version 1.0.0 – Initial release

Credits & Licenses

  • Laravel Framework (MIT License)
  • React.js (MIT License)
  • Flutter & Dart (BSD License)
  • Icons8 (for interface icons, preview only)