# Welcome to eduex

Thanks for choosing the eduex learning platform. This guide walks through Codecanyone installation steps, manual setup, demo users, and all major admin configuration panels.

## System requirements

Before you run the installer, ensure the target server meets the minimum requirements:

- PHP 8.2+ with extensions: OpenSSL, PDO, Mbstring, Tokenizer, JSON, cURL, Fileinfo, BCMath.
- Database: MySQL 8, MariaDB 10.5+, PostgreSQL 12+, or SQL Server 2019+.
- Queue backend (database driver supported by default; Redis or others optional).

## cPanel: create database & upload files

### Database & user

1. Open MySQL® Databases in cPanel and create a database (for example `eduex_db`).
2. Create a database user with a strong password, then add the user to the database granting ALL PRIVILEGES.

### Upload application files

1. Zip the project locally (excluding `node_modules`, `storage/logs`, vendor if you prefer running composer on the server).
2. In File Manager go to `public_html/` (or the target directory) and upload the archive, then extract it.
`Without terminal access, you can complete migrations by visiting `/install` after uploading.`

## Codecanyone setup wizard

eduex bundles a polished Codecanyone-style wizard for first-time installs. Browse to `/install` after configuring your vhost or running `php artisan serve`.

### 1. Welcome

Quick intro, high-level checklist, and a reminder about server requirements.

### 2. Requirements

Automated PHP version and extension checks. You must satisfy all prerequisites to continue.

### 3. Permissions

Validates directory write access for `storage` and `bootstrap/cache`.

### 4. Environment

Guided form covering application info, database credentials, cache/session drivers, and mail setup. Values are persisted to `.env`.

### 5. Database

Runs migrations, seeds all demo data, performs artisan maintenance commands, and logs output in real time.

### 6. Finish

Displays environment summary, seeded demo accounts, and the path to the `storage/installed` marker.

## Step 1: Welcome

## Step 2: Requirements

## Step 3: Permissions

## Step 4: Environment

## Step 5: Database

## Step 6: Finish

## Manual installation fallback

If you cannot access the browser wizard (headless servers, CLI-only environments), follow these steps:

1. Copy the environment template and update manually:

       cp .env.example .env
       php artisan key:generate

2. Configure database credentials in `.env`, ensure the database exists, then run:

       php artisan migrate --force
       php artisan db:seed --force

3. Run final commands to clear caches and ensure the app key exists:

       php artisan optimize:clear
       php artisan key:generate --force

4. Create the installation marker to skip the wizard:

       php -r "file_exists('storage/installed') || touch('storage/installed');"

Tip: Delete `storage/installed` anytime you need to re-run the wizard.

## Demo accounts

The seeders provision three ready-to-use accounts for quick testing. All use the password `password`.

Role | Email | Password
--- | --- | ---
Administrator | `admin@eduex.com` | `password`
Instructor | `instructor@eduex.com` | `password`
Student | `student@eduex.com` | `password`

## Update System

Keeping your system up-to-date is crucial for security and new features. The built-in updater allows you to apply database changes automatically.

##### Critical Pre-Update Instructions

- Custom Code Warning: If you have made any custom modifications to the core code, they will be overwritten during the update.
- Free Update Support: If you are unsure, you can ask our support team for a free update service.

Before Uploading New Files

When uploading the new version files to your server, you must preserve your existing configuration and user data:

1. Backup .env: Rename your current `.env` file to `old.env` (or keep a local backup).
2. Backup Storage: Rename your current `storage` folder to `old_storage`.
3. Upload the new version files (delete old files except your backups).
4. Restore Config: Delete the new `.env` and rename `old.env` back to `.env`.
5. Restore Data: Delete the new `storage` folder and rename `old_storage` back to `storage`.

This ensures you keep your database credentials, app keys, and user uploaded files intact.

##### One-Click Updater

Once you have uploaded the new files and restored your configuration:

1. Login to the Admin Panel.
2. Navigate to /admin/updater.
3. The system will compare your current database version with the codebase version.
4. If an update is available (e.g., Codebase Version > Database Version), the Update System Now button will be active.
5. Click the button to safely run migrations and update the system version.

Watch Update Tutorial

Click to open the step-by-step video guide

## Basic Usage & Getting Started

After installation, here's how to start using eduex:

### 1. First Login & Dashboard Overview

1. Open your browser and navigate to your installation URL.
2. Log in with one of the demo accounts above.
3. Admin Dashboard: Access platform-wide settings, user management, and analytics.
4. Instructor Dashboard: Create and manage courses, track student progress, view earnings.
5. Student Dashboard: Enroll in courses, track learning progress, access certificates.

### 2. Creating Your First Course (As Instructor)

1. Navigate to Courses → Create New Course.
2. Fill in basic details:
   - Course Title
   - Course Description
   - Category
   - Price (set to 0 for free courses)
3. Upload a course thumbnail image.
4. Set course visibility (Draft, Published, or Private).
5. Click Save & Continue.

### 3. Adding Course Content

1. Create course modules: Add Module → enter module title → save.
2. Add lessons to each module: Click module → Add Lesson.
3. Lesson content types:
   - Video: Upload or embed from YouTube/Vimeo.
   - Text: Rich text content with formatting.
   - Document: PDFs and downloadable resources.
   - Quiz: Test student knowledge (see quiz section).

### 4. Creating Quizzes & Assessments

1. Navigate to course → Lesson & Modules → Create Quiz.
2. Set quiz details:
   - Quiz title
   - Passing percentage
   - Max attempts
   - Time limit (optional)
3. Add questions: Multiple choice, true/false, short answer, essay.
4. Assign passing grades and point values.
5. Publish quiz to make it available to students.

### 5. Managing Student Enrollment

1. Students can self-enroll in published courses.
2. For paid courses, they complete checkout via your configured payment gateway.
3. View enrolled students: Course → Enrollments.
4. Monitor progress: Click student name → see lesson completion, quiz scores, time spent.
5. Grant certificates manually or automatically upon course completion.

### 6. Tracking Performance & Analytics

1. Admin Dashboard: View total enrollments, revenue, top courses.
2. Instructor Analytics: Course performance, student engagement, earnings breakdown.
3. Detailed Reports: Export enrollment, progress, and revenue data.

### 7. Managing Events & Webinars

1. Create live events: Events → Create Event.
2. Set event details: Date, time, duration, capacity.
3. Enable booking: Students register and receive meeting links/join instructions.
4. Record sessions for on-demand playback after live event.

### 8. Understanding User Roles

Admin: Full platform access—manage users, settings, payments, analytics.
Instructor: Create courses, manage students, track earnings, view analytics.
Student: Enroll courses, access content, take quizzes, earn certificates.

## Key features

Highlights of the eduex platform:

- Multi-role authentication (Admin, Instructor, Student) with approval pipelines.
- Course builder with modules, lessons, quizzes, assignments, certificates, and progress tracking.
- Event management and booking system for webinars and in-person sessions.
- Payment integrations: Stripe, Paystack, Razorpay, Flutterwave, PayPal, SSLCommerz, Mollie with revenue sharing.
- Marketing toolkit: blog, testimonials, newsletter signup, customizable pages.
- Rich analytics dashboards for enrollments, revenue, and learner engagement.

## Environment keys referenceMust be set in .env file

`Example:
APP_NAME=eduex
APP_URL=https://lms.example.com`

Key | Description | Example
--- | --- | ---
`APP_NAME` | Brand name displayed across headers, transactional emails, and metadata. | `eduex`
`APP_URL` | Primary application URL. Important for mailers, queues, and asset helpers. | `https://lms.example.com`

## Admin settings walkthrough

Sign into the admin dashboard and navigate to Settings to manage the following modules:

### Platform Configuration

- Site name, tagline, footer copy.
- Primary color palette and favicon upload.
- Time zone, date formats, Currency defaults.

### Course Settings

- Approval rules for new courses.
- Default Course Visibility

### Payment Gateways

- Configure Stripe, Paystack, Razorpay, Flutterwave, PayPal, SSLCommerz, Mollie.
- Enable/disable gateways and set fee structures.
- Manage Offline Payment Methods

### Branding & Assets

- Upload logos for light/dark themes and app favicon.
- Manage Color Palette

### Contact Details

- Primary support email, phone, physical address.
- Contact Information

### Email & Notifications

- Email Preference
- Notification Preference

### SMTP Configuration

- SMTP Host
- SMTP Port
- SMTP Username
- SMTP Password
- SMTP Encryption

### Authentication & OTP

- Enable login OTP, email verification, and security thresholds.
- Configure OTP expiry and resend limits.

### Revenue Distribution

- Set commission percentages for instructors vs. platform.
- Fixed Commission

### Withdrawals

- Minimum Withdrawal Amount

### Account Deletion

- Approve or reject user-initiated deletion requests.

### Recaptcha Configuration

- Enable Google reCAPTCHA v2/v3 site and secret keys.
- Toggle usage on login, registration, and forms.

## Frontend Manager

The Frontend Manager module controls most public-facing content. From the admin sidebar open Frontend Manager to access the following tools:

- Menus — manage main, mobile, footer, and quick-link menus. Use the Manage buttons to add, sort, nest, or disable menu items without touching code.
- Homepage — update hero titles, highlights, featured categories, instructor sections, testimonials, and calls-to-action.
- About Page — edit the mission statement, team bios, statistics, and timeline content displayed on the about page.
- Contact Page — configure map iframe, address, phone numbers, contact form copy, and support email.
- FAQ Content — maintain frequently asked questions grouped by category. Enable/disable items instantly to curate the FAQ section.
- Marquee Items — control the scrolling marquee text that sits at the top of marketing pages.
- SEO Metadata — override page titles, descriptions, and OpenGraph information for key landing pages.
- Custom Pages — create additional static pages (terms, privacy, refund policy) using the built-in editor.
- Footer & Contact — adjust footer description, social links, and primary contact information displayed site-wide.

Changes are saved immediately. Clear caches (`php artisan optimize:clear`) if your deployment

## Theme Settings

eduex supports multiple front-end themes and layouts. To activate, configure, and manage themes, open Frontend Settings > Themes from the admin sidebar.

### Activating a Theme

1. The admin dashboard displays all installed themes with their respective status, version, and author details.
2. Click the Active toggle button on any theme card to activate it as the primary storefront theme.
3. Active theme preview is automatically updated using the theme's `screenshot.png` asset.

### Managing Homepage Layout Variants

Themes can support different design variations (e.g., Kindergarten vs. Early Education variants for the Eduna theme). To manage these variants:

- Open the Homepage tab inside Frontend Manager.
- Locate the Homepage Theme dropdown selection.
- Select your desired variant (for example, Early Education or Kindergarten) and click Update.
- The homepage will automatically adapt to the new design and pull dynamic database contents (courses, categories, events, blogs) for the chosen theme layout variant.

## Post-install checklist

- Update branding (logos, hero headlines, footer text).
- Configure payment gateways with live credentials.
- Set up SMTP and test transactional emails.

## Troubleshooting

### Common issues

- Setup wizard blank page: check `storage/logs/laravel.log` for SQL or permission errors.
- Cache table missing: run `php artisan migrate --path=database/migrations/0001_01_01_000001_create_cache_table.php`.
- Queue jobs not processing: ensure the queue worker is supervised or run `php artisan queue:work`.

### Useful artisan commands

    # Clear caches and rebuild autoload optimizations
    php artisan optimize:clear

    # Run migrations with seeders again
    php artisan migrate:fresh --seed

    # Monitor Horizon or queue (if using Redis)
    php artisan queue:listen

## Support & Contact Information

We're here to help! Use the following resources to get support or reach out with questions:

### Getting Help

- Documentation: Review this guide for setup, configuration, and usage instructions.
- Email Support: For technical issues, feature requests, or general inquiries.
- FAQ: Check our FAQ section for answers to common questions.
- Community Forum: Connect with other eduex users and share solutions.

### Contact Methods

Email: mhquickdev@gmail.com
Response Time: 24-48 hours for support inquiries
Availability: Monday - Friday, 9 AM - 6 PM (GMT+6)

### Before Contacting Support

1. Check this documentation thoroughly.
2. Review the troubleshooting section for common issues.
3. Check your server logs: `storage/logs/laravel.log`.
4. Verify your server meets all system requirements.
5. Provide relevant error messages and context when reaching out.

### Information to Include

When reporting an issue, include:

- Error message or screenshot
- Your PHP version and database type
- Browser and OS being used
- Steps to reproduce the issue
- Any recent changes to your installation

#### Ready to Get Started?

If you have questions or need assistance, don't hesitate to reach out.

Contact Support

## Best Practices & Tips

### Security Best Practices

- Change default passwords: Update demo account passwords immediately in production.
- Use HTTPS: Always serve the platform over HTTPS in production.
- Regular backups: Implement automated database and file backups.
- Keep software updated: Update Laravel, PHP, and dependencies regularly.
- Enable reCAPTCHA: Protect login and registration forms from bot attacks.
- Strong email security: Use secure SMTP with authentication and encryption.

### Performance Optimization

- Enable caching: Configure Redis or Memcached for sessions and data caching.
- Compress assets: Minify CSS/JS files and optimize images.
- Use CDN: Serve static assets from a CDN for faster delivery globally.
- Database indexing: Ensure critical tables are properly indexed.
- Queue jobs: Use background jobs for emails, notifications, and heavy processing.

### Course Creation Tips

- Structure matters: Organize courses into logical modules and lessons.
- Engagement: Mix video, text, and interactive content to keep students engaged.
- Assessments: Use quizzes strategically to reinforce learning.
- Descriptions: Write clear, compelling course descriptions to improve enrollment.
- Support materials: Provide downloadable resources, transcripts, and supplementary materials.

### User Management Best Practices

- Regularly audit user accounts and permissions.
- Implement role-based access control (RBAC) for sensitive operations.
- Monitor suspicious login attempts in admin logs.
- Use strong password policies and two-factor authentication when available.

## Frequently Asked Questions

### Installation & Setup

#### Q: What if the installer wizard doesn't load?

A: Check your server logs at `storage/logs/laravel.log` for database or permission errors. Ensure `storage` and `bootstrap/cache` directories are writable.

#### Q: Can I run eduex without a database?

A: No, a database is required for the platform to function. Support includes MySQL, MariaDB, PostgreSQL, and SQL Server.

#### Q: How do I restore a backup?

A: Restore your database from backup, then upload the backed-up files to your server. Run `php artisan migrate --force` if needed.

### Configuration & Customization

#### Q: How do I change the platform colors and logo?

A: Log in as admin and navigate to Settings → Branding & Assets to upload logos and customize colors.

#### Q: Can I use a custom domain?

A: Yes, point your domain to the server hosting eduex. Update `APP_URL` in your `.env` file with your domain.

#### Q: How do I add multiple payment gateways?

A: Go to Settings → Payment Gateways, fill in credentials for each gateway you want to enable, and toggle them active.

### Courses & Content

#### Q: Can students access course content offline?

A: Not natively, but instructors can provide downloadable PDFs and course materials for offline reference.

#### Q: What file formats are supported for course uploads?

A: Video: MP4, WebM, OGG. Documents: PDF, DOC, DOCX, XLS, XLSX. Images: JPG, PNG, GIF, WebP.

#### Q: Can instructors see student progress in real-time?

A: Yes, instructors can view student progress, quiz scores, and time spent in the course analytics dashboard.

### Payments & Revenue

#### Q: Which payment gateways are supported?

A: Stripe, Paystack, Razorpay, Flutterwave, PayPal, SSLCommerz, and Mollie are all integrated.

#### Q: How is revenue split between instructors and the platform?

A: Configure revenue sharing percentages in Settings → Revenue Distribution.

#### Q: Can I offer refunds?

A: Yes, admins can process refunds manually. Configure refund policies and expiration in settings.

## Flutter App Configuration

Complete guide to re-branding, configuring, and publishing the eduex mobile application.

### Prerequisites

- Flutter SDK: 3.9.0+
- Dart SDK: 3.0.0+
- IDE: VS Code or Android Studio
- MacOS: Required for iOS builds

## Installation

1. Unzip the `eduex_flutter` directory.
2. Open the folder in your IDE.
3. Run dependencies installation:

       flutter pub get

4. Run the app:

       flutter run

## Connect to Backend

Link the mobile app to your installed Laravel server.

1. Open `lib/config/config.dart`.
2. Update `baseUrl`:

       static const String baseUrl = 'https://your-domain.com';

## App Name & Package ID

### Change App Display Name

Android: Open `android/app/src/main/AndroidManifest.xml` and update:

    android:label="Your App Name"

iOS: Open `ios/Runner/Info.plist` and update:

    <key>CFBundleDisplayName</key>
    <string>Your App Name</string>

### Change Package Name / Bundle ID

Global Replace: The easiest way is to use your IDE's "Replace in Files" feature. Replace `com.example.eduex_app` with `com.yourcompany.appname`.

#### Android Specifics

1. Update `applicationId` in `android/app/build.gradle.kts`.
2. Update the package path structure in `android/app/src/main/kotlin/com/example/eduex_app/` to match your new ID.
3. Update `AndroidManifest.xml`.

#### iOS Specifics

1. Open `ios/Runner.xcodeproj` within Xcode.
2. Select the Runner target.
3. Update the Bundle Identifier field.

## Logo & Splash Screen

### Change App Icon

We use the `flutter_launcher_icons` package to generate icons for all devices.

1. Replace the file at `assets/img/icon.png` with your logo (1024x1024px, no transparency recommended).
2. Run the generator command in your terminal:

       dart run flutter_launcher_icons

3. This works for both Android and iOS.

### Change Splash Screen

1. Replace `assets/img/splash.png` with your own image.
2. To change the splash background color, edit `lib/screens/splash/splash_screen.dart`.

## Colors & Theme

You can change the primary and secondary colors of the entire application from a single file.

1. Open `lib/theme/app_theme.dart`.
2. Locate the `AppTheme` class.
3. Change the color hex codes:

       class AppTheme {
         // Primary Brand Color
         static const Color primary = Color(0xFF1EA9FF); // Change this

         // Secondary Brand Color
         static const Color secondary = Color(0xFF085BC5); // Change this

         // ... other colors
       }

## Language & Localization

The app supports multiple languages using Flutter's localization system.

### Adding a New Language

1. Go to `lib/l10n/` directory.
2. Create a new ARB file, e.g., `app_es.arb` for Spanish.
3. Copy the content from `app_en.arb` and translate the values.

### Registering the Language

1. Open `lib/main.dart` or `lib/app.dart`.
2. Add the new locale to `supportedLocales`:

       supportedLocales: const [
         Locale('en'), // English
         Locale('es'), // Spanish (Added)
       ],

Flutter will automatically generate the Dart code when you run the app again.

## Android Deployment

1. Generate a keystore file.
2. Create `android/key.properties` with your keystore details.
3. Build the App Bundle:

       flutter build appbundle --release

## iOS Deployment

1. Open workspace: `open ios/Runner.xcworkspace`
2. Archive and Upload via Xcode.

## Changelog

A complete history of releases, new features, improvements, and fixes for the eduex platform.

## Version 1.3.1 Latest

### ✨ New: Dedicated Theme Manager

- Now supports uploading and installing custom themes and dedicated 3rd-party developer themes.

## Version 1.3.0

### ✨ New: Coupon & Discount System

- Added support for percentage-based and fixed-amount discount coupons.
- Configurable coupon validity periods with start/end dates and usage limits.
- Support for both platform-wide and course-specific coupons.
- Instructors can create and manage coupons for their own courses.
- Fully integrated across the Web Platform, Student App, and Instructor App.

### ✨ New: Course Discussion & Forum System

- Added dedicated discussion forums for each course.
- Students and instructors can create posts, reply to discussions, and like comments.
- Added instructor announcement pinning for important course updates.

### ✨ New: Fully Integrated Live Classes Module

Web Platform (Laravel)

- Added Live Course option during course creation.
- Instructors can schedule live lessons using Zoom, Google Meet, or custom meeting platforms.
- Added real-time live session banners with direct join functionality.
- Added countdown timers for upcoming live sessions.
- Added automatic recording playback support after session completion.
- Added LIVE badges across course listings, dashboards, and catalog pages.
- Added live status indicators within course curriculum sections.
- Added multilingual support for live class labels and statuses.

Student App (Flutter)

- Added LIVE badge overlays across course listings and enrolled courses.
- Added dedicated live lesson indicators within course curriculum screens.
- Added support for live session status and scheduling data.

### ✨ New: Advanced Language Manager

- Added Admin Language Manager for creating and removing system languages.
- Added filesystem-based translation management without database dependency.
- Added translation editor with pagination, search filters, and automatic key sorting.
- Added automatic synchronization of new translation keys across all installed languages.
- Improved localization performance through active locale caching.

### ✨ New: Offline Payment Instructions Support

- Students can now view offline payment instructions directly within the app.

### ✨ New: XPay PKR Online Payment Gateway

- Added XPay — a Pakistani PKR online payment gateway — to the supported payment integrations.

### ✨ New: Cron Job Manager

- Added a new built-in Cron Job Manager for scheduling and monitoring background tasks from the admin panel.

### 🔧 Improvements

- Optimized API responses for live course and lesson data.
- Improved multilingual system scalability and maintainability.
- Enhanced overall platform performance for language loading and translation management.

## Version 1.2.2

### 🐛 Fixed

- Fixed: Free Courses Enrolment Error.
- Fixed: Contact us page 2 brand slider.
- Fixed: Dashboard Branding Title.

### ✨ Added

- Added: Custom CSS, JS, and custom Script insert from admin panel.
- Added: Admin can now delete a course completely.
- Added: Loading effects during course publish.

## Version 1.2.1

### ✨ Added

- Bundle Courses module added.
- Bkash Payment Gateway added.

### 📱 App

- Block screen recordings and screenshots in app course access page.

### 🌐 Web

- Fixed minor bugs.

## Version 1.2.0

### ✨ Added

- Chat module added.

### 📱 App

- Fixed video player full-screen issue.

### 🌐 Web

- Multi-language support added.

## Version 1.1.1

### 🐛 Fixed

- Image issue fixed.
- API rate limit issue fixed.

## Version 1.1.0

### 🐛 Fixed

- Logo issue fixed.
- Color issue fixed.

### ✨ Added

- One-click updater.