Files
WMS/docs-ha-production.md
T

75 lines
1.7 KiB
Markdown

# WMS production baseline
This project is organised as a modular Laravel 13 WMS suite using nwidart-style modules.
## Modules
- `Modules/Platform` - companies, MPBA system administration, licence keys, Stripe payment records and tenant/licence middleware.
- `Modules/Warehouse` - tenant-owned warehouses and warehouse-specific validation rules.
- `Modules/InternalApi` - HMAC-authenticated API for secure communication between separated core/admin applications.
## PostgreSQL
Use PostgreSQL 18 in production with HAProxy in front of Patroni-managed primary/replica nodes.
```env
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=6432
DB_DATABASE=wms_platform
DB_USERNAME=wms_app
DB_PASSWORD=change_me
```
## Redis
Use Redis Sentinel for cache, queues and sessions.
```env
CACHE_STORE=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis
REDIS_CLIENT=phpredis
```
## MPBA system admin
Seeded account:
```text
Email: mark.gregory@mpba.co.uk
Password: 987400Kmh
Company: MPBA Limited
```
MPBA Limited is marked as `is_system_company = true`; MPBA platform admins bypass licence checks.
## Internal API signing
Internal callers must send:
```text
X-WMS-Timestamp: ISO8601 timestamp
X-WMS-Signature: hash_hmac('sha256', timestamp + '.' + body, WMS_INTERNAL_API_KEY)
```
Requests older than 5 minutes are rejected.
## Deployment sequence
```bash
composer install --no-dev --prefer-dist --optimize-autoloader
npm ci
npm run build
php artisan migrate --force
php artisan db:seed --force
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan event:cache
php artisan queue:restart
php artisan octane:reload
```
Use rolling deployments behind HAProxy for zero downtime.