WhatsMine Documentation
Home
  • What is WhatsMine?
  • Feature Tour
  • Requirements
  • Installation
  • Configuration (.env reference)
  • Going Live Checklist
Admin Guide
User Guide
Integrations
  • Architecture
  • REST API v1
  • Production Deployment
  • Frequently Asked Questions
  • Troubleshooting
  • Changelog
Home
  • What is WhatsMine?
  • Feature Tour
  • Requirements
  • Installation
  • Configuration (.env reference)
  • Going Live Checklist
Admin Guide
User Guide
Integrations
  • Architecture
  • REST API v1
  • Production Deployment
  • Frequently Asked Questions
  • Troubleshooting
  • Changelog
  • Getting Started

    • Requirements
    • Installation
    • Configuration (.env reference)
    • Going Live Checklist
    • Production Deployment
    • Demo Mode
    • Updating

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

VariableDefaultPurpose
APP_NAMEWhatsMineThe application/brand name.
APP_ENVlocallocal, staging or production.
APP_KEY(generated)Encryption key — set automatically by the installer.
APP_DEBUGtrueSet to false in production.
APP_URL—Your full public URL, e.g. https://your-domain.com. Used for webhook callbacks and links.
APP_LOCALEenDefault language.
APP_FALLBACK_LOCALEenLanguage used when a translation is missing.
APP_DEMO_MODEfalseRead-only public showcase mode. See Demo Mode.
BCRYPT_ROUNDS12Password hashing cost.

Database

VariableDefaultPurpose
DB_CONNECTIONmysqlmysql (recommended) or sqlite.
DB_HOST127.0.0.1Database host.
DB_PORT3306Database port.
DB_DATABASE—Database name.
DB_USERNAME—Database user.
DB_PASSWORD—Database password.

Cache, queue, sessions & storage

VariableDefaultRecommended (production)
CACHE_STOREdatabaseredis
QUEUE_CONNECTIONsyncdatabase or redis — must not be sync in production
SESSION_DRIVERdatabasedatabase or redis
SESSION_LIFETIME120minutes
BROADCAST_CONNECTIONlogpusher or reverb for real-time
FILESYSTEM_DISKlocals3 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.

Mail

VariableDefaultPurpose
MAIL_MAILERlogsmtp, ses, postmark, mailgun, resend, etc. log only writes to a file — change it for production.
MAIL_HOST127.0.0.1SMTP host.
MAIL_PORT2525SMTP port.
MAIL_USERNAME / MAIL_PASSWORD—SMTP credentials.
MAIL_FROM_ADDRESShello@example.comDefault 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):

VariablePurpose
PUSHER_APP_ID / PUSHER_APP_KEY / PUSHER_APP_SECRETPusher credentials.
PUSHER_APP_CLUSTERe.g. mt1, eu, ap1.
VITE_PUSHER_APP_KEY / VITE_PUSHER_APP_CLUSTERFrontend 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):

VariablePurpose
BILLING_STRIPE_ENABLEDTurn Stripe on/off.
STRIPE_SECRET / STRIPE_WEBHOOK_SECRETStripe keys.
BILLING_PAYPAL_ENABLEDTurn PayPal on/off.
PAYPAL_CLIENT_ID / PAYPAL_CLIENT_SECRET / PAYPAL_WEBHOOK_IDPayPal keys.
PAYPAL_SANDBOXtrue for sandbox, false for live.
BILLING_PADDLE_ENABLEDTurn Paddle on/off.
PADDLE_API_KEY / PADDLE_WEBHOOK_SECRETPaddle keys.
PADDLE_ENVIRONMENTsandbox or production.

See Payments Integration for the full setup.

AI

VariableDefaultPurpose
AI_PROVIDERopenaiDefault LLM provider.
OPENAI_API_KEY—OpenAI key (or set in admin).
OPENAI_MODELgpt-4o-miniDefault chat model.
QDRANT_URL—Optional Qdrant vector DB. If empty, an in-database fallback is used.

Push notifications

VariablePurpose
VAPID_PUBLIC_KEY / VAPID_PRIVATE_KEYWeb Push keys — generate with php artisan webpush:vapid.
ONESIGNAL_APP_ID / ONESIGNAL_REST_API_KEYOptional OneSignal push.

Cloud storage (Amazon S3 and compatible)

Set FILESYSTEM_DISK=s3 and:

VariablePurpose
AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEYCredentials.
AWS_DEFAULT_REGIONe.g. us-east-1.
AWS_BUCKETBucket name.
AWS_USE_PATH_STYLE_ENDPOINTtrue for S3-compatible services (Spaces/Wasabi).

Error tracking (optional)

VariablePurpose
SENTRY_LARAVEL_DSNEnable Sentry error tracking.
SENTRY_TRACES_SAMPLE_RATEPerformance sampling rate (0–1).

➡️ Once configured, run the Going Live Checklist.

Last Updated: 6/19/26, 4:34 PM
Prev
Installation
Next
Going Live Checklist