APP_NAME=SkinbaseNova APP_ENV=local APP_KEY=base64:TAMmcAnL05vnhSV7wBoDoSc/Pv42LNQtX6B6lGc3HBk= APP_DEBUG=true APP_URL=http://skinbase26.test DEBUGBAR_ENABLED=true APP_LOCALE=en APP_FALLBACK_LOCALE=en APP_FAKER_LOCALE=en_US APP_MAINTENANCE_DRIVER=file # APP_MAINTENANCE_STORE=database # PHP_CLI_SERVER_WORKERS=4 BCRYPT_ROUNDS=12 LOG_CHANNEL=stack LOG_STACK=single LOG_DEPRECATIONS_CHANNEL=null LOG_LEVEL=debug DB_CONNECTION=mysql #DB_HOST=10.255.255.254 DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=projekti_2026_skinbase DB_USERNAME=projekti DB_PASSWORD=2Xf5TM3P1IeNTfhs LEGACY_DB_HOST=127.0.0.1 LEGACY_DB_DATABASE=projekti_old_skinbase SESSION_DRIVER=database SESSION_LIFETIME=3600 SESSION_ENCRYPT=false SESSION_PATH=/ SESSION_DOMAIN=null BROADCAST_CONNECTION=reverb FILESYSTEM_DISK=local QUEUE_CONNECTION=redis CACHE_STORE=database # CACHE_PREFIX= MEMCACHED_HOST=127.0.0.1 REDIS_CLIENT=predis REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 MAIL_MAILER=smtp MAIL_HOST=smtp-pulse.com MAIL_PORT=587 MAIL_USERNAME=info@skinbase.org MAIL_PASSWORD=ML2BBL958fdCMMc MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS='info@skinbase.org' MAIL_FROM_NAME="Skinbase" AWS_ACCESS_KEY_ID=9d9292110fb4f68b2e4bc1fa55d6b2a3 AWS_SECRET_ACCESS_KEY=0a1d8d8a38eb9a15ff23eac0c5e993c1 AWS_DEFAULT_REGION=eu2 AWS_BUCKET=skinbase AWS_USE_PATH_STYLE_ENDPOINT=true AWS_ENDPOINT=https://eu2.contabostorage.com VISION_VECTOR_GATEWAY_ENABLED=true VISION_VECTOR_GATEWAY_URL=https://vision.klevze.net VISION_VECTOR_GATEWAY_API_KEY=jQZ96c2B2QRjsFZiPZXMYCid6lVdsyxF VISION_VECTOR_GATEWAY_COLLECTION=images VISION_VECTOR_GATEWAY_TIMEOUT=20 VISION_VECTOR_GATEWAY_CONNECT_TIMEOUT=5 VISION_VECTOR_GATEWAY_RETRIES=1 VISION_VECTOR_GATEWAY_RETRY_DELAY_MS=250 VITE_APP_NAME="${APP_NAME}" SKINBASE_STORAGE_ROOT=D:/Sites/Skinbase26/public/files/thumb ARTWORKS_LOCAL_ORIGINALS_ROOT=D:/Sites/Skinbase26/public/files/originals SCOUT_DRIVER=meilisearch MEILISEARCH_HOST=https://meili.klevze.si MEILISEARCH_KEY=0d0df27b-dd25-4855-b6a6-3786755475c6 #MEILISEARCH_KEY=a474f24de92941aac24441b4d7ee71ce4feb8e7a3157d4f6e6a42877cb2a563c MEILI_PREFIX=skinbase_prod_ # Discovery rollout profile (Phase 8 lock) DISCOVERY_ALGO_VERSION=clip-cosine-v1 DISCOVERY_V2_ENABLED=true DISCOVERY_V2_ALGO_VERSION=clip-cosine-v2-adaptive DISCOVERY_V2_CACHE_VERSION=cache-v2 DISCOVERY_V2_CACHE_TTL_MINUTES=15 DISCOVERY_V2_ROLLOUT_PERCENTAGE=10 DISCOVERY_RANKING_WEIGHTS_VERSION_CLIP_COSINE_V2=rank-w-v2-prod-1 DISCOVERY_RANKING_W1_CLIP_COSINE_V2=0.52 DISCOVERY_RANKING_W2_CLIP_COSINE_V2=0.23 DISCOVERY_RANKING_W3_CLIP_COSINE_V2=0.15 DISCOVERY_RANKING_W4_CLIP_COSINE_V2=0.10 DISCOVERY_ROLLOUT_ENABLED=true DISCOVERY_ROLLOUT_BASELINE_ALGO_VERSION=clip-cosine-v1 DISCOVERY_ROLLOUT_CANDIDATE_ALGO_VERSION=clip-cosine-v2 DISCOVERY_ROLLOUT_ACTIVE_GATE=g10 DISCOVERY_ROLLOUT_GATE_10_PERCENT=10 DISCOVERY_ROLLOUT_GATE_50_PERCENT=50 DISCOVERY_ROLLOUT_GATE_100_PERCENT=100 DISCOVERY_FORCE_ALGO_VERSION= DISCOVERY_EVAL_SAVE_RATE_INFORMATIONAL=true # Emergency rollback preset (uncomment to force baseline immediately) # DISCOVERY_FORCE_ALGO_VERSION=clip-cosine-v1 # DISCOVERY_ROLLOUT_ACTIVE_GATE=g10 # DISCOVERY_ROLLOUT_ENABLED=true UPLOAD_SCAN_ENABLED=false UPLOAD_SCAN_COMMAND=clamscan IMAGE_DRIVER=gd SKINBASE_UPLOADS_V2=true # Vision / AI auto-tagging (local defaults) VISION_ENABLED=true VISION_QUEUE=default VISION_IMAGE_VARIANT=lg VISION_API_KEY=${VISION_VECTOR_GATEWAY_API_KEY} CLIP_BASE_URL=https://vision.klevze.net CLIP_ANALYZE_ENDPOINT=/analyze/clip YOLO_BASE_URL=https://vision.klevze.net YOLO_ANALYZE_ENDPOINT=/analyze/yolo VISION_GATEWAY_URL=https://vision.klevze.net VISION_GATEWAY_API_KEY=${VISION_VECTOR_GATEWAY_API_KEY} VISION_GATEWAY_TIMEOUT=60 VISION_GATEWAY_CONNECT_TIMEOUT=5 SCOUT_QUEUE_CONNECTION=database SCOUT_QUEUE_NAME=default # ─── Early-Stage Growth System ─────────────────────────────────────────────── # Set NOVA_EARLY_GROWTH_ENABLED=false to instantly revert to normal behaviour. # NOVA_EARLY_GROWTH_MODE: off | light | aggressive NOVA_EARLY_GROWTH_ENABLED=true NOVA_EARLY_GROWTH_MODE=aggressive # Module toggles (only active when NOVA_EARLY_GROWTH_ENABLED=true) NOVA_EGS_ADAPTIVE_WINDOW=true NOVA_EGS_GRID_FILLER=true NOVA_EGS_SPOTLIGHT=true NOVA_EGS_ACTIVITY_LAYER=false # AdaptiveTimeWindow thresholds NOVA_EGS_UPLOADS_PER_DAY_NARROW=10 NOVA_EGS_UPLOADS_PER_DAY_WIDE=3 NOVA_EGS_WINDOW_NARROW_DAYS=7 NOVA_EGS_WINDOW_MEDIUM_DAYS=30 NOVA_EGS_WINDOW_WIDE_DAYS=90 # GridFiller minimum items per page NOVA_EGS_GRID_MIN_RESULTS=12 # Auto-disable when site reaches organic scale NOVA_EGS_AUTO_DISABLE=false NOVA_EGS_AUTO_DISABLE_UPLOADS=50 NOVA_EGS_AUTO_DISABLE_USERS=500 # Cache TTLs (seconds) NOVA_EGS_SPOTLIGHT_TTL=3600 NOVA_EGS_BLEND_TTL=300 NOVA_EGS_WINDOW_TTL=600 NOVA_EGS_ACTIVITY_TTL=1800 GOOGLE_CLIENT_ID="252720311278-fgjgrv3bue9upgqfp91ihbpunoqlpjvf.apps.googleusercontent.com" GOOGLE_CLIENT_SECRET="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" GOOGLE_REDIRECT_URI=https://skinbase26.test/auth/google/callback # Discord — https://discord.com/developers/applications DISCORD_CLIENT_ID=1478852108869570731 DISCORD_CLIENT_SECRET=k9OgyZrwNqT_UwZgwvHTRdEw8DXStKLN DISCORD_REDIRECT_URI=https://skinbase26.test/auth/discord/callback CP_ENABLE_CORS=false BROADCAST_CONNECTION=reverb REVERB_APP_ID=376489 REVERB_APP_KEY=jm0pq3ikcu3yequsbioc REVERB_APP_SECRET=68sq4tc5lqhxuavxgqlt # internal Reverb server bind REVERB_SERVER_HOST=127.0.0.1 REVERB_SERVER_PORT=8080 # public host behind Cloudflare / Apache REVERB_HOST=ws.skinbase.org REVERB_PORT=443 REVERB_SCHEME=https VITE_REVERB_APP_KEY="${REVERB_APP_KEY}" VITE_REVERB_HOST="${REVERB_HOST}" VITE_REVERB_PORT="${REVERB_PORT}" VITE_REVERB_SCHEME="${REVERB_SCHEME}" MESSAGING_REALTIME=true CLOUDFLARE_ZONE_ID=2fead03fca715d3f44f567c671dc554d CLOUDFLARE_API_TOKEN=cfut_Bd7THUxtJTHvOb66xDXhzp4uEm8IoaHZAkkOBnbVbcda524d NOVA_CARDS_PUBLIC_DISK=s3 NOVA_CARDS_PLAYWRIGHT_RENDER=true AWS_URL=https://cdn.skinbase.org SEO_META_KEYWORDS=false #SENTRY_LARAVEL_DSN=https://f3774714982b12b53cfc3e70e1883595@o106088.ingest.us.sentry.io/4511307411816448 #SENTRY_SEND_DEFAULT_PII=true #SENTRY_TRACES_SAMPLE_RATE=1.0 SKINBASE_ACADEMY_ENABLED=true SKINBASE_ACADEMY_PAYMENTS_ENABLED=true SKINBASE_ACADEMY_CHALLENGES_ENABLED=true SKINBASE_ACADEMY_BADGES_ENABLED=true # Stripe / Cashier STRIPE_KEY=pk_test_51TYk1SBlXOyRoJYFUxa4PsycgqcfajPUMKCAFwXle5edjB2dIg7CvwO3upI6P83ya5blD4CvhSiStY0kP8jyJbAp00zn9cPlii STRIPE_SECRET=sk_test_51TYk1SBlXOyRoJYFn0PvoXYvRa5KkGh5Q9PkMD3SgTKiBEibjnZsnZmKH098y38tQU8n14Fy1WyLrsuUAkgz1DtZ00MaOIwWBt STRIPE_WEBHOOK_SECRET=whsec_IeFGaq7AK27RWwXXchyaWyPqSJ08cBsW CASHIER_CURRENCY=eur CASHIER_CURRENCY_LOCALE=sl_SI # Academy billing price IDs ACADEMY_CREATOR_MONTHLY_PRICE_ID=price_xxx ACADEMY_PRO_MONTHLY_PRICE_ID=price_1TYmkTBlXOyRoJYFfY8al4j2 ACADEMY_BILLING_ENABLED=true ACADEMY_STRIPE_SUBSCRIPTION_NAME=academy # Registration anti-spam REGISTRATION_IP_PER_MINUTE_LIMIT=3 REGISTRATION_IP_PER_DAY_LIMIT=20 REGISTRATION_EMAIL_PER_MINUTE_LIMIT=6 REGISTRATION_EMAIL_COOLDOWN_MINUTES=30 REGISTRATION_VERIFY_TOKEN_TTL_HOURS=24 REGISTRATION_ENABLE_TURNSTILE=true REGISTRATION_DISPOSABLE_DOMAINS_ENABLED=true REGISTRATION_TURNSTILE_SUSPICIOUS_ATTEMPTS=2 REGISTRATION_TURNSTILE_ATTEMPT_WINDOW_MINUTES=30 REGISTRATION_EMAIL_GLOBAL_SEND_PER_MINUTE=30 REGISTRATION_MONTHLY_EMAIL_LIMIT=10000 TURNSTILE_SITE_KEY=0x4AAAAAADI6Ruu4X2IpmLrF TURNSTILE_SECRET_KEY=0x4AAAAAADI6RlHFGscerV8DhIUwykRcbgE TURNSTILE_VERIFY_URL=https://challenges.cloudflare.com/turnstile/v0/siteverify TURNSTILE_TIMEOUT=5 TURNSTILE_ENABLED=true TURNSTILE_FAIL_OPEN=false ENHANCE_DISK=public ENHANCE_SOURCE_PREFIX=enhance/sources ENHANCE_OUTPUT_PREFIX=enhance/outputs ENHANCE_PREVIEW_PREFIX=enhance/previews ENHANCE_ENGINE=stub ENHANCE_MAX_UPLOAD_MB=20 ENHANCE_MAX_INPUT_WIDTH=4096 ENHANCE_MAX_INPUT_HEIGHT=4096 ENHANCE_MAX_OUTPUT_WIDTH=8192 ENHANCE_MAX_OUTPUT_HEIGHT=8192 ENHANCE_DAILY_LIMIT=10 ENHANCE_QUEUE=default ENHANCE_WORKER_URL= ENHANCE_WORKER_TIMEOUT=300 ENHANCE_WORKER_TOKEN=