690 files changed
+12045
-33943
No files matched your search
+79
-55
@@ -1,66 +1,90 @@
|
||||
APP_NAME=NextChair
|
||||
APP_ENV=local
|
||||
APP_KEY=
|
||||
APP_DEBUG=true
|
||||
APP_URL=http://localhost:8000
|
||||
APP_DEFAULT_BUSINESS_SLUG=
|
||||
# Database (MySQL 8.0 — migrated from PostgreSQL in Phase 7, see
|
||||
# docs/phase-7-summary.md; the production host only supports MySQL).
|
||||
DATABASE_HOST="localhost"
|
||||
DATABASE_PORT="3306"
|
||||
DATABASE_NAME="nextchair"
|
||||
DATABASE_USER="user"
|
||||
DATABASE_PASSWORD="password"
|
||||
# Optional: cap the connection pool (see src/lib/db/prisma.ts). Lower this
|
||||
# for a hosting provider with a small max-connections limit.
|
||||
DATABASE_CONNECTION_LIMIT="5"
|
||||
|
||||
APP_LOCALE=en
|
||||
APP_FALLBACK_LOCALE=en
|
||||
APP_FAKER_LOCALE=en_US
|
||||
# Auth.js (NextAuth v5). Generate with: npx auth secret
|
||||
AUTH_SECRET="replace-me-with-a-32-byte-random-string"
|
||||
|
||||
APP_MAINTENANCE_DRIVER=file
|
||||
# APP_MAINTENANCE_STORE=database
|
||||
# Google OAuth — https://console.cloud.google.com/apis/credentials
|
||||
AUTH_GOOGLE_ID=""
|
||||
AUTH_GOOGLE_SECRET=""
|
||||
|
||||
# PHP_CLI_SERVER_WORKERS=4
|
||||
# Base URL of the app (used for callback URLs, email links, etc.)
|
||||
NEXT_PUBLIC_APP_URL="http://localhost:3000"
|
||||
|
||||
BCRYPT_ROUNDS=12
|
||||
# Media Manager (Phase 9) — max upload size in bytes. Defaults to
|
||||
# 5,000,000 (5MB) if unset. See src/lib/media/media-storage.ts.
|
||||
MEDIA_MAX_UPLOAD_BYTES="5000000"
|
||||
|
||||
LOG_CHANNEL=stack
|
||||
LOG_STACK=single
|
||||
LOG_DEPRECATIONS_CHANNEL=null
|
||||
LOG_LEVEL=debug
|
||||
# Google Reviews (Phase 9) — from https://console.cloud.google.com/apis/credentials,
|
||||
# needs the Places API enabled. Leave unset to keep review sync disabled
|
||||
# (Home shows clearly-labelled demo reviews instead). See
|
||||
# src/services/reviews/review-sync.service.ts and /owner/settings/reviews.
|
||||
GOOGLE_PLACES_API_KEY=""
|
||||
|
||||
DB_CONNECTION=mysql
|
||||
DB_HOST=127.0.0.1
|
||||
DB_PORT=3306
|
||||
DB_DATABASE=nextchair
|
||||
DB_USERNAME=root
|
||||
DB_PASSWORD=
|
||||
# Email (Phase 7) — see src/services/notifications/providers.
|
||||
# "console" logs would-be emails to the server console instead of sending
|
||||
# (safe default — never send real email from an unconfigured environment).
|
||||
# "brevo" sends for real over Brevo's SMTP relay via nodemailer (see
|
||||
# brevo-email-provider.ts for why SMTP rather than Brevo's REST API).
|
||||
EMAIL_PROVIDER="console"
|
||||
EMAIL_SMTP_HOST="smtp-relay.brevo.com"
|
||||
EMAIL_SMTP_PORT="587"
|
||||
EMAIL_SMTP_USERNAME=""
|
||||
EMAIL_SMTP_PASSWORD=""
|
||||
EMAIL_FROM_ADDRESS=""
|
||||
# EMAIL_FROM_NAME is optional and is only used when no business name can
|
||||
# be resolved. Normal business emails use the installed business name
|
||||
# automatically (see docs/phase-8-email-sender-summary.md) — you do not
|
||||
# need to set or keep this in sync with Business Settings.
|
||||
EMAIL_FROM_NAME=""
|
||||
|
||||
SESSION_DRIVER=database
|
||||
SESSION_LIFETIME=120
|
||||
SESSION_ENCRYPT=false
|
||||
SESSION_PATH=/
|
||||
SESSION_DOMAIN=null
|
||||
# Web Push (Phase 7) — generate with: npx web-push generate-vapid-keys
|
||||
# NEXT_PUBLIC_VAPID_PUBLIC_KEY must be the same value as VAPID_PUBLIC_KEY —
|
||||
# it's duplicated because the browser needs it for pushManager.subscribe.
|
||||
# PUSH_PROVIDER="web-push" to actually send; defaults to "console" (logs only).
|
||||
PUSH_PROVIDER="console"
|
||||
VAPID_PUBLIC_KEY=""
|
||||
NEXT_PUBLIC_VAPID_PUBLIC_KEY=""
|
||||
VAPID_PRIVATE_KEY=""
|
||||
VAPID_SUBJECT="mailto:owner@example.com"
|
||||
|
||||
BROADCAST_CONNECTION=log
|
||||
FILESYSTEM_DISK=local
|
||||
QUEUE_CONNECTION=database
|
||||
# Background notification processing (Phase 7) — shared secret an external
|
||||
# scheduler presents as `Authorization: Bearer <value>` to
|
||||
# /api/cron/process-notifications. Generate with: openssl rand -hex 32
|
||||
CRON_SECRET=""
|
||||
|
||||
CACHE_STORE=database
|
||||
# CACHE_PREFIX=
|
||||
# First-run installation wizard (Phase 8) — required before /install will
|
||||
# create the first business/administrator. Generate with:
|
||||
# openssl rand -hex 32
|
||||
INSTALLATION_TOKEN=""
|
||||
|
||||
MEMCACHED_HOST=127.0.0.1
|
||||
# Super Administrator (Phase 9) — platform-level account with every Owner
|
||||
# permission, provisioned from these env vars rather than the installation
|
||||
# wizard (see scripts/ensure-super-admin.ts, run on every container start).
|
||||
# Has no StaffProfile by design: never appears in Team, the customer-facing
|
||||
# barber picker, or staff totals, and can never receive an appointment. All
|
||||
# four optional — leave SUPER_ADMIN_EMAIL unset to skip provisioning one
|
||||
# entirely. Re-run to rotate the password (re-hashed every run).
|
||||
SUPER_ADMIN_EMAIL=""
|
||||
SUPER_ADMIN_PASSWORD=""
|
||||
SUPER_ADMIN_FIRST_NAME=""
|
||||
SUPER_ADMIN_LAST_NAME=""
|
||||
|
||||
REDIS_CLIENT=phpredis
|
||||
REDIS_HOST=127.0.0.1
|
||||
REDIS_PASSWORD=null
|
||||
REDIS_PORT=6379
|
||||
|
||||
MAIL_MAILER=log
|
||||
MAIL_SCHEME=null
|
||||
MAIL_HOST=127.0.0.1
|
||||
MAIL_PORT=2525
|
||||
MAIL_USERNAME=null
|
||||
MAIL_PASSWORD=null
|
||||
MAIL_FROM_ADDRESS="hello@example.com"
|
||||
MAIL_FROM_NAME="${APP_NAME}"
|
||||
|
||||
AWS_ACCESS_KEY_ID=
|
||||
AWS_SECRET_ACCESS_KEY=
|
||||
AWS_DEFAULT_REGION=us-east-1
|
||||
AWS_BUCKET=
|
||||
AWS_USE_PATH_STYLE_ENDPOINT=false
|
||||
|
||||
VITE_APP_NAME="${APP_NAME}"
|
||||
# Staff Google Calendar sync (Phase 8) — separate OAuth client from
|
||||
# AUTH_GOOGLE_ID/SECRET above (different scopes; see
|
||||
# src/services/calendar/google-calendar.provider.ts). Leave unset to keep
|
||||
# calendar sync disabled — Settings shows a "not configured" state rather
|
||||
# than crashing.
|
||||
GOOGLE_CALENDAR_CLIENT_ID=""
|
||||
GOOGLE_CALENDAR_CLIENT_SECRET=""
|
||||
GOOGLE_CALENDAR_REDIRECT_URI="http://localhost:3000/api/staff/calendar/google/callback"
|
||||
# Encrypts stored refresh tokens at rest. Generate with: openssl rand -hex 32
|
||||
CALENDAR_TOKEN_ENCRYPTION_KEY=""
|
||||
Reference in new issue
Block a user