Skip to content

Production Checklist

lpachecob edited this page Mar 24, 2026 · 1 revision

✅ Production Deployment Checklist

A checklist for deploying BOUNDLY applications to production.


🚀 Pre-Deployment

Environment Setup

  • Copy .env.example to .env
  • Set APP_ENV=production
  • Set APP_DEBUG=false
  • Generate APP_KEY with php artisan key:generate
  • Configure database connection (MySQL/PostgreSQL)
  • Configure cache driver (redis, file, memcached)
  • Set LOG_CHANNEL=daily or your preferred log driver

Security

  • Set strong APP_KEY
  • Configure REQUEST_SIGNING_SECRET (if using HMAC)
  • Set BOUNDLY_AUTH_GUARD to your auth provider
  • Enable CORS if needed:
    'cors' => [
        'enabled' => true,
        'allowed_origins' => ['https://yourdomain.com'],
    ],
  • Review IP access control (if needed):
    'ip_access' => [
        'enabled' => true,
        'whitelist' => ['your-office-ip/32'],
    ],

Performance

  • Set BOUNDLY_DISABLE_CACHE=false (production)
  • Run php artisan core:cache to pre-compile metadata
  • Configure response cache if needed:
    'cache' => [
        'response' => [
            'enabled' => true,
            'store' => 'redis',
            'ttl' => 60,
        ],
    ],

📦 Deployment

Option 1: Traditional Server (SSH/cPanel)

# Connect to server
ssh user@your-server.com

# Pull latest code
cd /var/www/boundly
git pull origin main

# Install dependencies
composer install --optimize-autoloader --no-dev

# Run deploy script
bash deploy.sh

# Restart PHP-FPM
sudo systemctl restart php-fpm

Option 2: Laravel Forge

Add these commands to Forge Deploy Script:

php artisan core:migrate --force
php artisan core:cache

Option 3: Envoyer

Create a deployment hook:

php artisan core:migrate --force
php artisan core:cache

Option 4: Custom CI/CD

# GitHub Actions example
- name: Deploy
  run: |
    ssh user@server "cd /var/www/app && bash deploy.sh"

🔧 Post-Deployment

Verify Health

# Check health endpoint
curl https://your-domain.com/api/health

# Expected response:
{
  "success": true,
  "data": {
    "status": "healthy",
    "timestamp": "2026-..."
  }
}

Run Tests (Optional)

composer test

Clear Caches (If needed)

php artisan optimize:clear
php artisan core:cache

📊 Monitoring

BOUNDLY provides hooks for connecting your preferred monitoring tool.

Sentry (Error Tracking)

// .env
MONITORING_API_KEY=your-sentry-dsn
// config/boundly.php
'monitoring' => [
    'enabled' => true,
    'provider' => 'sentry',
    'api_key' => env('MONITORING_API_KEY'),
],

Then install Sentry SDK:

composer require sentry/sentry-laravel

Grafana/Prometheus

Configure your metrics endpoint using BOUNDLY's health checks and logging.

Custom Hook

Create your own monitoring provider by implementing a contract in Infrastructure/LaravelEngine/Providers/.


🔒 Production Environment Variables

Variable Required Description
APP_ENV Set to production
APP_DEBUG Set to false
APP_KEY Generated with key:generate
APP_URL Your production URL
DB_CONNECTION Database driver
DB_HOST Database host
DB_DATABASE Database name
DB_USERNAME Database user
DB_PASSWORD Database password
CACHE_DRIVER redis, file, etc.
LOG_CHANNEL Log driver
BOUNDLY_AUTH_GUARD Auth guard (default: sanctum)
REQUEST_SIGNING_SECRET For HMAC signing
MONITORING_API_KEY For error tracking

🆘 Troubleshooting

Database Connection Failed

  1. Check .env database credentials
  2. Verify database server is accessible
  3. Check firewall rules

500 Error After Deploy

  1. Run php artisan optimize:clear
  2. Check storage/logs/laravel.log
  3. Verify APP_KEY is set

Health Check Failing

# Check individual services
php artisan core:health --detailed

Cache Issues

php artisan cache:clear
php artisan core:cache

📚 Resources


Back to: Home 🪄

Clone this wiki locally