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 ateasy-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
| Environment | API / Admin | Storefront | Horizon |
|---|---|---|---|
| Local | http://localhost:8000 (admin at /admin) | http://localhost:3000 | http://localhost:8000/horizon |
| Staging | https://stage-api.easyotc.com (admin at /admin) | https://stage.easyotc.com | https://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=enDatabase (PostgreSQL)
env
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=otc_platform
DB_USERNAME=postgres
DB_PASSWORD=your_passwordCache & Session
env
CACHE_DRIVER=redis
SESSION_DRIVER=redis
SESSION_LIFETIME=120
QUEUE_CONNECTION=redisRedis
env
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
REDIS_DB=0Mail
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=falseSearch Engine (MeiliSearch)
env
MEILISEARCH_HOST=http://127.0.0.1:7700
MEILISEARCH_KEY=your-meilisearch-keyExternal 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-keySecurity
env
SANCTUM_STATEFUL_DOMAINS=localhost:3000
SESSION_DOMAIN=localhostDevelopment Tools
env
# Telescope (Debugging)
TELESCOPE_ENABLED=true
# Horizon (Queue Monitoring)
HORIZON_DOMAIN=localhost
# Filament Admin Panel
FILAMENT_PATH=adminDatabase Configuration
PostgreSQL Setup
- Install PostgreSQL on your system
- Create a database:
createdb otc_platform - Update the
.envfile with your PostgreSQL credentials - Run migrations:
php artisan migrate
Connection Details
- Host: Usually
127.0.0.1for 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=syncStaging
env
APP_ENV=staging
APP_DEBUG=false
DB_HOST=your-staging-db-host
CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redisProduction
env
APP_ENV=production
APP_DEBUG=false
DB_HOST=your-production-db-host
CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redisSecurity Considerations
- Never commit
.envfiles 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:checkTroubleshooting
Common Issues
- Database Connection: Verify PostgreSQL is running and credentials are correct
- Redis Connection: Ensure Redis server is running
- File Permissions: Check storage and bootstrap/cache directory permissions
- 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