🛒 MarketOS — Laravel E-Commerce Script 📦 Version 1.0.0 📅 Last Updated: April 2026 Laravel 13  |  PHP 8.2+
Laravel 13 Multi-Language 10 Payment Gateways

MarketOS

A production-ready, fully modular e-commerce platform built on Laravel 13 — complete with a visual setup wizard, rich admin panel, multi-language support, and 10 payment integrations out of the box.

Framework Laravel 13 / PHP 8.2+
Architecture Modular (nwidart)
Payment Gateways 10 Integrated
Database MySQL / SQLite

What's Included

  • Visual Setup Wizard — install in minutes
  • Admin + Seller Roles — full RBAC
  • 15 Plug-in Modules — enable/disable freely
  • 10 Payment Gateways — global & regional
  • Multi-Language & RTL — Arabic + more
  • Multi-Currency — auto rate refresh
  • Product Attributes & Variants
  • SEO & Sitemap Generator
  • Security Headers — OWASP hardened
  • Guest Checkout Support
Step 0

Server Requirements

Before installing MarketOS, ensure your server meets the following minimum specifications.

Requirement Minimum Version Recommended Notes
PHP 8.2 8.3+ Required by Laravel 13
Laravel 13.x 13.x Included in the package
Database MySQL 8.0 MySQL 8.0+ / MariaDB 10.6+ SQLite supported for local dev
Composer 2.x Latest Dependency manager
Node.js 18.x 20 LTS For asset compilation (Vite)
Web Server Apache 2.4 / Nginx Nginx mod_rewrite enabled for Apache
PHP Extensions BCMath, Ctype, Fileinfo, JSON, Mbstring, OpenSSL, PDO, Tokenizer, XML, GD or Imagick GD required for image processing
Disk Space 500 MB minimum 2 GB+ Including vendor & uploads
💡

Shared Hosting: MarketOS works on shared hosting that supports PHP 8.2+ and allows Composer. VPS or dedicated server is recommended for production workloads.

Step 1

Installation

MarketOS ships with a built-in visual Setup Wizard that guides you through every step. You can also install manually via the command line.

Option A — Visual Setup Wizard Recommended

Step 1

Requirements Check

Navigate to https://yourdomain.com/install. The wizard automatically scans your server for PHP version, required extensions (openssl, pdo, mbstring, tokenizer, xml, ctype, json, bcmath, curl, gd, zip, fileinfo), and verifies that storage/ and bootstrap/cache/ are writable. All items must show ✓ OK before proceeding.

https://yourdomain.com/install
Step 1 – Requirements Check
Step 2

Application & Database Settings

Enter your App Name, App URL, and select the environment (Production / Development). Choose your Database Driver (MySQL recommended for production, SQLite for local dev), then enter the Host, Port, Database Name, Username and Password. Click Next to test the connection.

https://yourdomain.com/install/database
Step 2 – Database Settings
Step 3

Processing & Migration

After clicking Next, the wizard automatically runs three operations: Validates the submitted data, Tests the database connection, and Saves the configuration to .env and runs all migrations. This typically takes 10–30 seconds — do not close the browser tab.

https://yourdomain.com/install/database
Step 3 – Processing
Step 4

Language Selection

Select all languages your store will support (20 languages available including Arabic, English, French, Spanish, Chinese, Japanese, and more). Then choose the Default Language shown to visitors on first load. Arabic is selected by default, making it ideal for Arabic-first stores. You can add or remove languages later from the admin panel.

https://yourdomain.com/install/languages
Step 4 – Language Selection
Step 5

Admin Account Creation

Create your super-admin account. Enter First Name, Last Name, Email Address (used to login), and a strong Password. Optionally fill in address information (phone, country, state, city, street, ZIP) — this can be updated later from the admin profile. Click Finish to complete the wizard.

https://yourdomain.com/install/account
Step 5 – Admin Account
Step 6

Installation Successful 🎉

The wizard displays a success screen confirming your application is fully configured and ready. Click "Go to Application" to be redirected to your store. The install route is automatically locked after this step — revisiting /install will redirect to the homepage.

https://yourdomain.com/install/finish
Step 6 – Installation Successful
Done

Admin Dashboard — Ready to Go

You are now logged in as Admin. The dashboard shows Stat Cards (Orders, Revenue, Products, Customers), a Monthly Sales Chart, Quick-Access Tiles to every admin section, Latest Orders, Top Selling Products, Latest Customers, and a Low Stock Alert widget. Your store is live.

https://yourdomain.com/en/admin
Admin Dashboard
Step 2

Configuration

All primary settings live in the .env file at the project root. Edit this file before running migrations.

.env — essential keys
# ── Application ──────────────────────────────
APP_NAME="My Store"
APP_ENV=production
APP_KEY=base64:...          # auto-generated
APP_DEBUG=false
APP_URL=https://yourdomain.com
APP_LOCALE=en               # default language

# ── Database ──────────────────────────────────
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=marketos_db
DB_USERNAME=db_user
DB_PASSWORD=secret

# ── Mail (SMTP) ───────────────────────────────
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=your_username
MAIL_PASSWORD=your_password
MAIL_FROM_ADDRESS="noreply@yourdomain.com"

# ── Cache / Queue ─────────────────────────────
CACHE_STORE=database       # or redis
QUEUE_CONNECTION=database  # or redis/sqs
SESSION_DRIVER=database
⚠️

Production Warning: Always set APP_DEBUG=false and APP_ENV=production on live servers to prevent sensitive data from being exposed in error pages.

Admin Panel Access

After installation, the admin panel is available at:

URL
https://yourdomain.com/en/admin
# Replace "en" with your active language code
Reference

Folder Structure

MarketOS follows the standard Laravel directory layout with a Modules/ directory for plug-in functionality.

📁 marketos/
 app/
 │  ├── Console/Commands/ # Artisan commands
 │  ├── Http/Controllers/
 │  │   ├── Auth/ # Login, Register, Password
 │  │   ├── Control/ # Admin panel controllers
 │  │   ├── Theme/ # Storefront controllers
 │  │   └── Payments/ # Payment gateway handlers
 │  ├── Http/Middleware/ # Auth, Language, Security
 │  ├── Models/ # Eloquent models
 │  ├── Services/Order/ # Order, Shipping, Tax, Discount
 │  └── Traits/ # Translations, Module data
 ├── bootstrap/
 ├── config/
 ├── database/
 │  └── migrations/ # Core DB schema
 ├── Modules/ # Pluggable feature modules
 │  ├── Blog/
 │  ├── Brand/
 │  ├── Category/
 │  ├── Currency/
 │  ├── Deals/
 │  ├── Discount/
 │  ├── FileManager/
 │  ├── HomeBanner/
 │  ├── HomeSlider/
 │  ├── Newsletter/
 │  ├── Page/
 │  ├── Setting/
 │  └── Shipping/
 ├── packages/MarketOS/ # Private composer packages
 │  ├── setup-wizard/ # Install wizard
 │  └── laravel-lang-manager/ # Language manager
 ├── public/ # Web root — point server here
 ├── resources/
 ├── routes/
 │  └── web.php # All routes with /{lang} prefix
 └── .env # Environment config
Features

Feature Overview

Everything you need to launch and scale a professional online store.

🧙

Setup Wizard

Browser-based installer checks requirements, configures the database, runs migrations, and creates the first admin — no CLI required.

🛍️

Product Management

Rich product editor with TinyMCE, multiple images, SKU, price/sale price, stock quantity, downloadable images, and full translation support.

🎨

Product Attributes

Define custom attributes (Size, Color, Material…) with translatable values and assign them to products for variant-level filtering.

🛒

Shopping Cart

Session-based cart with quantity management, real-time totals, and inline checkout login — supporting both registered and guest users.

❤️

Wishlist & Compare

Customers can save favourite products and compare up to 4 products side-by-side across all attributes and specifications.

Ratings & Reviews

Customers leave star ratings and written reviews. Admins moderate submissions from the dashboard before they go live.

📦

Order Management

Full order lifecycle: place, process, ship, complete, or cancel. Each order has a unique code, full line items, and email notifications.

🏷️

Discount Coupons

Create percentage or fixed-amount discount codes with optional expiry dates, minimum order values, and usage limits.

🌍

Multi-Currency

Manage multiple currencies with a scheduled Artisan command to auto-refresh exchange rates. Customers switch currencies on the fly.

🗺️

Tax Rules

Define tax rates per country/state, apply them globally or per product category, and display inclusive or exclusive pricing.

🚚

Shipping Rules

Configure shipping zones, flat-rate or weight-based methods, and free-shipping thresholds through the Shipping module.

📝

Blog Module

Full-featured blog with categories, translatable posts, featured images, and rich-text content via TinyMCE.

🔍

Advanced Search

Live search with category, price range, brand, rating and attribute filters — results update without full page reload.

🗺️

Sitemap Generator

Artisan command generates an XML sitemap of all products, categories, blog posts, and pages — ready for Google Search Console.

🛡️

Security Headers

Built-in middleware adds CSP, HSTS, X-Frame-Options, X-Content-Type-Options, and Referrer-Policy headers on every response.

📂

File Manager

Integrated media library for uploading, organising, and reusing images across products, banners, and pages.

🗑️

Recycle Bin

Soft-delete any product, order, or user — restore or permanently remove from the admin Recycle Bin screen.

📊

Analytics Dashboard

Real-time stat cards for total revenue, orders, products, and customers, plus latest-orders table and top-selling products widget.

Architecture

Module System

MarketOS uses nwidart/laravel-modules to package every optional feature as an independent, enable/disable-able module. Each module ships with its own routes, controllers, models, migrations, and views.

Blog
Brand
CacheClear
Category
Contact
Currency
Deals
Discount
FileManager
HomeBanner
HomeSlider
Newsletter
Page
Setting
Shipping
🔌

Modules can be toggled from the admin panel under Admin → Plugins. Disabling a module hides its UI and routes without touching the database, so re-enabling it restores full functionality.

Managing Modules via CLI

bash
# List all modules and their status
php artisan module:list

# Enable a module
php artisan module:enable Blog

# Disable a module
php artisan module:disable Deals

# Run a specific module's migrations
php artisan module:migrate Blog
Payments

Payment Gateways

MarketOS ships with 10 payment integrations — global processors and popular Middle-Eastern / South-Asian gateways — all configurable from the admin settings panel.

💳 Stripe Global
🅿️ PayPal Global
🪙 Razorpay India
2️⃣ 2Checkout Global
🌐 HyperPay MENA
💰 Moyasar Saudi Arabia
📲 Paymob Egypt / MENA
🐉 Fawry Egypt
🔵 Tap Payments Gulf Region
🏦 Authorize.Net Global

Configuring a Gateway

Navigate to Admin → Settings → Payments. Toggle the gateway active, enter your API keys, and save. Keys are stored encrypted in the settings table.

Example — Stripe keys in .env (alternative method)
STRIPE_KEY=pk_live_...
STRIPE_SECRET=sk_live_...
STRIPE_WEBHOOK_SECRET=whsec_...
🔒

All payment controllers implement CSRF protection, webhook signature verification, and PCI-safe flows (no card data stored server-side). Sensitive keys are never logged.

i18n

Multi-Language & RTL Support

MarketOS includes a custom Laravel Lang Manager package with full RTL support and seamless URL-based locale switching.

🔡

URL-Based Locale

Every URL is prefixed with the active language code, e.g. /en/shop, /ar/shop. Language is resolved from URL → cookie → site default.

🔄

RTL Auto-Detection

When an RTL language (Arabic, Hebrew, etc.) is active, the layout and stylesheets automatically switch direction — no configuration needed.

📄

Translatable Content

Products, categories, attributes, blog posts, banners, and pages all support per-language translations stored in *_translations tables.

Add New Languages

Create a new language from Admin → Languages → Add. The system scaffolds translation keys automatically and adds the URL prefix.

Pre-Installed Languages

Bundled out-of-the-box
🇺🇸  English (en)    — LTR
🇸🇦  Arabic  (ar)    — RTL   ✓ Fully translated admin + storefront
Security

Roles & Permissions

MarketOS uses Spatie Laravel Permission (v7) for fine-grained role-based access control.

Role Access Level Capabilities
Admin Full All admin panel sections including users, roles, settings, all orders, all products, plugins, recycle bin
Seller Partial Admin panel access limited to their own products and orders; cannot access settings, users, or roles
Customer Storefront only Browse, add to cart, checkout, manage profile, view order history, write reviews, wishlist
Guest Storefront only Browse, add to cart, guest checkout (no account required)

Creating Custom Roles

Navigate to Admin → Roles to create new roles and assign granular permissions. Role guards are enforced at middleware level — not just UI.

Admin

Admin Dashboard

The admin panel provides a real-time overview of your store's performance, with quick access to every management section.

📈

Stat Cards

Total Revenue, Total Orders, Total Products, Total Customers — updated on every page load.

🧾

Latest Orders

The 5 most recent orders with customer name, email, amount, currency, and status — with a one-click link to the full order.

🏆

Top-Selling Products

Auto-calculated from order history. Shows product name, SKU, price, and units sold.

Quick Actions

Add Product, Add User, Clear Cache — accessible from every admin page via the top navigation bar.

📊

The dashboard uses Yajra DataTables for all list views — providing server-side pagination, live search, and column sorting on Products, Orders, Users, and more, without loading thousands of records into memory.

Admin

Product Management

A powerful product editor covering every aspect of e-commerce catalogue management.

Basic Information

Enter the product name (with per-language translations), slug, short description, and full rich-text description via TinyMCE. Assign brand, category, and tags.

Pricing & Stock

Set Regular Price, Sale Price, SKU, quantity in stock, and low-stock threshold. Mark as featured, new arrival, or on-sale.

Images

Upload a main image and up to 8 gallery images. Intervention Image automatically generates optimised thumbnails in small, medium, and large sizes.

Attributes & Variants

Attach pre-defined attributes (Color, Size, Material…) with their specific values to each product. Attributes are also translatable.

SEO Settings

Set per-product meta title, meta description, and canonical URL for optimal search-engine visibility.

Admin

Orders & Tax Management

Complete order lifecycle management with flexible tax rule configuration.

Order Statuses

Status flow
Pending → Processing → Shipped → Completed
                  ↘ Cancelled (at any stage before Shipped)

Each status change triggers an email notification to the customer. Order details include: order code, billing address, items ordered, payment method, applied discount, shipping cost, tax, and grand total.

Tax Rules

Field Description
Tax Name Label shown at checkout (e.g., "VAT 15%")
Rate (%) Numeric tax percentage applied to the subtotal
Country / State Apply tax only for specific geographic regions
Status Enable or disable without deleting the rule
Themes

Theme System

MarketOS supports multiple storefront themes that can be uploaded and switched from the admin panel without touching code.

1

Upload a Theme

Go to Admin → Templates → Upload. Themes are standard ZIP archives containing Blade views, CSS, and JavaScript. The system extracts and registers them automatically.

2

Activate a Theme

Click "Activate" next to the uploaded theme. The LoadActiveTemplate middleware reads the active theme setting and serves all storefront routes from that theme's view folder.

3

Customise

Each theme can have its own settings (colors, fonts, layout options) configurable from a dedicated settings panel — no FTP required.

Security

Security

MarketOS is built with security as a first-class concern, following OWASP best practices throughout.

🔒

Security Headers

The SecurityHeaders middleware injects CSP, HSTS, X-Frame-Options, X-Content-Type-Options, Permissions-Policy, and Referrer-Policy on every response.

🚫

CSRF Protection

All state-changing requests (POST/PUT/DELETE) are protected by Laravel's built-in CSRF token verification.

🧹

Input Sanitisation

mews/purifier (HTMLPurifier) sanitises all rich-text (TinyMCE) output, preventing XSS from user-generated content.

🔑

Password Hashing

All passwords are hashed with bcrypt (12 rounds by default). Reset tokens are single-use and expire after 60 minutes.

🛡️

Role Guard

Every admin route is gated by both auth middleware and Spatie role checks. A logged-in Customer cannot access any admin route.

📋

Form Validation

All input is validated through dedicated FormRequest classes before reaching controllers — no raw $request->all() in controllers.

CLI

Artisan Commands

MarketOS ships with three custom Artisan commands for common maintenance tasks.

bash
# Generate XML sitemap for all products, categories, and pages
php artisan sitemap:generate

# Refresh all currency exchange rates from an external API
php artisan currency:refresh

# Download and cache product images locally
php artisan products:download-images

Scheduling

Add the following cron entry to run the Laravel scheduler every minute. The scheduler will then fire currency refresh and sitemap generation on your chosen intervals.

crontab -e
* * * * * cd /var/www/marketos && php artisan schedule:run >> /dev/null 2>&1
Changelog

Version History

v1.0.0
April 2026
  • New Initial release with full e-commerce feature set
  • New Visual setup wizard with requirement checker
  • New 10 payment gateway integrations
  • New 15 plug-in modules (Blog, Brand, Currency, Deals, Discount…)
  • New Multi-language system with RTL support (EN + AR bundled)
  • New Custom Laravel Lang Manager package
  • New Roles & Permissions via Spatie (Admin, Seller, Customer)
  • New OWASP security headers middleware
  • New Sitemap generator, currency refresh Artisan commands
  • New Switchable theme system with admin uploader
Frontend

Storefront Features

A fully-featured shopping experience for customers — from discovery to post-purchase.

🏠

Homepage

Configurable sections: hero slider, home banners, featured products, deals countdown, new arrivals, top categories, and newsletter signup — all managed from the admin.

📂

Category Pages

Hierarchical category browsing with breadcrumbs, product count, pagination, and live filter sidebar (price range, brand, attribute values, rating).

🔎

Search

Full-text search across product names with sort options: A→Z, Z→A, price low/high, newest. Results update without page reload using AJAX.

📄

Product Detail Page

Image gallery lightbox, attribute selector, quantity picker, add-to-cart, add-to-wishlist, quick-compare, ratings summary, detailed description tabs, and related products.

Quick View

Modal quick-view overlay lets customers preview product details and add to cart without leaving the listing page — reduces friction and boosts conversions.

📰

Blog

Full blog with category filtering, featured images, author info, and TinyMCE-powered rich-text posts. Translatable per active language.

📞

Contact Page

Contact form with server-side validation. Submissions are stored in the database and accessible from Admin → Contact Messages.

📋

Static Pages

Admin-managed CMS pages (About, Privacy Policy, Terms, etc.) with full TinyMCE editor, custom slugs, and SEO meta fields.

Commerce

Checkout Flow

A streamlined, single-page checkout experience that supports both registered users and anonymous guests.

1

Cart Review

Customer reviews cart items, adjusts quantities, or removes products. Real-time totals update instantly. A coupon code field is shown if the Discount module is enabled.

2

Identity & Address

Registered users see their saved addresses. Guests enter billing/shipping details inline — no account required. The inline-login widget lets existing customers sign in without leaving the page.

3

Shipping Method

Available shipping options (Free Shipping, Flat Rate, Regional Rate) are calculated in real time based on the entered address. Customer selects preferred method; total recalculates via AJAX.

4

Payment

Customer selects an active payment gateway. Depending on the gateway, they are redirected to the provider's hosted page (PayPal, Tap, HyperPay…) or fill in card details inline (Stripe, Authorize.Net, Moyasar…).

5

Order Confirmation

On successful payment the cart is cleared, an order record is created with a unique order code, stock is decremented, and a confirmation email is sent to the customer and the admin.

👤

Guest Checkout: Guests are assigned a temporary user_id via the GuestCheckoutService. Their order history is accessible if they later register with the same email.

Order Status Enum

database — orders.status
'Pending'          → Default on creation
'Pending Payment'  → Payment initiated but not confirmed
'Processing'       → Payment confirmed, order being prepared
'On Hold'          → Awaiting manual review
'Completed'        → Shipped and delivered
'Refunded'         → Payment returned to customer
'Canceled'         → Order voided
Customer

Customer Account

Registered customers get a full self-service account area accessible at /account/profile.

👤

Profile

Update name, email, profile photo, and password. Photo is processed through Intervention Image and stored in storage/uploads/images/users/.

📍

Address Book

Save multiple shipping/billing addresses with country and state selectors. One address is marked as primary and auto-populated at checkout.

📦

Order History

Paginated list of all past orders with order code, date, total amount, payment method, and current status. Click any order to view full line-item details.

❤️

Wishlist

Products added to the wishlist are persisted per user in the favorites table. Customers can move items directly from wishlist to cart.

Reference

Database Schema

MarketOS uses a clean, normalised relational schema. Below is a reference of every core and module table.

Core Tables

Table Key Columns Purpose
users id, first_name, last_name, email, password, photo, address_id All users (admins, sellers, customers, guests)
addresses id, user_id, country_id, state_id, city, address, zip Billing & shipping addresses per user
products id, sku, supplier_price, sale_price, quantity, category_id, user_id, tax_id, images_small[], images_large[], deleted_at Product catalogue with soft-delete
product_translations id, product_id, locale, slug, name, short_description, featured, description Translatable product content per language
product_attributes id, product_id, attribute_id, attribute_value_id, attribute_sale_price, quantity, sku Product variant combinations
attributes id + attribute_translations (locale, name) Attribute definitions (Color, Size…) with i18n
attribute_values id, attribute_id + attribute_value_translations (locale, value) Values per attribute (Red, XL…) with i18n
orders id, transaction_id, user_id, address_id, product_id[], qty[], sale_price[], taxes[], amount, shipping_cost, discount, payment_method, payment_currency, status Full order record — line items stored as JSON arrays
payments id, order_id, transaction_id, amount, currency, gateway, status Payment gateway transaction log
taxes id, name, rate, country_id, state_id, status Tax rules per region
favorites id, user_id, product_id Customer wishlist entries
compares id, user_id, product_id Product comparison list per user
ratings id, user_id, product_id, rating (1–5), review, status Customer reviews with moderation status
templates id, name, slug, path, active Registered storefront themes

Module Tables

Module Table(s) Purpose
Setting settings, setting_translations All site settings + payment gateway keys
Category categories, category_translations Hierarchical product categories
Brand brands Product brands / manufacturers
Currency currencies Currency codes, symbols, exchange rates
Shipping shippings, free_flat_shippings Regional shipping rates + flat/free rules
Discount discounts Coupon codes with rules and expiry
Deals deals Time-limited deal prices per product
Blog blog_categories, blog_posts, blog_post_translations Blog content with categories and i18n
Page pages, page_translations CMS static pages
Contact contacts Contact form submissions
HomeBanner home_banners Promotional banner images on homepage
HomeSlider home_sliders Hero carousel slides on homepage
Newsletter newsletters Email subscriber list
🔗

Relationships overview: products belongs to categories, users (seller), and taxes. orders stores line items as JSON arrays for historical accuracy — prices are snapshotted at order time so future price changes don't affect old orders.

Entity Relationship Summary

users ──┬── addresses (1:N) ├── products (1:N, as seller) ├── orders (1:N) ├── favorites (1:N) ├── compares (1:N) └── ratings (1:N) products ──┬── product_translations (1:N, locale) ├── product_attributes (1:N, variants) ├── categories (N:1) ├── taxes (N:1, nullable) ├── deals (1:N) └── ratings (1:N) orders ──── payments (1:N) └── address (N:1, snapshot) attributes ──── attribute_values (1:N) └── attribute_value_translations (1:N, locale)
Admin

Settings Reference

All global store settings are managed at Admin → Settings. Changes apply immediately without redeploying.

Setting Group Options
General Store name, contact email, phone, physical address, Google Maps embed URL, site tags/keywords
Appearance Site logo, favicon, primary/secondary/accent colors (color picker), default font, product grid layout (grid 1 / grid 2)
Currency Default display currency, exchange rate API endpoint, auto-refresh interval (via scheduler)
Social Media Facebook, Twitter/X, Instagram, LinkedIn, YouTube — links displayed in storefront footer and contact page
Payments Toggle each gateway on/off; enter API keys for: PayPal, Stripe, Authorize.Net, Tap, Paymob, Moyasar, HyperPay, Fawry, Razorpay, 2Checkout
Languages Add/remove languages, set default language, toggle RTL mode per language, manage translation keys inline
Email (SMTP) Configured via .env: MAIL_HOST, MAIL_PORT, MAIL_USERNAME, MAIL_FROM_ADDRESS
Developer

Customisation Guide

MarketOS is built on standard Laravel conventions — any Laravel developer can extend it without proprietary knowledge.

Creating a Custom Module

bash
# Generate a new module scaffold
php artisan module:make Reviews

# Generate a controller inside it
php artisan module:make-controller ReviewController Reviews

# Generate a model
php artisan module:make-model Review Reviews

# Generate a migration
php artisan module:make-migration create_reviews_table Reviews

Overriding a Theme View

Theme views live in resources/views/themes/{theme-name}/. Copy the file you want to change from the active theme folder and edit it — never edit vendor files directly.

blade template override
# Original file (do not edit)
resources/views/themes/default/product/show.blade.php

# Your override (create this file)
resources/views/themes/my-theme/product/show.blade.php

Adding a Payment Gateway

1

Create the Controller

Add app/Http/Controllers/Theme/Payments/MyGateway_Controller.php. Implement checkout(), callback(), and webhook() methods following the existing gateway pattern (e.g., copy Stripe_Controller.php as a template).

2

Register Routes

Add your gateway routes to routes/web.php inside the /{lang}/checkout route group.

3

Add Settings Fields

Add columns for your API keys to the settings migration and expose them in Modules/Setting views and controller.

Key Service Classes

Class Responsibility
CurrencyService Resolves the user's selected currency from request/cookie/default; converts prices between currencies via stored unit prices
DiscountService Validates coupon codes, calculates discount amounts, enforces usage limits and expiry dates
ShippingService Resolves shipping options (Free / Flat / Regional) based on customer address; converts shipping prices to user currency
TaxService Resolves applicable tax rate: state-level first, country-level fallback; calculates tax amount on the subtotal
OrderService Creates order records with stock-locking (lockForUpdate()), price snapshotting, and tax/discount application
MediaService Handles image uploads, resizing via Intervention Image, and deletion. Generates small/medium/large variants
ThemeGeneratorService Handles theme ZIP extraction, registration, and view-path resolution for the active theme
Help

Troubleshooting & FAQ

Solutions to the most common issues encountered during installation and setup.

❓ White screen / 500 error after installation

Temporarily set APP_DEBUG=true in .env, then run php artisan config:clear and refresh. The real error will now display. Common causes: missing .env, wrong DB credentials, or unwritable storage/ directory.

❓ Images not displaying (broken image icons)

Run php artisan storage:link to create the symlink from public/storage to storage/app/public. Also ensure APP_URL in .env matches your actual domain (with https:// if applicable).

❓ 419 Page Expired on form submit

This is a CSRF token mismatch. Ensure SESSION_DOMAIN in .env is set correctly (e.g., .yourdomain.com with the leading dot for subdomains). Also check that your server clock is synchronised.

❓ How do I reset the admin password?

bash — tinker
php artisan tinker
>>> App\Models\User::find(1)->update([
    'password' => bcrypt('NewPassword123')
]);

❓ Emails are not being sent

Verify your MAIL_* settings in .env. Test with php artisan tinkerMail::raw('Test', fn($m) => $m->to('you@example.com')). For production, use a transactional service like Mailgun, Postmark, or SES rather than SMTP directly.

❓ How do I update MarketOS to a new version?

1

Back up your database: mysqldump -u root -p marketos_db > backup.sql

2

Replace all files except .env and the storage/ directory with the new version.

3

Run: composer install && php artisan migrate && php artisan config:cache && php artisan view:cache

❓ How do I put the store in maintenance mode?

bash
# Enable maintenance mode
php artisan down --secret="my-bypass-token"
# Access the site while in maintenance: yoursite.com/my-bypass-token

# Disable maintenance mode
php artisan up

❓ Cache not updating after admin changes

Use the CacheClear module from the admin panel (Admin → Plugins → Cache Clear → Run), or run these commands:

bash
php artisan cache:clear
php artisan config:clear
php artisan view:clear
php artisan route:clear
Help

Support

We are committed to providing prompt and helpful support for all licensed buyers.

🎫

How to get support: Open a support ticket through the CodeCanyon item page. Please include your purchase code, PHP/server version, and a detailed description of the issue. Response time is typically within 24 hours on business days.

📖

Before opening a ticket: Check this documentation thoroughly, verify your server meets all requirements, and ensure APP_DEBUG=true temporarily to read the exact error message.

Support does not cover: Customisations beyond the item's original features, third-party plugin conflicts, or issues caused by server misconfiguration. Custom development is available at an additional cost — please enquire via message.

Type Included
Bug fixes ✓ Included
Feature updates ✓ Included for 6 months
Installation assistance ✓ Included
Custom modifications ✗ Not included (available for hire)
Third-party integrations ✗ Not included