75 lines
1.7 KiB
Markdown
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.
|