{ "ConnectionStrings": { "DefaultConnection": "Host=localhost;Port=5434;Database=meezi;Username=meezi;Password=meezi_local_pass", "Redis": "localhost:6381" }, "Jwt": { "Key": "meezi-dev-secret-key-min-32-chars!!", "Issuer": "meezi", "Audience": "meezi", "AccessTokenExpiryDays": 7, "RefreshTokenExpiryDays": 30 }, "App": { "PublicBaseUrl": "https://localhost:7208", "QrPublicBaseUrl": "https://meezi.ir" }, "Auth": { "MaxOtpAttemptsPerHour": 5 }, "Security": { "Enabled": true, "RequireCaptchaOnPublicWrites": false, "Turnstile": { "SiteKey": "", "SecretKey": "" }, "RateLimits": { "AuthOtpPerIpPerHour": 15, "PublicReadsPerIpPerMinute": 120, "PublicWritesPerIpPerMinute": 30 }, "GuestOrders": { "PerIpPerCafePerHour": 25, "PerCafePerHour": 200, "PerIpGlobalPerHour": 60 } }, "Kavenegar": { "ApiKey": "", "SenderNumber": "90005671", "OtpTemplate": "verify" }, "ZarinPal": { "MerchantId": "", "Sandbox": true }, "Billing": { "DashboardBaseUrl": "http://localhost:3101" }, "Snappfood": { "WebhookSecret": "meezi-dev-snappfood-secret", "ApiKey": "", "ApiBaseUrl": "" }, "DeliveryPlatforms": { "DefaultSnappfoodCommissionPercent": 18, "DefaultTap30CommissionPercent": 15, "DefaultDigikalaCommissionPercent": 12, "Snappfood": { "WebhookSecret": "meezi-dev-snappfood-secret", "ApiKey": "", "ApiBaseUrl": "" }, "Tap30": { "WebhookSecret": "meezi-dev-tap30-secret", "ApiKey": "", "ApiBaseUrl": "" }, "Digikala": { "WebhookSecret": "", "Enabled": false } }, "Taraz": { "Username": "" }, "OpenAI": { "ApiKey": "", "Model": "gpt-4o-mini" }, "Cors": { "Origins": [ "http://localhost:3000", "http://localhost:3100", "http://localhost:3101" ] }, "Serilog": { "MinimumLevel": { "Default": "Information", "Override": { "Microsoft": "Warning", "Microsoft.EntityFrameworkCore": "Warning", "Hangfire": "Information" } } }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "Ai3d": { "ApiKey": "", "BaseUrl": "https://api.meshy.ai", "ImageTo3dPath": "/openapi/v1/image-to-3d", "PollIntervalSeconds": 4, "PollTimeoutSeconds": 300, "AllowDevStub": false } }