Welcome to QuizVerse Documentation

Complete step-by-step setup documentation for non-technical buyers and developers. Learn how to launch your web Installation Wizard, configure your Laravel 12 Backend, and publish your Flutter Mobile Application effortlessly.

⚡ Web Installation Wizard GUI Included
⚡ Backend: Laravel 12 (PHP 8.3+)
📱 Mobile: Flutter 3.x
🔥 Auth & Push: Firebase

1. Introduction

QuizVerse is an end-to-end, production-ready Quiz and Learning ecosystem. It consists of two seamlessly integrated applications:

  • Backend Admin Panel (Laravel 12): Features an interactive Web Installation Wizard, RESTful API endpoints, secure database management, user authorization, question management, coin economy, and real-time app settings.
  • Mobile Application (Flutter 3.x): Cross-platform iOS and Android app featuring Quiz Zone, Audio Quiz, Daily Quiz, Math Mania, Battle 1v1 Zone, Live Contests, Exam Module, Leaderboards, and AdMob/In-App Purchases.

📁 Item Package Contents

When you extract your purchased QuizVerse package, you will see the following directory structure:

Package Directory Tree
QuizVerse_Package/
├── admin-panel-v1.0.3.zip     # Laravel 12 Backend API & Web Installer Zip
├── quizverse-app-v1.0.3/       # Complete Flutter Cross-Platform Mobile Application Source Code
└── documentation.zip          # Setup Documentation & User Guides

2. Admin Panel

Introduction

The QuizVerse Admin Panel is built on Laravel 12. It includes a step-by-step GUI Web Installation Wizard designed specifically so non-technical buyers can install the application without running terminal commands.

💡 Web Installation Wizard

When you visit your domain URL for the first time, QuizVerse automatically opens the graphical Installation Wizard at https://your-domain.com/install to guide you through database setup, admin account creation, and Envato license activation.

Prerequisites

Before installing the Admin Panel on your web hosting (cPanel, DirectAdmin, or VPS), ensure your server satisfies the following requirements:

Requirement Required Version Details & Extensions
PHP Version PHP 8.3.0+ Required extensions: pdo_mysql, openssl, mbstring, gd, fileinfo, curl, xml, ctype.
Database Engine MySQL 8.0+ / MariaDB 10.5+ Character Set: utf8mb4_unicode_ci (required for full emoji support).
Web Server Root Apache 2.4 / Nginx / LiteSpeed Document Root MUST point to the admin-panel/public/ directory.
Folder Permissions Writable (775 or 777) The installer requires write access to storage/ and bootstrap/cache/.
⚠️ Mandatory PHP 8.3 Notice

QuizVerse is powered by Laravel 12, which requires a minimum of PHP 8.3.0. In cPanel, go to MultiPHP Manager to set your domain PHP version to 8.3 before starting setup.

Installation

QuizVerse offers two flexible installation paths: the Web Installation Wizard (recommended for all buyers) or the Manual CLI Method (for developers).

⭐ Method 1: Web Installation Wizard Flow (Recommended)

Follow these step-by-step visual screens to set up QuizVerse directly in your web browser:

1
Step 1: Upload Files & Set Web Root

Upload the contents of admin-panel/ to your server directory (e.g., /public_html/admin/).
CRITICAL: In cPanel Domains / Subdomains manager, set your Document Root to point to admin-panel/public.

2
Step 2: Server Requirements & Permissions Check

Open https://your-domain.com/install in your browser. The wizard automatically checks your server for PHP 8.3+ and required PHP extensions, as well as write permissions for storage/ and bootstrap/cache/.

QuizVerse Web Installer Step 1 - Server Requirements & Permissions
3
Step 3: Database Configuration & Auto Migration

Enter your cPanel MySQL Database credentials (Database Host, Database Port, Database Name, Username, and Password):

QuizVerse Web Installer Step 2 - Database Configuration

Click Test & Setup Database. The wizard will automatically connect to your database and begin creating all required tables:

QuizVerse Web Installer Step 3 - Running Migrations

Once table creation completes, the wizard automatically populates default application configurations, system permissions, and initial sample data into your database:

QuizVerse Web Installer Step 3a - Seed Data Migration Completed
4
Step 4: Super Admin Account Setup

Fill out the Super Admin setup form with your preferred Name, Email Address, and Password. This will become your primary administrator login.

QuizVerse Web Installer Step 4 - Super Admin Account Setup
5
Step 5: Envato License Activation

Enter your Envato Purchase Code and Envato Username. Click Verify & Activate License.

QuizVerse Web Installer Step 5 - Envato License Activation
6
Step 6: Login to Live Admin Panel

Click Launch Admin Panel to sign in to your live administration interface at https://your-domain.com/admin/login!

QuizVerse Admin Panel Login Interface
🎉 Congratulations!

Your Admin Panel setup is now completed. You can now log in to your Administration Panel and start managing your QuizVerse platform.


💻 Method 2: Manual CLI Installation (For Developers)

If you prefer deploying via SSH terminal or command line, execute the following commands:

Bash Terminal
# 1. Install backend dependencies
composer install --no-dev --optimize-autoloader

# 2. Copy environment file and generate application key
cp .env.example .env
php artisan key:generate

# 3. Configure DB credentials in .env then run migrations & seed data
php artisan migrate --seed

# 4. Create public storage symlink for uploaded images
php artisan storage:link

# 5. Optimize configuration for production speed
php artisan optimize

3. Mobile App

Overview

The QuizVerse mobile application is built using Flutter 3.x (Dart 3.x), offering native 60fps performance on both iOS and Android from a single codebase.

Key app capabilities include:

  • Quiz Modules: Quiz Zone (Categories & Levels), Daily Quiz, Audio Quiz, Math Mania, Fun & Learn, Guess the Word, Exam Mode.
  • Battle Zone: 1v1 Real-Time Battle, Group Battles, and Bot support.
  • Auth Systems: Email/Password, Google Sign-In, Phone OTP, Apple Sign-In, and Firebase Authentication.
  • Monetization: Google AdMob (Banner, Interstitial, Rewarded) and In-App Purchases (Coins & VIP Memberships).

Flutter Setup

Follow these steps to configure, brand, and build your Flutter mobile app:

1
Step 1: Open Project in IDE & Install Dependencies

Open quizverse-app-v1.0.3/ in Android Studio or VS Code. Run:

Flutter Terminal
flutter pub get
2
Step 2: Connect Mobile App to Your Live Admin API

Open lib/config/app_config.dart and set defaultBaseUrl to your live backend domain:

Dart (lib/config/app_config.dart)
class AppConfig {
  static const String appName = 'QuizVerse';
  static const String apiVersion = 'v1';
  
  // REPLACE WITH YOUR LIVE API URL
  static const String defaultBaseUrl = 'https://admin.yourdomain.com/api/v1';

  static String baseUrl = defaultBaseUrl;
}
QuizVerse Mobile App - App Config API URL setup
3
Step 3: Firebase Integration (Android & iOS)
  1. Go to Firebase Console ➔ Create a project named QuizVerse.
  2. Add Android App with your package ID ➔ Download google-services.json ➔ Save to quizverse-app-v1.0.3/android/app/google-services.json.
  3. Add iOS App with your bundle ID ➔ Download GoogleService-Info.plist ➔ Save to quizverse-app-v1.0.3/ios/Runner/GoogleService-Info.plist.
  4. Enable Authentication providers (Google, Phone, Apple, Email) in Firebase.
  5. In Firebase Console ➔ Project Settings ➔ Service Accounts, generate a private key JSON and upload it to your Admin Panel under Settings ➔ Firebase Settings for push notifications.
QuizVerse Mobile App - Firebase google-services.json Placement
4
Step 4: Change App Display Name (Phone Launcher Title)

To update the visible app title displayed on smartphone home screens:

  • Android: Open android/app/src/main/AndroidManifest.xml and update android:label="QuizVerse" to android:label="Your App Name".
Change Android App Name in AndroidManifest.xml
  • iOS: Open ios/Runner/Info.plist and update both CFBundleDisplayName and CFBundleName string values to Your App Name.
Change iOS App Name in Info.plist
  • In-App Config: Open lib/config/app_config.dart and set static const String appName = 'Your App Name';.
5
Step 5: Change App Logo & Auto-Generate Launcher Icons (ic_launcher)

To update the app launcher icon and in-app brand logos, replace the logo assets at the following project locations:

  • App Launcher Icon: Replace assets/images/app_launcher_logo/app_launcher_icon.png with your custom logo (recommended 1024×1024 px PNG format).
  • In-App Dark Theme Logo: Replace assets/images/app_logos/quizverse_dark.png.
  • In-App Light Theme Logo: Replace assets/images/app_logos/quizverse_light.png.

Run the automated launcher icon generator commands below to update native Android ic_launcher & iOS app icons:

Terminal Commands (Icon Generator)
# 1. Add the flutter_launcher_icons package
flutter pub add --dev flutter_launcher_icons

# 2. Automatically generate native Android & iOS launcher icons (ic_launcher)
dart run flutter_launcher_icons
QuizVerse Mobile App Logo & Icon Asset Replacement
6
Step 6: Auto-Generate Android 12+ & iOS Native Splash Screen

QuizVerse supports full Android 12+ Splash Screen API (generated in android/app/src/main/res/drawable-*/android12splash.png) and iOS native launch screens. To automatically generate and update native splash screen assets across all screen density folders (hdpi, mdpi, xhdpi, xxhdpi, xxxhdpi, and night mode):

  1. Ensure your splash icon asset is placed at assets/images/app_launcher_logo/app_launcher_icon.png.
  2. Run the automated native splash generator commands below:
Terminal Commands (Splash Screen Generator)
# 1. Add the flutter_native_splash package
flutter pub add --dev flutter_native_splash

# 2. Auto-generate Android 12+ & iOS native splash screens
dart run flutter_native_splash:create
QuizVerse Android 12+ Native Splash Screen Asset Locations (res/drawable-*/android12splash.png)
7
Step 7: Change Package Name / Bundle Identifier

Run the commands below to update your Android Package ID & iOS Bundle Identifier globally (e.g. com.yourcompany.quizverse):

Terminal Commands (Package Rename)
# 1. Add the change_app_package_name dev dependency
flutter pub add --dev change_app_package_name

# 2. Run package rename utility for Android & iOS
dart run change_app_package_name:main com.yourcompany.quizverse

Manual Package Rename (Alternative):

  • Android: Update applicationId in android/app/build.gradle and namespace in android/app/src/main/AndroidManifest.xml.
  • iOS: Open ios/Runner.xcworkspace in Xcode ➔ Select Runner target ➔ Update Bundle Identifier under Signing & Capabilities.
8
Step 8: Generate Android Release Keystore File
⚠️ CRITICAL SECURITY WARNING: KEEP YOUR KEYSTORE SAFE

Always keep your created my-release-key.jks keystore file, key passwords, and key.properties safe and backed up in a secure private location (e.g. secure cloud backup or password manager). If you lose your release keystore file or password, you will NEVER be able to push app updates to Google Play Store, and you would be forced to publish a completely new app listing.

Run the keytool command in your terminal to generate your production release keystore file at android/app/my-release-key.jks:

Terminal Command (Key Generation)
# Generate new release keystore (save to android/app/my-release-key.jks)
keytool -genkey -v -keystore android/app/my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload
QuizVerse Android Keystore Location (android/app/my-release-key.jks)
9
Step 9: Configure key.properties File

Create a file named key.properties inside the android/ directory and populate it with your keystore credentials:

Properties (android/key.properties)
storePassword=your_password
keyPassword=your_password
keyAlias=your_alias_name
storeFile=my-release-key.jks
QuizVerse key.properties File Setup in android/key.properties
10
Step 10: Building Production Release Binaries (.aab, .apk, .ipa)

Compile production release binaries for Google Play Store (.aab / .apk) and Apple App Store (.ipa):

Release Build Commands
# Build Android App Bundle (.aab) for Google Play Store submission
flutter build appbundle --release

# Build universal release APK
flutter build apk --release

# Build iOS Release Package (.ipa)
flutter build ipa --release

4. System Update Guide

QuizVerse features a built-in Safe System Update Manager allowing administrators to perform 1-click platform updates directly from the Admin Panel interface without manual file merging or database scripts.

🚨 MANDATORY PRE-UPDATE BACKUP WARNING

BEFORE RUNNING ANY PLATFORM UPDATE, TAKING A COMPLETE BACKUP IS MANDATORY!
Always export a full backup of your MySQL Database and download a zip copy of your Server Files prior to applying updates. In the event of server timeouts, hosting provider resource limitations, or custom code overrides, having a backup guarantees you can restore your platform instantly.

⚙️ Server Cron Job Requirement

System updates and background task queues rely on the server scheduler. Before initiating an update, ensure that the Cron Job is configured and running on your web hosting server (cPanel / VPS / Forge):

cPanel / Server Cron Command (Every Minute: * * * * *)
* * * * * cd /home/username/public_html/admin-panel && php artisan schedule:run >> /dev/null 2>&1

Note: Replace /home/username/public_html/admin-panel with the absolute file path to your backend directory on your server. Set the frequency to Every Minute (* * * * *).

🚀 Step-by-Step Update Process

1
Step 1: Backup Database & Files

Go to your cPanel ➔ phpMyAdmin ➔ Select your QuizVerse database ➔ Click Export. Also download a zip copy of your admin-panel directory.

2
Step 2: Verify Active Cron Job

Ensure your server Cron Job is active so background migrations and queue drivers execute smoothly during update deployment.

3
Step 3: Upload Update Package in Admin Panel
  1. Log in to your QuizVerse Admin Panel as Super Admin.
  2. In the left sidebar, navigate to System Update.
  3. Under Select Update Package (.ZIP File), click Choose File and select your official update file (e.g. update-version-latest.zip).
  4. Click Upload & Apply System Update.
QuizVerse Safe System Update Manager Interface
4
Step 4: Automatic Update Completion & Cache Clear

The update engine automatically extracts the update archive, runs database schema migrations, updates version tags, and clears route & application caches. Once complete, your Admin Panel will display the updated version badge!

5. Troubleshooting

Quick solutions to common setup issues encountered during server deployment or app building:

🔴 500 Internal Server Error after uploading Admin Panel to cPanel?

1. Ensure your server is running PHP 8.3 or higher (check MultiPHP Manager in cPanel).
2. Check that folder permissions for storage/ and bootstrap/cache/ are set to 775 or 777.
3. Ensure your domain Document Root points directly to the admin-panel/public folder.

🔴 Mobile App shows "Connection Failed" or API CORS Error?

1. Check lib/config/app_config.dart and verify that defaultBaseUrl uses https:// and ends with /api/v1.
2. Verify that your server has a valid SSL certificate (HTTPS).
3. Test opening https://admin.yourdomain.com/api/v1/languages directly in your browser to confirm API responsiveness.

🔴 Google Sign-In fails on real Android devices?

Add your Android app's SHA-1 and SHA-256 fingerprint keys (both debug and release keys from Google Play Console) into your Firebase Project Settings, then re-download google-services.json and place it in android/app/.

🔴 Flutter CocoaPods or iOS Build Error on Mac?

Inside quizverse-app-v1.0.3/ios/ directory, run:
pod repo update
pod install
Then rebuild your iOS app using Xcode.

💬 Customer Support

If you encounter any issues not addressed in this guide, our support team is happy to help!

✉️ Opening a Support Ticket

Please include your Envato Purchase Code, server PHP version, and exact error screenshots when opening a ticket for prompt resolution.