feat: expand backend admin marketplace and scaling
فشلت بعض الفحوصات
/ deploy (push) Failing after 1m22s

هذا الالتزام موجود في:
2026-05-14 16:17:12 +03:00
الأصل 0e76a4a9fc
التزام 5bd5e19a89
158 ملفات معدلة مع 19563 إضافات و3315 حذوفات

عرض الملف

@@ -47,8 +47,61 @@ export default () => ({
fromName: process.env.EMAIL_FROM_NAME ?? 'Oudelaa',
fromEmail: process.env.EMAIL_FROM_EMAIL ?? process.env.EMAIL_SMTP_USER ?? '',
},
aiMusic: {
enabled: (process.env.AI_MUSIC_ENABLED ?? 'false').toLowerCase() === 'true',
apiKey: process.env.AI_MUSIC_API_KEY ?? '',
projectId: process.env.AI_MUSIC_PROJECT_ID ?? '',
location: process.env.AI_MUSIC_LOCATION ?? 'us-central1',
model: process.env.AI_MUSIC_MODEL ?? 'lyria-002',
},
security: {
bcryptSaltRounds: Number(process.env.BCRYPT_SALT_ROUNDS ?? 12),
refreshTokenHashSecret:
process.env.REFRESH_TOKEN_HASH_SECRET ?? process.env.JWT_REFRESH_SECRET ?? '',
},
redis: {
enabled: (process.env.REDIS_ENABLED ?? 'false').toLowerCase() === 'true',
url: process.env.REDIS_URL ?? '',
host: process.env.REDIS_HOST ?? '127.0.0.1',
port: Number(process.env.REDIS_PORT ?? 6379),
username: process.env.REDIS_USERNAME ?? '',
password: process.env.REDIS_PASSWORD ?? '',
db: Number(process.env.REDIS_DB ?? 0),
keyPrefix: process.env.REDIS_KEY_PREFIX ?? 'oudelaa',
socketAdapterEnabled:
(process.env.REDIS_SOCKET_ADAPTER_ENABLED ?? 'false').toLowerCase() === 'true',
},
queue: {
enabled: (process.env.QUEUE_ENABLED ?? 'false').toLowerCase() === 'true',
name: process.env.QUEUE_NAME ?? 'app-jobs',
defaultJobAttempts: Number(process.env.QUEUE_DEFAULT_ATTEMPTS ?? 3),
defaultJobBackoffMs: Number(process.env.QUEUE_DEFAULT_BACKOFF_MS ?? 1000),
removeOnComplete:
(process.env.QUEUE_REMOVE_ON_COMPLETE ?? 'true').toLowerCase() === 'true',
workerConcurrency: Number(process.env.QUEUE_WORKER_CONCURRENCY ?? 5),
},
storage: {
provider: process.env.STORAGE_PROVIDER ?? 'local',
basePath: process.env.STORAGE_BASE_PATH ?? 'uploads',
publicBaseUrl: process.env.STORAGE_PUBLIC_BASE_URL ?? '',
s3: {
bucket: process.env.S3_BUCKET ?? '',
region: process.env.S3_REGION ?? 'auto',
endpoint: process.env.S3_ENDPOINT ?? '',
accessKeyId: process.env.S3_ACCESS_KEY_ID ?? '',
secretAccessKey: process.env.S3_SECRET_ACCESS_KEY ?? '',
forcePathStyle:
(process.env.S3_FORCE_PATH_STYLE ?? 'false').toLowerCase() === 'true',
},
},
logging: {
level: process.env.LOG_LEVEL ?? 'log',
requestEnabled: (process.env.REQUEST_LOGGING_ENABLED ?? 'true').toLowerCase() === 'true',
},
feedCache: {
enabled: (process.env.FEED_CACHE_ENABLED ?? 'true').toLowerCase() === 'true',
userFeedTtlSeconds: Number(process.env.FEED_CACHE_USER_TTL_SECONDS ?? 15),
trendingTtlSeconds: Number(process.env.FEED_CACHE_TRENDING_TTL_SECONDS ?? 30),
},
passwordReset: {
codeExpiresMinutes: Number(process.env.PASSWORD_RESET_CODE_EXPIRES_MINUTES ?? 10),