Skip to content

.env settings

The web installer writes backend/.env for you (app URL, database, admin account). Most other settings are saved from the admin dashboard, so you rarely edit the file by hand. When you do, run php artisan config:cache afterwards; with a cached config, changes to .env are ignored until you do.

The full list, with comments, is in backend/.env.example.

SettingWhat it does
APP_NAMEYour marketplace’s name in emails and page titles.
APP_ENVproduction on a live server, local on your own computer.
APP_KEYThe encryption key. The installer generates it; never change it on a live site (saved secrets and sessions would stop working).
APP_DEBUGAlways false on a live server: debug pages show your settings and queries to visitors.
APP_URLYour site’s address with https://, for example https://yourdomain.com. Links in emails and the apps’ image URLs use it.
APP_TIMEZONELeave it at UTC. Each market has its own time zone (Admin → Markets → Market List).
APP_LOCALEThe default language when a visitor’s language isn’t available.
DEMO_MODELeave it false. It is only for a public demo site: it blocks settings, accounts, uploads and deleting.
TRUSTED_PROXIESBehind Cloudflare or a load balancer, set it to the proxy’s IP ranges (or *), so visitors get their own IP for rate limits and sign-in lockouts.
SESSION_SECURE_COOKIEtrue on an HTTPS site.

DB_CONNECTION=mysql with DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME and DB_PASSWORD. The installer fills these in from its Database screen.

SettingWhat it does
QUEUE_CONNECTIONdatabase (works everywhere, the default) or redis if your server has Redis.
BROADCAST_QUEUEThe queue realtime updates use (realtime). Run the worker with --queue=realtime,default.
BROADCAST_SYNCtrue sends realtime updates without the queue worker, for shared hosting (Settings → Realtime → Send without the queue worker).
CACHE_STOREdatabase by default, redis if available.

The scheduler has no setting: it is one cron job. The worker is a process that keeps running. Both are described in Server setup.

The service account is normally pasted in Admin → Settings → Integrations → Firebase Admin SDK (Firebase). The .env settings are a fallback for servers where you’d rather keep the file on disk:

SettingWhat it does
FIREBASE_CREDENTIALSFull path to the service account JSON file, outside public/.
FIREBASE_PROJECTLeave it at app.
FIREBASE_WEB_API_KEY, FIREBASE_WEB_AUTH_DOMAIN, FIREBASE_WEB_PROJECT_ID, FIREBASE_WEB_APP_IDThe store web panel’s sign-in, only used when nothing is saved in Admin → Settings → Integrations → Store panel sign-in.

Saved from Admin → Settings → Realtime, which writes these lines. See Realtime for the full setup.

SettingWhat it does
BROADCAST_CONNECTIONreverb (self-hosted, included), pusher (hosted), or log to turn realtime off.
REVERB_APP_ID, REVERB_APP_KEY, REVERB_APP_SECRETReverb’s keys. Generated when you pick Reverb in the admin and save.
REVERB_HOST, REVERB_PORT, REVERB_SCHEMEThe public address the apps and browsers connect to, for example ws.yourdomain.com, 443, https.
REVERB_SERVER_HOST, REVERB_SERVER_PORTWhere php artisan reverb:start listens on the server, for example 127.0.0.1 and 8080.
PUSHER_APP_ID, PUSHER_APP_KEY, PUSHER_APP_SECRET, PUSHER_APP_CLUSTERYour Pusher Channels app’s keys and cluster.

Saved from Admin → Settings → Email delivery (Email): MAIL_MAILER, MAIL_HOST, MAIL_PORT, MAIL_USERNAME, MAIL_PASSWORD, MAIL_SCHEME, MAIL_FROM_ADDRESS, MAIL_FROM_NAME.

Gateway keys are not in .env. Each gateway is set up in Admin → Settings → Payment gateways, where its card shows the webhook URL to add in the gateway’s dashboard, in the form https://yourdomain.com/api/payments/webhook/<gateway> (for example …/webhook/stripe). The webhook secret the gateway gives you is pasted back into the same card. Step by step, per gateway: Payments.

GEMINI_API_KEY or OPENAI_API_KEY, only if you’d rather not save the key in Admin → Settings → AI. A key saved in the admin wins. See AI features.

MARKETING_CUSTOMER_IOS_URL, MARKETING_CUSTOMER_ANDROID_URL and the same for SELLER and RIDER: your App Store and Google Play links on the public website. Empty hides the badge (Branding).

SettingWhat it does
LOG_STACK, LOG_DAILY_DAYSOne log file per day in storage/logs/, kept for this many days.
LOG_LEVELerror on a busy live site keeps logs small.
SANCTUM_EXPIRATIONHow long an app sign-in lasts, in minutes (60 days by default). The apps sign in again by themselves.
RATE_LIMIT_SCALEMultiplies every API rate limit. Keep it at 1.