Configuration (.env reference)
WhatsMine is configured through the .env file in the project root. Many things (branding, integrations, payment gateways, email) can also be configured later from the admin panel — but the core application settings live here.
Admin panel vs. .env
For most third-party services (Meta, AI, SMS, payment gateways, Pusher) you can store credentials in the admin panel instead of .env. The admin panel stores them encrypted in the database and lets you test them with one click. See Integrations. The .env file is mainly for the application core (app URL, database, cache, queue).
After changing .env on a production server, refresh the config cache:
php artisan config:clear # then, in production:
php artisan config:cache
Application
| Variable | Default | Purpose |
|---|---|---|
APP_NAME | WhatsMine | The application/brand name. |
APP_ENV | local | local, staging or production. |
APP_KEY | (generated) | Encryption key — set automatically by the installer. |
APP_DEBUG | true | Set to false in production. |
APP_URL | — | Your full public URL, e.g. https://your-domain.com. Used for webhook callbacks and links. |
APP_LOCALE | en | Default language. |
APP_FALLBACK_LOCALE | en | Language used when a translation is missing. |
APP_DEMO_MODE | false | Read-only public showcase mode. See Demo Mode. |
BCRYPT_ROUNDS | 12 | Password hashing cost. |
Database
| Variable | Default | Purpose |
|---|---|---|
DB_CONNECTION | mysql | mysql (recommended) or sqlite. |
DB_HOST | 127.0.0.1 | Database host. |
DB_PORT | 3306 | Database port. |
DB_DATABASE | — | Database name. |
DB_USERNAME | — | Database user. |
DB_PASSWORD | — | Database password. |
Cache, queue, sessions & storage
| Variable | Default | Recommended (production) |
|---|---|---|
CACHE_STORE | database | redis |
QUEUE_CONNECTION | sync | database or redis — must not be sync in production |
SESSION_DRIVER | database | database or redis |
SESSION_LIFETIME | 120 | minutes |
BROADCAST_CONNECTION | log | pusher or reverb for real-time |
FILESYSTEM_DISK | local | s3 for cloud storage |
Queue connection matters
If QUEUE_CONNECTION=sync, background work runs inside the web request and emails, campaigns and inbound message processing will be slow or silently fail under load. Use database or redis plus a running queue worker in production. See Deployment.
| Variable | Default | Purpose |
|---|---|---|
MAIL_MAILER | log | smtp, ses, postmark, mailgun, resend, etc. log only writes to a file — change it for production. |
MAIL_HOST | 127.0.0.1 | SMTP host. |
MAIL_PORT | 2525 | SMTP port. |
MAIL_USERNAME / MAIL_PASSWORD | — | SMTP credentials. |
MAIL_FROM_ADDRESS | hello@example.com | Default sender address. |
MAIL_FROM_NAME | ${APP_NAME} | Default sender name. |
You can also configure SMTP from Admin → Email System instead — see Email System.
Real-time (Pusher / Reverb)
For live inbox updates, set BROADCAST_CONNECTION=pusher and provide credentials (these can also be set in Admin → Real-time Settings):
| Variable | Purpose |
|---|---|
PUSHER_APP_ID / PUSHER_APP_KEY / PUSHER_APP_SECRET | Pusher credentials. |
PUSHER_APP_CLUSTER | e.g. mt1, eu, ap1. |
VITE_PUSHER_APP_KEY / VITE_PUSHER_APP_CLUSTER | Frontend copies (usually mirror the above). |
To self-host real-time instead, use Laravel Reverb (REVERB_* variables). See Real-time & Push.
Billing gateways
Enable/disable each gateway and set its keys (or configure from Admin → Payment Gateways):
| Variable | Purpose |
|---|---|
BILLING_STRIPE_ENABLED | Turn Stripe on/off. |
STRIPE_SECRET / STRIPE_WEBHOOK_SECRET | Stripe keys. |
BILLING_PAYPAL_ENABLED | Turn PayPal on/off. |
PAYPAL_CLIENT_ID / PAYPAL_CLIENT_SECRET / PAYPAL_WEBHOOK_ID | PayPal keys. |
PAYPAL_SANDBOX | true for sandbox, false for live. |
BILLING_PADDLE_ENABLED | Turn Paddle on/off. |
PADDLE_API_KEY / PADDLE_WEBHOOK_SECRET | Paddle keys. |
PADDLE_ENVIRONMENT | sandbox or production. |
See Payments Integration for the full setup.
AI
| Variable | Default | Purpose |
|---|---|---|
AI_PROVIDER | openai | Default LLM provider. |
OPENAI_API_KEY | — | OpenAI key (or set in admin). |
OPENAI_MODEL | gpt-4o-mini | Default chat model. |
QDRANT_URL | — | Optional Qdrant vector DB. If empty, an in-database fallback is used. |
Push notifications
| Variable | Purpose |
|---|---|
VAPID_PUBLIC_KEY / VAPID_PRIVATE_KEY | Web Push keys — generate with php artisan webpush:vapid. |
ONESIGNAL_APP_ID / ONESIGNAL_REST_API_KEY | Optional OneSignal push. |
Cloud storage (Amazon S3 and compatible)
Set FILESYSTEM_DISK=s3 and:
| Variable | Purpose |
|---|---|
AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY | Credentials. |
AWS_DEFAULT_REGION | e.g. us-east-1. |
AWS_BUCKET | Bucket name. |
AWS_USE_PATH_STYLE_ENDPOINT | true for S3-compatible services (Spaces/Wasabi). |
Error tracking (optional)
| Variable | Purpose |
|---|---|
SENTRY_LARAVEL_DSN | Enable Sentry error tracking. |
SENTRY_TRACES_SAMPLE_RATE | Performance sampling rate (0–1). |
➡️ Once configured, run the Going Live Checklist.