Skip to content

Configuration

EasyOTC uses environment variables for configuration. Copy the .env.example file to .env and configure the following variables.

Where this lives

  • API config: easy-otc-api/.env (template at easy-otc-api/.env.example)
  • Frontend config: ../easty-otc/.env (template at ../easty-otc/.env.example)
  • Roles referenced below are defined in app/Enums/RoleEnum.php.

Where to access

EnvironmentAPI / AdminStorefrontHorizon
Localhttp://localhost:8000 (admin at /admin)http://localhost:3000http://localhost:8000/horizon
Staginghttps://stage-api.easyotc.com (admin at /admin)https://stage.easyotc.comhttps://stage-api.easyotc.com/horizon

See /access for credentials and the full URL list.

Environment Variables

Application

env
APP_NAME="EasyOTC"
APP_ENV=local
APP_KEY=base64:your-app-key-here
APP_DEBUG=true
APP_URL=http://localhost:8000
APP_TIMEZONE=UTC
APP_LOCALE=en

Database (PostgreSQL)

env
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=otc_platform
DB_USERNAME=postgres
DB_PASSWORD=your_password

Cache & Session

env
CACHE_DRIVER=redis
SESSION_DRIVER=redis
SESSION_LIFETIME=120
QUEUE_CONNECTION=redis

Redis

env
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
REDIS_DB=0

Mail

env
MAIL_MAILER=smtp
MAIL_HOST=mailpit
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"

File Storage

env
FILESYSTEM_DISK=local
AWS_ACCESS_KEY_ID=your-aws-key
AWS_SECRET_ACCESS_KEY=your-aws-secret
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=your-bucket-name
AWS_USE_PATH_STYLE_ENDPOINT=false

Search Engine (MeiliSearch)

env
MEILISEARCH_HOST=http://127.0.0.1:7700
MEILISEARCH_KEY=your-meilisearch-key

External Services

env
# Payment Gateway (Stripe)
STRIPE_KEY=your-stripe-publishable-key
STRIPE_SECRET=your-stripe-secret-key
STRIPE_WEBHOOK_SECRET=your-stripe-webhook-secret

# SMS Service (Twilio)
TWILIO_SID=your-twilio-sid
TWILIO_TOKEN=your-twilio-token
TWILIO_FROM=your-twilio-phone-number

# Email Service (SendGrid)
SENDGRID_API_KEY=your-sendgrid-api-key

Security

env
SANCTUM_STATEFUL_DOMAINS=localhost:3000
SESSION_DOMAIN=localhost

Development Tools

env
# Telescope (Debugging)
TELESCOPE_ENABLED=true

# Horizon (Queue Monitoring)
HORIZON_DOMAIN=localhost

# Filament Admin Panel
FILAMENT_PATH=admin

Database Configuration

PostgreSQL Setup

  1. Install PostgreSQL on your system
  2. Create a database: createdb otc_platform
  3. Update the .env file with your PostgreSQL credentials
  4. Run migrations: php artisan migrate

Connection Details

  • Host: Usually 127.0.0.1 for local development
  • Port: Default PostgreSQL port is 5432
  • Database: Create a dedicated database for the project
  • Username: Default is postgres (or your custom user)
  • Password: Your PostgreSQL user password

Environment-Specific Configs

Local Development

env
APP_ENV=local
APP_DEBUG=true
DB_HOST=127.0.0.1
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_CONNECTION=sync

Staging

env
APP_ENV=staging
APP_DEBUG=false
DB_HOST=your-staging-db-host
CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis

Production

env
APP_ENV=production
APP_DEBUG=false
DB_HOST=your-production-db-host
CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis

Security Considerations

  • Never commit .env files to version control
  • Use strong, unique passwords for database connections
  • Rotate API keys regularly
  • Use environment-specific configurations
  • Enable SSL/TLS in production
  • Set appropriate file permissions

Validation

After configuration, validate your setup:

bash
# Check configuration
php artisan config:cache
php artisan config:clear

# Test database connection
php artisan tinker
DB::connection()->getPdo();

# Run health checks
php artisan health:check

Troubleshooting

Common Issues

  1. Database Connection: Verify PostgreSQL is running and credentials are correct
  2. Redis Connection: Ensure Redis server is running
  3. File Permissions: Check storage and bootstrap/cache directory permissions
  4. App Key: Generate with php artisan key:generate

Debug Commands

bash
# Check environment
php artisan env

# Clear all caches
php artisan optimize:clear

# Check configuration
php artisan config:show