Skip to content

Installation overview

ExchangePro ships as two applications and has no web-based installer. Install the backend first, then the frontend, connect them with environment variables, then configure cron (and optionally a queue worker) on production.

For a single printable checklist, see Full installation guide or the package file INSTALL.md at the ZIP root.

Order of operations

StepActionDoc
1Install PHP dependencies & configure .envBackend
2Create database & run migrationsDatabase
3Install Node dependencies & configure .envFrontend
4Align CORS + Sanctum with frontend URLCORS & Sanctum
5Create first admin (sign up) - you must register before the publicFirst admin
6Configure mail, OAuth, rate API (optional)Configuration
7Deploy SSL, Nginx, Node processDeployment
8Cron (schedule:run) + queue choiceCron & queue

Development quick start

Terminal 1 - Backend

bash
cd backend
composer install
cp .env.example .env
php artisan key:generate
# Edit .env: DB_*, APP_URL, FRONTEND_URL
php artisan migrate
php artisan serve
# Default: http://127.0.0.1:8000

Terminal 2 - Frontend

bash
cd frontend
npm install
# Create .env with API_URL and FRONTEND_URL
npm run dev
# Default script: http://localhost:4000

Terminal 3 - Queue (optional)

Only if QUEUE_CONNECTION=database and you test queued mail:

bash
cd backend
php artisan queue:listen

Cron is usually skipped locally; run php artisan schedule:run manually to test rate sync.

Verify

  1. Open http://localhost:4000 - public home loads.
  2. Open http://localhost:4000/signup - register your user first (becomes admin while no admin exists).
  3. Sign in → redirected to /admin for administrators.

Production

On a public URL, the first signup becomes admin. Register yourself before announcing the site. See First admin. ::: 4. Backend: GET {APP_URL}/api/ returns JSON ExchangePro API with status: ok. 5. Laravel health: GET {APP_URL}/up.

Production quick start

See Deployment for Nginx samples, SSL, and process managers.

Common mistakes

MistakeSymptom
API_URL missing or wrongFrontend cannot load settings; network errors to API
CORS origin not listedBrowser blocks API; login fails
APP_URL ≠ actual backend URLOAuth redirect mismatch; broken password reset links
Forgot php artisan migrate500 errors, missing tables
HTTP in productionSanctum cookies may not persist (use HTTPS)
Rate sync on, no cronAutomatic rates never update
QUEUE_CONNECTION=database without workerJobs pile up in jobs table

Folder names

Your ZIP may use backend/ and frontend/ or custom names. Paths in this documentation use:

  • backend/ - Laravel project root (contains artisan)
  • frontend/ - Nuxt project root (contains nuxt.config.ts)

Need help? support@xorinlab.com · Website: xorinlab.com