System Requirements

Deprixa Plus requires a standard LEMP or LAMP stack. The following are minimum and recommended specifications.

Component Minimum Recommended Notes
PHP 8.2 8.3+ Extensions required: BCMath, Ctype, cURL, DOM, Fileinfo, JSON, Mbstring, OpenSSL, PCRE, PDO, Tokenizer, XML, GD or Imagick
Web Server Nginx 1.18 / Apache 2.4 Nginx 1.24+ Nginx is strongly recommended for production. Apache requires mod_rewrite.
Database MySQL 8.0 MySQL 8.0+ MariaDB 10.6+ is also supported. PostgreSQL is not tested.
Node.js 18 LTS 20 LTS Required only for building frontend assets. Not needed in production if you use pre-built assets.
Composer 2.5 2.6+ PHP package manager.
Redis Optional 7.x (strongly recommended) Used for cache, sessions, and job queues. Without Redis, file-based drivers are used which are slower under load.
RAM 1 GB 4 GB+ For small teams. Larger installations benefit from 8+ GB.
Storage 5 GB 50+ GB Depends on shipment label volume and file uploads (logos, employee documents).
OS Ubuntu 20.04 LTS Ubuntu 22.04 / 24.04 LTS macOS and Windows WSL2 are supported for local development only. Production should use Linux.

Supported Hosting Environments

Deprixa Plus can be installed on: VPS/dedicated servers (DigitalOcean, Linode, Hetzner, AWS EC2 — full control, recommended for production), Hostinger Business or Premium shared hosting (SSH access required — see the Hostinger installation guide below), and local development servers like MAMP (macOS) or XAMPP (Windows/macOS — see the local installation guide below).

Basic shared hosting without SSH access is not supported because Composer and Artisan commands must be run at least once during setup.

Installation on Local Server (MAMP / XAMPP)

Use this guide to run Deprixa Plus on your own computer for development or testing. Node.js is required on local machines to compile the frontend assets.

Prerequisites for local development

Make sure you have installed: MAMP (macOS) or XAMPP (Windows/macOS), Composer (globally), Node.js 18+ LTS, and npm (bundled with Node.js). PHP must be available in your terminal PATH.

  1. 1

    Place the Files

    Extract the downloaded ZIP into your local web server's document root:

    • MAMP (macOS): /Applications/MAMP/htdocs/deprixa-plus/
    • XAMPP (Windows): C:\xampp\htdocs\deprixa-plus\
    • XAMPP (macOS): /Applications/XAMPP/htdocs/deprixa-plus/

    The file artisan must be at the root of this folder.

  2. 2

    Start MAMP / XAMPP

    Open MAMP or XAMPP and start both the Apache (or Nginx) and MySQL services. In MAMP, go to MAMP → Preferences → PHP and confirm PHP 8.2 or 8.3 is selected. In XAMPP, use the Control Panel to start Apache and MySQL.

    Create an empty database for Deprixa Plus using phpMyAdmin (accessible at http://localhost/phpmyadmin by default).

  3. 3

    Install PHP Dependencies (Composer)

    Open a terminal, navigate to the project folder, and run Composer. On MAMP you may need to use MAMP's PHP binary explicitly:

    bash — MAMP (macOS)
    cd /Applications/MAMP/htdocs/deprixa-plus
    /Applications/MAMP/bin/php/php8.3.x/bin/php /usr/local/bin/composer install
    bash — XAMPP (Windows, Command Prompt)
    cd C:\xampp\htdocs\deprixa-plus
    composer install

    If Composer is not in your PATH, download it from getcomposer.org and run it as php composer.phar install.

  4. 4

    Configure the Environment File

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

    Open .env and set APP_URL=http://localhost:8888/deprixa-plus/public (adjust port to match MAMP's Apache port — default is 8888). Set APP_ENV=local and APP_DEBUG=true for local development.

  5. 5

    Install Node.js Dependencies and Build Frontend

    This step is required on local machines. It installs ~500 MB of packages into node_modules/ and compiles the React/TypeScript frontend into public/build/. The node_modules/ folder is only needed on the machine doing the build — it is never uploaded to production.

    bash
    npm install
    npm run build

    For active development (hot module replacement), use npm run dev instead of npm run build. This starts Vite's dev server which automatically refreshes the browser on file changes.

  6. 6

    Create Storage Symlink

    bash
    php artisan storage:link
  7. 7

    Run the Installation Wizard

    Open your browser and go to your local URL, for example:

    • MAMP: http://localhost:8888/deprixa-plus/public/install
    • XAMPP: http://localhost/deprixa-plus/public/install

    Follow the 5-step wizard. When entering database credentials in Step 3, use 127.0.0.1 as the host, 3306 as the port, and the username/password you configured in MAMP/XAMPP (default is often root / root or root / empty).

Installation Steps

Deprixa Plus uses a web-based installation wizard. You prepare the server via the command line (steps 1–6), then complete the setup through your browser (step 7). Each step must complete successfully before proceeding to the next.

  1. 1

    Extract the Source Code

    Download the ZIP file from your Envato purchase page (CodeCanyon). Log in to your Envato account, go to your purchases, find Deprixa Plus, and click Download → All files & documentation.

    Extract the downloaded ZIP to your web server directory. For example:

    • Linux VPS/production: /var/www/html/deprixa-plus
    • MAMP (macOS): /Applications/MAMP/htdocs/deprixa-plus
    • XAMPP (Windows/macOS): C:\xampp\htdocs\deprixa-plus

    Upload the contents of the ZIP so that the artisan file is directly at the root of your chosen directory (e.g., /var/www/html/deprixa-plus/artisan).

  2. 2

    Install PHP Dependencies

    Run Composer to install all backend packages. Use --no-dev in production to exclude development-only packages and --optimize-autoloader for a performance-optimized class map.

    bash
    composer install --no-dev --optimize-autoloader
  3. 3

    Configure the Environment File

    Copy the example environment file and generate a new application encryption key. The key must be generated before running any other Artisan commands.

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

    Open .env with your preferred editor and fill in at minimum the APP_URL and mail settings. The database credentials will be configured through the wizard in step 7.

  4. 4

    Build Frontend Assets

    Pre-built assets included in the ZIP

    The distribution ZIP already includes the compiled frontend in public/build/. If that folder exists and contains a manifest.json, you can skip this step entirely — Node.js and npm are NOT required on the production server. Only run this step if you modified the frontend source code or if the public/build/ folder is missing.

    If you need to rebuild the frontend (e.g., after modifying React source files), install Node dependencies and compile. Always use npm run build on production (not dev):

    bash
    npm install
    npm run build

    The node_modules/ folder (~500 MB) is only needed during the build — do not upload it to production. Only the compiled output in public/build/ needs to be present on the server.

  5. 5

    Configure Nginx Web Server

    Point your Nginx server block to the /public directory. Below is a complete, production-ready configuration:

    nginx
    server {
        listen 80;
        listen [::]:80;
        server_name yourdomain.com www.yourdomain.com;
        root /var/www/deprixa-plus/public;
    
        add_header X-Frame-Options "SAMEORIGIN";
        add_header X-Content-Type-Options "nosniff";
    
        index index.php;
    
        charset utf-8;
    
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
    
        location = /favicon.ico { access_log off; log_not_found off; }
        location = /robots.txt  { access_log off; log_not_found off; }
    
        error_page 404 /index.php;
    
        location ~ \.php$ {
            fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
            fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
            include fastcgi_params;
            fastcgi_hide_header X-Powered-By;
        }
    
        location ~ /\.(?!well-known).* {
            deny all;
        }
    
        client_max_body_size 64M;
    }

    After saving the config, enable it and test:

    bash
    ln -s /etc/nginx/sites-available/deprixa /etc/nginx/sites-enabled/
    nginx -t
    systemctl reload nginx
  6. 6

    Set Directory Permissions and Storage Symlink

    Laravel needs write access to storage/ and bootstrap/cache/. Set the owner to your web server user (typically www-data on Ubuntu). Then create the public storage symlink.

    bash
    chown -R www-data:www-data /var/www/deprixa-plus
    chmod -R 775 /var/www/deprixa-plus/storage
    chmod -R 775 /var/www/deprixa-plus/bootstrap/cache
    php artisan storage:link
  7. 7

    Run the Installation Wizard

    Open your browser and navigate to https://yourdomain.com/install. The wizard will guide you through 5 steps:

    Wizard URL

    Navigate to /install on your domain. For example: https://app.yourdomain.com/install. The wizard is only accessible before the application has been installed. Once installation is complete, this URL is disabled automatically.

    Step 1 — Requirements Check

    URL: /install — Automatically checks that PHP version, required extensions (PDO, OpenSSL, cURL, Zip, Mbstring, GD), and directory permissions are met. All checks must pass (green) before the Next button becomes active.

    Step 1 — Requirements check screen showing all PHP extensions and permissions verified
    Step 2 — License Activation

    URL: /install/license — Enter your Envato Purchase Code (UUID format) and your Envato username. Click Verify License. When validation succeeds, the Next button becomes active.

    Step 2 — License verification screen with purchase code and username fields
    Step 3 — Database & Company Information

    URL: /install/database — Enter your MySQL connection details (host, port, database name, username, password) and your company information (name, email, phone, country, address). Use the Test Connection button to verify before proceeding. The wizard creates the database if it does not exist and imports the application schema automatically.

    Step 3 — Database configuration and company information form

    After clicking "Test Connection":

    Step 3 — Database connection test successful confirmation
    Step 4 — Administrator Account

    URL: /install/admin — Create the first administrator account. Enter a name, email address, and a strong password (minimum 8 characters). This account will have super-admin access to every feature in the system.

    Step 4 — Admin user creation form with name, email, and password fields
    Step 5 — System Preferences

    URL: /install/preferences — Configure the system defaults: language (Spanish or English), timezone (auto-detected from your browser), currency, date format, weight unit (kg/lb), and dimension unit (cm/in). Optionally enable Load demo data to populate the system with sample shipments and customers for testing.

    Step 5 — System preferences with language, timezone, currency, and unit selections
    Installation Complete

    After clicking Finish Installation, the system creates the storage symlink, writes the lock file, and redirects you to the login page. Use the admin credentials you created in Step 4 to log in.

    Installation complete — login screen ready to use

    Where to Find Your Purchase Code

    Log in to Envato Market (codecanyon.net) → click your avatar → Downloads → find Deprixa Plus → click License certificate & purchase code. The purchase code is a UUID in the format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

    When the wizard finishes, you will be redirected to /login. Use the admin credentials you created in Step 4 to log in.

Installation on Hostinger Shared Hosting

Hostinger Business and Premium plans include SSH access and support PHP 8.2/8.3, making them compatible with Deprixa Plus. The key difference from a VPS is that you use the Hostinger File Manager or FTP to upload files and the Hostinger hPanel to create the database — SSH is used only for running Composer and Artisan commands.

Important: Use the pre-built ZIP — do NOT upload node_modules

The deployment ZIP already contains public/build/ (compiled frontend assets) and vendor/ (PHP dependencies). You do not need Node.js, npm, or Composer on the Hostinger server. Never upload the node_modules/ folder — it is ~500 MB and not needed on the server.

  1. 1

    Create a MySQL Database in hPanel

    Log in to your Hostinger account → go to hPanel → Databases → MySQL Databases. Click Create a new MySQL database & user. Write down the database name, username, and password — you will need them in the installation wizard.

    The database host on Hostinger is typically 127.0.0.1.

  2. 2

    Upload the Files

    In hPanel, go to File Manager and navigate to the public_html folder (or a subdomain directory if you're installing on a subdomain). Upload the deployment ZIP and extract it there.

    After extraction, the file structure should look like:

    text
    public_html/
    ├── app/
    ├── bootstrap/
    ├── config/
    ├── database/
    ├── public/          ← web root should point here
    │   ├── build/       ← compiled frontend (must exist)
    │   └── index.php
    ├── resources/
    ├── routes/
    ├── storage/
    ├── vendor/          ← PHP dependencies (must exist)
    ├── .env.example
    └── artisan

    If you are installing in a subdomain, set the subdomain's document root to point to the public/ folder inside the uploaded directory. Do this in hPanel → Subdomains → Edit → Document Root.

  3. 3

    Configure .env via File Manager

    In File Manager, find .env.example, duplicate it and rename the copy to .env. Open .env and set at minimum:

    env
    APP_NAME="Deprixa Plus"
    APP_ENV=production
    APP_DEBUG=false
    APP_URL=https://yourdomain.com
    
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=your_database_name
    DB_USERNAME=your_database_user
    DB_PASSWORD=your_database_password

    Leave APP_KEY blank for now — you will generate it via SSH in the next step.

  4. 4

    Connect via SSH and Generate App Key

    In hPanel, go to Advanced → SSH Access to get your SSH credentials and enable SSH if not already active. Then connect from your terminal:

    bash — your local terminal
    ssh username@yourdomain.com -p 65002

    Once connected, navigate to the project folder and generate the app key:

    bash — SSH session on Hostinger
    cd ~/public_html            # or ~/domains/yourdomain.com/public_html
    php artisan key:generate
    php artisan storage:link

    If you installed into a subdirectory (e.g., public_html/app/), adjust the path accordingly. The storage:link command creates the symlink so uploaded files (logos, attachments) are publicly accessible.

  5. 5

    Set Directory Permissions via SSH

    bash — SSH session on Hostinger
    chmod -R 775 storage bootstrap/cache
  6. 6

    Configure the Document Root

    Hostinger must serve the public/ directory, not the root of the project. In hPanel:

    • For the main domain: go to hPanel → Hosting → Manage → Files → Document Root and set it to public_html/public (if you placed the project files directly in public_html).
    • For a subdomain: go to hPanel → Subdomains → Edit → Document Root and point it to the public/ subfolder inside your uploaded directory.

    If your hosting plan does not allow changing the document root, you can move the contents of the public/ folder into public_html/ and update public/index.php paths — but this is not recommended. Using a subdomain with the correct document root is the cleanest approach.

  7. 7

    Run the Installation Wizard

    Open your browser and navigate to https://yourdomain.com/install. Follow the 5-step wizard. In Step 3, enter the database credentials you created in Step 1 of this guide.

    Cron Job on Hostinger

    After installation, add a cron job in hPanel → Advanced → Cron Jobs. Set the command to: php ~/public_html/artisan schedule:run and the interval to every minute (use the "Once per minute" preset). This is required for scheduled notifications and auto-status updates to work.

Environment Variables Reference (.env)

All configuration is done through the .env file at the project root. Never commit this file to version control. Database credentials entered in the installation wizard are written to this file automatically.

Application Settings

VariableExample ValueDescription
APP_NAMEDeprixa PlusApplication name shown in emails, browser tab, and UI header.
APP_ENVproductionSet to production on live servers. local for development. Controls error verbosity.
APP_KEYbase64:…Auto-generated by php artisan key:generate. Never change on production — all encrypted data will become unreadable.
APP_DEBUGfalseSet to false in production. When true, detailed error stack traces are shown to users — a major security risk.
APP_URLhttps://app.yourdomain.comFull URL of your installation including protocol. Used for asset URLs, email links, and API base paths.

Database

These values are written automatically by the installation wizard when you complete Step 3. You can also set or update them manually here.

VariableExample ValueDescription
DB_CONNECTIONmysqlDatabase driver. Supported: mysql, mariadb.
DB_HOST127.0.0.1Database server hostname or IP. Use 127.0.0.1 for local, or your RDS/Cloud DB endpoint.
DB_PORT3306MySQL default port. Change if your DB server uses a non-standard port.
DB_DATABASEdeprixaName of the database. The wizard creates it automatically if it does not exist.
DB_USERNAMEdeprixa_userDatabase user. Should have SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX privileges.
DB_PASSWORDstr0ngP@ssword!Database user password. Use a strong, randomly generated password.

Cache, Session & Queue

VariableExample ValueDescription
CACHE_DRIVERredisCache backend. Options: redis (recommended), file, database, array.
SESSION_DRIVERredisSession storage. Options: redis (recommended), file, cookie, database.
QUEUE_CONNECTIONredisQueue backend for background jobs (notifications, exports). Options: redis, database, sync.
REDIS_HOST127.0.0.1Redis server hostname.
REDIS_PORT6379Redis port. Default is 6379.
REDIS_PASSWORDnullRedis authentication password. Set to null if no password is configured.

Mail Configuration

VariableExample ValueDescription
MAIL_MAILERsmtpMail driver. Options: smtp, ses (AWS), mailgun, log (dev only), array.
MAIL_HOSTsmtp.mailgun.orgSMTP server hostname. Use your ESP's SMTP endpoint.
MAIL_PORT587SMTP port. 587 (TLS/STARTTLS) is standard. 465 for SSL. 25 for unencrypted (not recommended).
MAIL_ENCRYPTIONtlsEncryption method: tls or ssl.
MAIL_USERNAMEpostmaster@yourdomain.comSMTP authentication username (usually your email address or API key).
MAIL_PASSWORDyour-smtp-passwordSMTP authentication password.
MAIL_FROM_ADDRESSnoreply@yourdomain.comThe "From" email address for all outgoing system emails.
MAIL_FROM_NAMEDeprixa PlusThe "From" display name shown in email clients.

File Storage (Optional S3)

By default, uploaded files (logos, attachments) are stored on the local server filesystem. To use AWS S3 or a compatible object storage service instead, set the following variables.

VariableExample ValueDescription
FILESYSTEM_DISKlocalDefault disk for file storage. Options: local (server filesystem) or s3 (AWS S3 or compatible).
AWS_ACCESS_KEY_IDAKIA…AWS IAM access key. Required only when FILESYSTEM_DISK=s3.
AWS_SECRET_ACCESS_KEYwJalrX…AWS IAM secret key. Required only when using S3.
AWS_DEFAULT_REGIONus-east-1AWS region where your S3 bucket is located.
AWS_BUCKETdeprixa-filesYour S3 bucket name.
AWS_URLhttps://deprixa-files.s3.amazonaws.comPublic base URL for your S3 bucket. Used to generate file URLs.

First-Run Checklist

After the installation wizard completes, log in with the admin account you created and finish these steps before going live:

Cron Job for Scheduled Tasks

Add the following entry to your server's crontab (crontab -e as the web server user or root):

cron
* * * * * www-data php /var/www/deprixa-plus/artisan schedule:run >> /dev/null 2>&1

Queue Worker (Supervisord)

For production, use Supervisord to keep the queue worker running. Create /etc/supervisor/conf.d/deprixa-worker.conf:

ini
[program:deprixa-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/deprixa-plus/artisan queue:work redis --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/log/deprixa-worker.log
stopwaitsecs=3600

Common Installation Errors

Error Cause Fix
License verification fails Wrong purchase code or Envato username, or the license server cannot be reached. Double-check the purchase code (UUID format) and your exact Envato username. Verify the server has outbound internet access on port 443.
Database connection fails in wizard Step 3 MySQL is not running, the credentials are wrong, or the host is incorrect. Run systemctl status mysql. Verify the host, port, username, and password. Use 127.0.0.1 instead of localhost for TCP connections.
No application encryption key has been specified APP_KEY is empty in .env. Run php artisan key:generate. Ensure the .env file exists.
White page / 500 error Storage or bootstrap/cache is not writable. Run chmod -R 775 storage bootstrap/cache and ensure the web server user owns these directories.
Class "App\Models\..." not found Composer autoloader is outdated. Run composer dump-autoload --optimize.
Assets not loading (404 on /build/*.js) npm run build was not run or the public/build directory is missing. Run npm install && npm run build. Verify that public/build/manifest.json exists.
Images/logos not loading (404 on /storage/...) Storage symlink not created. Run php artisan storage:link. Verify that public/storage is a symlink.
TokenMismatchException / 419 Page Expired CSRF token mismatch, usually because SESSION_DRIVER is misconfigured. Verify CACHE_DRIVER and SESSION_DRIVER in .env. If using Redis, ensure Redis is running. Run php artisan config:clear.
Email not being sent MAIL_* settings are wrong or queue worker is not running. Check MAIL_* variables. Verify SMTP credentials with a tool like MailTrap. Ensure queue worker is running if using async queues.
Permission denied when writing files Web server user does not own the storage directory. Run chown -R www-data:www-data storage bootstrap/cache.

Next Steps

With installation complete, explore the Settings module to configure your company profile, branding, and shipment services. Then read the Shipments module documentation to understand the core workflow.