Installation & setup
MiniMart POS is self-hosted software you install on your own server — this page walks through what the server needs, how to upload the build, and how the installer gets your first store running.
Overview
MiniMart POS ships as a single zip containing a complete Laravel 13 application with the React back-office already built inside it. You don't need to compile anything to get running — upload the zip, point your domain at one folder, and a guided installer in your browser does the rest: it asks for your database details, your company/admin details, and your purchase code, then creates the database tables and seeds the starting data for you. Once the installer finishes, the very first thing you'll do is sign in and complete the first-steps onboarding wizard.
Why it's useful
Because MiniMart is sold as a one-time licensed script (not a hosted service you rent), you're in control of where your data lives — your own server, your own backups, no monthly platform fee to a third party. The trade-off is that you're responsible for the server itself being ready, which is why this page exists: most "it won't install" problems are one of three things — PHP version, file permissions, or the database details — all covered below.
Server requirements
Check these with your host (or your server admin) before you upload anything:
- PHP 8.3 or newer, with the usual Laravel 13 extensions enabled (OpenSSL, PDO, Mbstring, Tokenizer, XML, Ctype, JSON, BCMath, Fileinfo, GD or Imagick).
- MySQL (or MariaDB) database, version compatible with Laravel 13. You'll need a database name, username and password ready before you start the installer.
- A web server — Apache or Nginx — able to point its document root at the app's
public/folder (not the project root). - Composer is only needed if you plan to modify PHP source and rebuild — the shipped zip already has vendor dependencies in place for a standard upload-and-run install.
- Node.js and npm are only needed if you intend to rebuild the React SPA from source. The zip already contains a prebuilt
public/build, so a normal buyer never needs to runnpm install. - Cron access (cPanel, Plesk, or a systemd timer) to schedule one recurring command — see Scheduled tasks below.
Step by step
Upload and extract
- Download the product zip
From your purchase confirmation or download link, download the installable package.
- Upload it to your server
Use your host's file manager or FTP/SFTP to upload the zip to your web space, then extract it there.
- Point your domain at public/
Your web server's document root (or the domain/subdomain you're using) must resolve to the app's
publicfolder specifically — not the folder that containsapp/,vendor/andartisan. On shared hosting this is usually done by moving the contents ofpublic/up one level, or by setting the domain's document root in your hosting control panel. - Make storage writable
Give the web server write access to the
storage/andbootstrap/cache/folders (commonlychmod -R 775, owned by the web server user). This is the single most common install snag — if the installer fails with a permissions or "unable to write" error, this is the first thing to check.
Run the installer
- Visit your domain
Open the site in a browser. With no installation detected yet, MiniMart automatically shows the installer instead of the normal app.
- Check requirements
The installer first verifies your PHP version and required extensions, and that
storage/andbootstrap/cache/are writable, flagging anything that's missing before you continue. - Enter database connection details
Host, port, database name, username and password for the MySQL database you created. The installer tests the connection before moving on.
- Enter your company & admin details
Your business name and the email/password for the first admin account — this becomes the login you use to sign in afterwards.
- Activate your licence
Enter your purchase code so the installer can verify it against your marketplace purchase. This step confirms you're running a licensed copy.
- Let it migrate & seed
The installer runs all database migrations and seeds the base reference data (default roles, currencies, tax defaults, etc.) automatically — you don't run any artisan commands by hand for a standard install.
- Sign in
Once the installer finishes, you're dropped at the login screen. Sign in with the admin email/password you just set, and you'll land in the required onboarding wizard to finish setting up your store.
Scheduled tasks (cron)
Laravel apps rely on one recurring scheduler command to do time-based work in the background. Add a cron entry (via cPanel's "Cron Jobs" page, Plesk's scheduled tasks, or a systemd timer on a VPS) that runs once a minute:
| Setting | Value |
|---|---|
| Command | php artisan schedule:run |
| Frequency | Every minute |
| Working directory | Your MiniMart install's project root (same folder as artisan) |
Without this cron entry, scheduled reports, subscription renewal processing, and expired-token/session cleanup silently never run — the app keeps working day-to-day, but these background jobs quietly pile up undone, which is why it's easy to miss during install and only notice weeks later.
Tips & best practices
- Take a database backup before every upgrade — the installer/updater runs new migrations against your live data.
- Use a dedicated database user for MiniMart rather than a shared one, so permissions and backups are easy to reason about.
- If you're on shared hosting without SSH, ask your host to confirm the PHP version — control panels sometimes default a domain to an older PHP version than the account supports.
- Keep your purchase code somewhere safe — you'll need it again if you ever have to re-run activation after a server migration.
- After installing, the very next stop is First steps — company details, currency, your first branch and product.
Notes & warnings
If your site shows a directory listing, a blank page, or a "forbidden" error right after upload, the document root is almost always pointed at the wrong folder. It must resolve to public/ specifically.
The zip ships with public/build already compiled. Only install Node/npm and run a frontend build if you're modifying the React source yourself — a standard install never needs it.
If the installer errors out partway through with a vague "something went wrong," re-check that storage/ and bootstrap/cache/ are writable by the web server user before anything else.