PORTABLE INSTALL
================

This archive is a whole working copy of the solar CRM: the application's code,
its database and the files it stores. The installer in portable/ sets it up on
this computer in development mode, with PHP and MySQL (or SQLite) and nothing
else to configure by hand.

What you need on this machine
-----------------------------

  - PHP 8.3 or newer, with the zip, pdo_mysql (or pdo_sqlite), mbstring,
    openssl, curl, fileinfo and dom extensions
  - Composer  (skip with --no-composer if the package was built --with-vendor)
  - Node.js 18 or newer and npm  (skip with --no-npm)
  - MySQL or MariaDB, if the package carries a MySQL database

Install it
----------

  1. Unzip this archive somewhere outside a web root, for example
     C:\laragon\www\solar-crm or ~/sites/solar-crm
  2. Open a terminal in the directory you unzipped it into
  3. Run the installer:

         php portable/install.php --db-name=solar_crm

     On Windows you can also double-click portable\install.bat, and on macOS or
     Linux portable/install.sh does the same thing.

     Add these when the defaults do not fit:

         --db-user=root --db-password=secret --db-host=127.0.0.1 --db-port=3306
         --app-name="Your Solar Co" --app-url=http://solar-crm.test

  4. Start it:

         php artisan serve

     and, in a second terminal, the front end with hot reloading:

         npm run dev

     `composer run dev` runs the application, the front end and the queue
     worker together if you prefer one command.

Look before you leap
--------------------

    php portable/install.php --dry-run

checks the package, the machine and the database dump, and writes nothing.

The installer refuses two things on purpose, because both are how somebody's
live data gets replaced by accident:

  - it will not overwrite a .env that is already here. Pass --force if you
    really are reinstalling; the existing .env is kept beside the new one;
  - it will not import into a database that already holds tables. Pass --force
    only if that database is yours to replace.

It also refuses to run inside the installation the package was built from.

What is inside
--------------

  portable/manifest.json       what the package holds, and its checksums
  portable/database.sql.gz     the database dump
  portable/install.php         this installer
  everything else              the application

The file you were sent is confidential: it holds real customer records and the
password hashes of the accounts that existed on the computer it came from.
Do not email it, commit it, or leave it on a shared drive.

The .env of the machine the package was built on is deliberately NOT in here,
and neither are its application key or its git history. The installer writes a
fresh .env and generates a fresh key, so the two installations share data but
not credentials.

Signing in
----------

The accounts come across with the database, with the passwords they already
had. If they are not yours, change them from Settings once you are in, or set
SUPER_ADMIN_EMAIL and SUPER_ADMIN_PASSWORD in .env and run:

    php artisan db:seed --class=SuperAdminSeeder

Before it faces anybody
-----------------------

This is a development installation: APP_ENV=local and APP_DEBUG=true. Set a real
APP_URL, a real mailer and a queue worker before anyone else uses it, and take a
verified backup of what you have now:

    php artisan queue:work --queue=default
    php artisan crm:backup --type=full
