From d1d5263486f96db578aad918a59007045c3c077f Mon Sep 17 00:00:00 2001 From: Mohamed Bassem Date: Sun, 13 Jul 2025 09:28:24 +0000 Subject: feat: Add stripe based subscriptions --- packages/shared/config.ts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'packages/shared') diff --git a/packages/shared/config.ts b/packages/shared/config.ts index ed17bb90..634bf564 100644 --- a/packages/shared/config.ts +++ b/packages/shared/config.ts @@ -117,6 +117,17 @@ const allEnv = z.object({ // Rate limiting configuration RATE_LIMITING_ENABLED: stringBool("false"), + // Stripe configuration + STRIPE_SECRET_KEY: z.string().optional(), + STRIPE_PUBLISHABLE_KEY: z.string().optional(), + STRIPE_WEBHOOK_SECRET: z.string().optional(), + STRIPE_PRICE_ID: z.string().optional(), + + FREE_QUOTA_BOOKMARK_LIMIT: z.coerce.number().optional(), + FREE_QUOTA_ASSET_SIZE_BYTES: z.coerce.number().optional(), + PAID_QUOTA_BOOKMARK_LIMIT: z.coerce.number().optional(), + PAID_QUOTA_ASSET_SIZE_BYTES: z.coerce.number().optional(), + // Proxy configuration HTTP_PROXY: z.string().optional(), HTTPS_PROXY: z.string().optional(), @@ -267,6 +278,23 @@ const serverConfigSchema = allEnv rateLimiting: { enabled: val.RATE_LIMITING_ENABLED, }, + stripe: { + secretKey: val.STRIPE_SECRET_KEY, + publishableKey: val.STRIPE_PUBLISHABLE_KEY, + webhookSecret: val.STRIPE_WEBHOOK_SECRET, + priceId: val.STRIPE_PRICE_ID, + isConfigured: !!val.STRIPE_SECRET_KEY && !!val.STRIPE_PUBLISHABLE_KEY, + }, + quotas: { + free: { + bookmarkLimit: val.FREE_QUOTA_BOOKMARK_LIMIT, + assetSizeBytes: val.FREE_QUOTA_ASSET_SIZE_BYTES, + }, + paid: { + bookmarkLimit: val.PAID_QUOTA_BOOKMARK_LIMIT, + assetSizeBytes: val.PAID_QUOTA_ASSET_SIZE_BYTES, + }, + }, }; }) .refine( -- cgit v1.2.3-70-g09d2