AssetHub Upgrade Guide

Upgrade from AssetHub v2.0.0 to v3.0.0

This guide walks you through updating an existing v2 installation while keeping your database, uploaded files, and configuration intact. v3 is a non-breaking upgrade — batch assets, disposals, allocations, and all v2 data remain unchanged.

Applies to: v2.0.0 → v3.0.0 Estimated time: 10–25 minutes Main commands: php artisan migrate --force, php artisan optimize

Overview

AssetHub v3.0.0 focuses on localization and translations: a full Translation Editor, custom locales, CSV import/export, timezone and currency settings that apply app-wide, Hindi as the 11th built-in language, and consistent date formatting across the UI.

Choose your path: Follow exactly one upgrade section below based on where your v2 site runs — Localhost, Hostinger, or cPanel. The backup rules and “do not” warnings apply to all environments.
Item Action
Application code (app/, routes/, public/build/, lang/, etc.) Replace with v3 files from CodeCanyon source/
.env Keep your existing file
storage/ (uploads, logs, installed.lock) Keep your existing folder
MySQL database Keep — run migrate for any pending migrations only
DB translation overrides (translations table) Keep — preserved automatically
Pre-built assets: The CodeCanyon source/ package already includes compiled frontend assets in public/build/. On production (Hostinger, cPanel), you do not need Node.js or npm run build on the server.

Before you start

Always back up before upgrading any installation — including localhost if it contains real data.

1. Back up your database

Export your MySQL database via phpMyAdmin, Adminer, or the command line:

mysqldump -u USERNAME -p DATABASE_NAME > assethub-v2-backup.sql

2. Back up your files

  • .env — database credentials, mail settings, APP_KEY
  • storage/ — asset photos, avatars, company logo, logs
  • storage/app/public/ — all uploaded media

3. Put the site in maintenance mode (recommended for production)

php artisan down
# ... perform upgrade ...
php artisan up

On Hostinger Single without Terminal, skip this or use the temporary PHP script pattern in the Hostinger section.

4. Download v3.0.0 from CodeCanyon

Go to your CodeCanyon Downloads page and download AssetHub v3.0.0. Use the contents of the source/ folder (application files). Open documentation/index.html in the package root for the full buyer install guide.

Do not visit /install after upgrading. The web installer runs migrate:fresh and will wipe your database. Use php artisan migrate --force instead.

What's new in v3.0.0

After upgrading, these features become available without affecting your existing v2 data:

  • Translation EditorAdministration → Translations: add custom locales, edit strings inline, search/filter by group, CSV import/export
  • Custom locales — stored in custom_locales; DB overrides merge with lang/ file baseline
  • Localization settings — timezone (incl. Europe/Skopje), currency (incl. MKD), symbol position — applied app-wide after save
  • Hindi (hi) — 11th built-in UI language
  • Date format — admin-configured format applied across main Vue pages via useDate
  • New permissionmanage translations (Admin by default)

All v2 features (batch/lot assets, allocations, disposals, public QR page, operational reports) continue to work unchanged.

Upgrading on Localhost

For developers running AssetHub v2 locally (Laragon, XAMPP, WAMP, Valet, Sail, or php artisan serve).

Typical path: E:\...\Asset Manager\ or a clone of the project. Your local URL is usually http://localhost:8000 or a Laragon virtual host.
  1. Get v3 application files

    Option A — Git: Pull or merge the v3 release branch/tag into your working copy.

    Option B — CodeCanyon ZIP: Extract v3 source/ into your project folder, overwriting app/, routes/, resources/, public/build/, lang/, config/, etc.

    Do not overwrite your local .env or storage/ (uploads, logs).

  2. Install PHP dependencies

    cd /path/to/asset-manager
    composer install

    Use composer install --no-dev only if you want to mirror production; for local dev, keep dev dependencies.

  3. Rebuild frontend (local dev only)

    If you edit Vue/JS locally, rebuild assets. The CodeCanyon package already ships public/build/, but after pulling source code you typically need:

    npm install
    npm run build

    Remove public/hot if it exists (Vite dev marker) before testing production-style assets.

  4. Run database migrations

    php artisan migrate

    Most v2 databases already have custom_locales and translations tables from the original install. Laravel applies only pending migrations — you may see “Nothing to migrate”, which is normal.

  5. Add the new permission

    Grant manage translations to Admin. See New permissions.

  6. Clear caches

    php artisan optimize:clear
    php artisan optimize
  7. Verify locally

    • Start the server: php artisan serve (or use Laragon)
    • Log in as admin — confirm v2 data (assets, batches, disposals) is intact
    • Sidebar shows Administration → Translations
    • Settings → Localization — change timezone/currency, save, confirm dates update
    • Language switcher includes Hindi

Localhost checklist

  • Back up local database (if not disposable)
  • Replace/pull v3 code; keep .env and storage/
  • composer install
  • npm run build (if developing frontend)
  • php artisan migrate
  • Assign manage translations permission
  • php artisan optimize:clear
  • Test Translations page and Localization settings
  • Do not visit /install

Upgrading on Hostinger

For customers running AssetHub v2 on Hostinger (Single, Premium, Business, or VPS). Steps use hPanel terminology.

Hostinger Single has no SSH/Terminal. Use a temporary Cron Job or one-time PHP script (Methods A/B below) to run migrate and optimize. Premium/Business/VPS may use SSH (Method C).

Step 1 — Back up via hPanel

  1. Login to Hostinger hPanelHosting → Manage for your domain.
  2. Database: Databases → phpMyAdmin → select your AssetHub database → ExportQuickGo. Save the .sql file.
  3. Files: Files → File Managerpublic_html/ (or your Laravel root).
  4. Enable Settings → Show hidden files to see .env.
  5. Download .env and compress/download the entire storage/ folder.

Step 2 — Check PHP version

  1. Advanced → PHP Configuration
  2. Set PHP to 8.2 or 8.3
  3. Confirm extensions: OpenSSL, PDO, PDO_MySQL, Mbstring, GD, Tokenizer, XML, Ctype, JSON, Fileinfo

Step 3 — Upload v3 files (keep your data)

  1. On your computer, extract the v3 CodeCanyon package and zip the contents of the source/ folder.
  2. In File Manager, open public_html/ where v2 already lives.
  3. Upload the ZIP and Extract. Allow overwrite of app/, public/, vendor/, lang/, etc.
  4. Restore if overwritten: re-upload your saved .env and storage/.
  5. Delete the upload ZIP after extraction.
  6. Confirm artisan, .htaccess, and storage/installed.lock still exist.
Never replace .env with the default from the v3 package on a live site — you will lose DB credentials, mail config, and APP_KEY.

Step 4 — Run migrations & optimize (no Terminal on Single)

Replace uXXXXXX with your Hostinger username. Find the full path: File Manager → right-click artisanProperties.

Method A — Temporary Cron Job (recommended for Single)

  1. Advanced → Cron Jobs → Create Cron Job
  2. Type: Custom
  3. Command (run once, then delete the cron job):
    /usr/bin/php /home/uXXXXXX/public_html/artisan migrate --force
  4. Schedule: Every minute (* * * * *) for 1–2 minutes only
  5. After migrations, create two more one-time cron jobs (delete each after it runs):
    /usr/bin/php /home/uXXXXXX/public_html/artisan optimize:clear
    /usr/bin/php /home/uXXXXXX/public_html/artisan optimize
  6. Check storage/logs/laravel.log or log in to confirm the site loads.

Method B — One-time PHP script (alternative)

  1. Create public_html/upgrade-v3.php with the script below. Set a strong secret key.
  2. Visit https://yourdomain.com/upgrade-v3.php?key=YOUR-SECRET-KEY once.
  3. Delete the file immediately after success.
<?php
// DELETE THIS FILE IMMEDIATELY AFTER USE
$secret = 'YOUR-SECRET-KEY-HERE';
if (($_GET['key'] ?? '') !== $secret) { http_response_code(403); exit('Forbidden'); }

define('LARAVEL_START', microtime(true));
require __DIR__.'/vendor/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
$app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap();

Illuminate\Support\Facades\Artisan::call('migrate', ['--force' => true]);
echo Illuminate\Support\Facades\Artisan::output() . "\n";

Illuminate\Support\Facades\Artisan::call('optimize:clear');
echo Illuminate\Support\Facades\Artisan::output() . "\n";

Illuminate\Support\Facades\Artisan::call('optimize');
echo Illuminate\Support\Facades\Artisan::output() . "\n";

echo "Done. DELETE upgrade-v3.php now.\n";

Method C — SSH / Terminal (Premium, Business, VPS)

cd ~/public_html
php artisan migrate --force
php artisan optimize:clear
php artisan optimize

Step 5 — Add manage translations permission

Easiest on Hostinger without Terminal: log in as Admin and assign permissions via the UI if your installation exposes role editing, or run the seeder once via Cron/SSH:

/usr/bin/php /home/uXXXXXX/public_html/artisan db:seed --class=RolePermissionSeeder --force

See New permissions for seeder cautions if you customized roles.

Step 6 — Verify cron job (unchanged from v2)

Your existing schedule:run cron should still work:

/usr/bin/php /home/uXXXXXX/public_html/artisan schedule:run

Schedule: every minute. Do not remove it when deleting temporary upgrade cron jobs.

Step 7 — Test the upgrade

  • Login — confirm v2 assets, batches, and disposals are intact
  • Administration → Translations opens (Admin only)
  • Settings → Localization — set timezone (e.g. Europe/Skopje) and currency (e.g. MKD)
  • Uploaded images still display (storage/app/public/ via /files/)

Hostinger-specific notes

  • Uploads: AssetHub uses public/files/, not /storage/, because some Hostinger plans block /storage/* URLs. Do not delete storage/app/public/ during upgrade.
  • 500 after upload: Check PHP 8.2+, restore .env, run optimize:clear, set storage/ and bootstrap/cache/ to 755.
  • Document root public_html/public/? Laravel code stays at public_html/; cron path is still .../public_html/artisan.

Hostinger checklist

  • Export database via phpMyAdmin
  • Download .env and storage/
  • PHP 8.2 or 8.3
  • Upload/extract v3 source/ into public_html/
  • Re-upload .env and storage/ if overwritten
  • Run migrate + optimize (Cron, PHP script, or SSH)
  • Assign manage translations permission
  • Verify Translations + Localization
  • Do not visit /install

Upgrading on cPanel

For customers running AssetHub v2 on any hosting that uses cPanel (shared hosting, reseller, or managed VPS with cPanel).

Many cPanel hosts include Terminal (Advanced → Terminal) or SSH. If available, use Method C for the fastest upgrade. If not, use temporary Cron Jobs like Hostinger Single.

Step 1 — Back up via cPanel

  1. Login to cPanel for your account.
  2. Database backup: Databases → phpMyAdmin → select your database → ExportQuickGo. Save the .sql file.
  3. Alternatively: Backup → Download a MySQL Database Backup (if your host provides full cPanel backups).
  4. File backup: File Manager → open your web root (usually public_html/ or public_html/yourdomain/).
  5. Enable Settings → Show Hidden Files (dotfiles) to see .env.
  6. Download .env and compress/download the storage/ folder.

Step 2 — Check PHP version

  1. cPanel → Software → Select PHP Version (or MultiPHP Manager).
  2. Select PHP 8.2 or 8.3 for your domain/document root.
  3. In PHP Extensions, enable: openssl, pdo, pdo_mysql, mbstring, gd, tokenizer, xml, ctype, json, fileinfo.

Step 3 — Upload v3 files

  1. On your computer, zip the contents of the v3 CodeCanyon source/ folder.
  2. File Manager → navigate to your Laravel root (where artisan lives).
  3. Upload the ZIP → select it → Extract.
  4. When prompted, overwrite application files (app/, public/, vendor/, etc.).
  5. Re-upload your backed-up .env and storage/ if they were replaced.
  6. Remove the ZIP from the server after extraction.
Subdomain or addon domain? AssetHub must be extracted where artisan and public/index.php (or your root index.php) live — not inside an empty subfolder by mistake.

Step 4 — Run migrations & optimize

Replace /home/USERNAME/public_html with your actual path (File Manager → right-click artisan → properties, or check Cron command examples from your host).

Method A — cPanel Terminal (if available)

  1. cPanel → Advanced → Terminal
  2. Run:
    cd ~/public_html
    php artisan migrate --force
    php artisan optimize:clear
    php artisan optimize

Method B — SSH (if enabled by your host)

ssh USERNAME@yourdomain.com
cd ~/public_html
php artisan migrate --force
php artisan optimize:clear
php artisan optimize

Method C — Temporary Cron Job (no Terminal)

  1. cPanel → Advanced → Cron Jobs
  2. Add a Once Per Minute cron (temporarily) with:
    /usr/local/bin/php /home/USERNAME/public_html/artisan migrate --force
  3. Some hosts use /usr/bin/php instead of /usr/local/bin/php — check your host’s cron documentation or an existing cron entry.

  4. Wait 1–2 minutes, then delete this cron job.
  5. Add one-time crons (or use Terminal) for:
    php artisan optimize:clear
    php artisan optimize

Method D — One-time PHP script (same as Hostinger Method B)

Create upgrade-v3.php in your web root, visit it once with a secret key, then delete it. Use the script from the Hostinger section (Step 4, Method B).

Step 5 — Add manage translations permission

Via Terminal/SSH/Cron (once):

php artisan db:seed --class=RolePermissionSeeder --force

Or assign manually if roles were customized — see New permissions.

Step 6 — Verify scheduled tasks cron

Confirm your existing v2 cron still runs every minute:

/usr/local/bin/php /home/USERNAME/public_html/artisan schedule:run

cPanel → Cron Jobs → verify Last Run or check email output if configured.

Step 7 — Test the upgrade

  • Open your site and log in as Admin
  • Confirm v2 data unchanged (assets, batches, disposals, reports)
  • Open Administration → Translations
  • Test Settings → Localization (timezone, currency, default language)
  • Confirm SSL is active (required for QR camera scanner)

cPanel-specific notes

  • APP_KEY missing / 500: See buyer documentation cPanel section — generate via Terminal, genkey.php, or locally with php artisan key:generate --show.
  • Permissions: Set storage/ and bootstrap/cache/ to 755 (recursive) if uploads or cache fail.
  • mod_security: Some hosts block /storage/*; AssetHub serves uploads via /files/. Keep storage/app/public/ intact.

cPanel checklist

  • Export database (phpMyAdmin)
  • Download .env and storage/
  • PHP 8.2 or 8.3 + required extensions
  • Upload/extract v3 source/
  • Restore .env and storage/ if needed
  • Run migrate + optimize (Terminal, SSH, or Cron)
  • Seed or assign manage translations
  • Verify cron schedule:run
  • Test Translations + Localization
  • Do not visit /install

Database migrations

v3.0.0 is primarily an application-layer upgrade (UI, localization logic, Translation Editor). It does not add large new business tables like v2 did.

When you run php artisan migrate --force, Laravel applies only pending migrations. For most v2 installations, the translation infrastructure already exists from the initial AssetHub install:

Migration (if not yet run) What it does
create_custom_locales_table Stores admin-defined locales (code, name, flag, direction, base locale).
create_translations_table Stores DB translation overrides edited via the Translation Editor.
add_locale_to_users_table Per-user language preference for UI and email notifications.
Expected output: Many v2 sites will report Nothing to migrate. That is normal — v3 reuses existing tables and adds the admin UI on top.

New permissions

v3.0.0 adds one permission that is not created by migrate alone:

  • manage translations — access Administration → Translations, add locales, edit/import/export strings

Option A — Run the permission seeder (simplest)

If you have not customized role permissions:

php artisan db:seed --class=RolePermissionSeeder --force

This creates manage translations and assigns all permissions to the Admin role. Other default roles keep their v2 permission sets plus any new defaults from the seeder.

Caution: The seeder uses syncPermissions for each role, which resets that role to the default permission set defined in code. If you customized role permissions in production, use Option B.

Option B — Create permission manually (custom roles)

If you cannot run the seeder safely, insert the permission via phpMyAdmin or tinker, then assign it to Admin:

php artisan tinker
>>> Spatie\Permission\Models\Permission::firstOrCreate(['name' => 'manage translations', 'guard_name' => 'web']);
>>> Spatie\Permission\Models\Role::findByName('admin')->givePermissionTo('manage translations');

Do NOT do this

The following actions will erase or corrupt your data:

Action Why it's dangerous
Visit /install again Runs migrate:fresh — drops all tables and wipes your database.
Delete storage/installed.lock and reinstall Same as above — triggers a fresh install.
php artisan migrate:fresh Drops every table and re-runs all migrations from scratch.
php artisan migrate --seed on production May insert demo data into your live database.
Replace .env with the default v3 copy You'll lose DB credentials, mail config, and APP_KEY.
Delete storage/app/public/ Removes all uploaded asset photos, avatars, and documents.
Data loss warning: If you accidentally ran the installer or migrate:fresh, restore from your database backup immediately.

Quick checklist

Universal steps — combine with your environment section above:

  • Back up MySQL database
  • Back up .env and storage/
  • Download AssetHub v3.0.0 from CodeCanyon
  • Upload v3 source/ files; keep .env and storage/
  • Run php artisan migrate --force
  • Run php artisan optimize:clear and php artisan optimize
  • Add manage translations permission (seeder or manual)
  • Log in — verify v2 data + new Translations / Localization features
  • Do not visit /install

Troubleshooting

“Nothing to migrate”

Normal for v2 → v3. Your database already has the translation tables. Proceed to cache clear and permission setup.

Translations menu missing or “403 Unauthorized”

Admin user needs manage translations. Run the seeder or assign manually — see New permissions.

Timezone / currency change has no effect

php artisan optimize:clear
php artisan config:cache

Confirm you saved Settings → Localization as an admin. v3 applies timezone from settings at runtime via AppServiceProvider.

UI shows raw translation keys (e.g. translations.title)

Ensure v3 lang/ files were uploaded (including lang/*/translations.php). Run php artisan optimize:clear.

Hindi or new language missing from switcher

Confirm v3 config/app.php and lang/hi/ were deployed. Clear config cache.

500 error after upload

php artisan optimize:clear
chmod -R 775 storage bootstrap/cache

Check storage/logs/laravel.log. Restore .env if overwritten.

Blank page / Vite dev URLs in HTML

Ensure public/hot does not exist on the server and public/build/ from v3 was uploaded.

Hostinger-specific issues

See Upgrading on Hostinger — cron path, /files/ uploads, no Terminal on Single.

cPanel-specific issues

See Upgrading on cPanel — PHP version, cron binary path, APP_KEY generation.

Need more help?

Open documentation/index.html in your v3 CodeCanyon package (buyer guide), or contact the author through the CodeCanyon item support tab.