# =========================================================================== # FASHIONISTAR — Production Environment Variables (Oracle Cloud) # =========================================================================== # Copy this to .env.production and fill in all values. # NEVER commit .env.production to git — it contains secrets. # # On Oracle VM: /home/ubuntu/fashionistar_backend/.env.production # =========================================================================== # ── Core Django ────────────────────────────────────────────────────────────── SECRET_KEY=REPLACE_WITH_64_CHAR_RANDOM_STRING DEBUG=False DJANGO_SETTINGS_MODULE=backend.config.production WORKING_ENVIRONMENT=production # ── Hosts & CSRF ───────────────────────────────────────────────────────────── # Add your Oracle Cloud public IP as fallback during DNS propagation ALLOWED_HOSTS=api.fashionistar.net,fashionistar.net,www.fashionistar.net,YOUR_ORACLE_PUBLIC_IP CSRF_TRUSTED_ORIGINS=https://fashionistar.net,https://www.fashionistar.net,https://api.fashionistar.net,https://app.fashionistar.net # ── Production URLs ─────────────────────────────────────────────────────────── BACKEND_URL=https://api.fashionistar.net FRONTEND_URL=https://www.fashionistar.net # ── Database — PostgreSQL 17 (Docker container on Oracle VM) ───────────────── # This connects to the postgres service in docker-compose.production.yml DATABASE_URL=postgres://fashionistar:REPLACE_WITH_STRONG_PASSWORD@postgres:5432/fashionistar POSTGRES_DB=fashionistar POSTGRES_USER=fashionistar POSTGRES_PASSWORD=REPLACE_WITH_STRONG_PASSWORD # ── Redis — Docker container on Oracle VM ──────────────────────────────────── # Also exposed to Northflank Celery workers via public IP + auth REDIS_URL=redis://:REPLACE_WITH_REDIS_PASSWORD@redis:6379/0 REDIS_PASSWORD=REPLACE_WITH_REDIS_PASSWORD # ── Celery ──────────────────────────────────────────────────────────────────── # Local workers (on Oracle VM) use internal Docker network CELERY_BROKER_URL=redis://:REPLACE_WITH_REDIS_PASSWORD@redis:6379/1 CELERY_RESULT_BACKEND=redis://:REPLACE_WITH_REDIS_PASSWORD@redis:6379/2 # Northflank Celery workers use external public URL: # CELERY_BROKER_URL=redis://:REPLACE_WITH_REDIS_PASSWORD@YOUR_ORACLE_PUBLIC_IP:6379/1 # (Ensure Oracle VCN Security List opens TCP 6379 for Northflank IPs only) # ── Cloudinary (Media Storage) ──────────────────────────────────────────────── CLOUDINARY_CLOUD_NAME=your_cloud_name CLOUDINARY_API_KEY=your_api_key CLOUDINARY_API_SECRET=your_api_secret CLOUDINARY_URL=cloudinary://your_api_key:your_api_secret@your_cloud_name CLOUDINARY_NOTIFICATION_URL=https://api.fashionistar.net/api/v1/upload/webhook/cloudinary/ # ── Payment Gateways ────────────────────────────────────────────────────────── PAYSTACK_SECRET_KEY=sk_live_your_paystack_live_secret_key PAYSTACK_TEST_KEY=sk_test_your_paystack_test_key # ── Twilio (SMS) ────────────────────────────────────────────────────────────── TWILIO_ACCOUNT_SID=your_twilio_account_sid TWILIO_AUTH_TOKEN=your_twilio_auth_token TWILIO_PHONE_NUMBER=+1234567890 # ── Email ───────────────────────────────────────────────────────────────────── DEFAULT_FROM_EMAIL=noreply@fashionistar.net EMAIL_HOST_USER=your-email@fashionistar.net EMAIL_HOST_PASSWORD=your_email_app_password # ── Mailgun ─────────────────────────────────────────────────────────────────── MAILGUN_API_KEY=your_mailgun_api_key MAILGUN_DOMAIN=your_mailgun_domain.mailgun.org # ── Google OAuth2 ───────────────────────────────────────────────────────────── GOOGLE_CLIENT_ID=your-google-client-id.apps.googleusercontent.com GOOGLE_CLIENT_SECRET=your-google-client-secret # ── Sentry Error Tracking ───────────────────────────────────────────────────── SENTRY_DSN=https://your_sentry_dsn@sentry.io/project_id # ── Git SHA (for Sentry release tracking) ───────────────────────────────────── # Set automatically by GitHub Actions, or manually: # GIT_SHA=$(git rev-parse --short HEAD) GIT_SHA=unknown # ── Image Tag (set by CI/CD) ────────────────────────────────────────────────── IMAGE_TAG=latest GITHUB_REPOSITORY=FASHIONISTAR-CLOTHINGS/fashionistar_backend